VastbaseG100

基于openGauss内核开发的企业级关系型数据库。

Menu

准备工作

本文介绍了搭建HAS V3.4 for Vastbase G100高可用集群需要完成的准备工作,包括如下内容:

软硬件环境准备

操作系统

HAS V3.4适配的操作系统:

CPU操作系统
Intel x86openEuler 20.03
Kylin V10 SP1
Kylin V10 SP3
CentOS 7.x
rhel7.4、rhel7.7
UOS v20 1050a
UOS v20 1050e
openeuler 22.03 sp1
鲲鹏920 openEuler 20.03
Kylin V10 SP1
Kylin V10 SP2
Kylin V10 SP3
CentOS 7.x
ctyunos-22.06
UOS v20 1050a
UOS v20 1021e
海光C86openEuler 20.03
Kylin V10 SP2
Kylin V10 SP3

硬件环境

本文以搭建一主两备高可用集群为例,则数据库机器需准备三台物理或虚拟主机,主机IP地址规划示例如下(IP地址以实际为准):

系统类型 类型 主机名 IP地址
生产库集群 主库 Vastbase1 172.16.105.54
从库 Vastbase2 172.16.105.58
从库 Vastbase3 172.16.105.60
VIP - 172.16.105.107

软件环境

  • HAS V3.4 for Vastbase集群搭建的软件环境如下:

    名称 版本 用途
    OS 参见操作系统 操作系统平台
    HAS V3.4 集群管理软件
    Vastbase Vastbase G100 V2.2 Build 17 数据库软件
    Python
  • openEuler:支持Python 3.7.X
  • CentOS:支持Python 3.6.X
  • 麒麟:支持Python 3.7.X
  • Asianux:支持Python 3.6.X
  • 说明:
    python需要通过--enable-shared方式编译,请参考python3环境配置。
    -
  • 安装依赖

    使用root用户在集群的每个节点上安装如下依赖:

    安装以下依赖包:

    libaio-devel、flex、bison、ncurses-devel、glibc-devel、patch、redhat-lsb-core、readline-devel、expect、bzip2、gcc、ibnsl

    不同系统内安装依赖的命令存在不同,注意按需调整:

    • ibnsl 仅在 openEuler+x86 环境中需要安装。
    • 安装环境为 Kylin V10 SP1 系统时,无需安装redhat-lsb-core。

    安装语句如下(以CentOS为例):

    yum install -y libaio-devel flex bison ncurses-devel glibc-devel patch redhat-lsb-core readline-devel  expect bzip2 gcc
    

系统与环境配置

根据此部分内容对数据库主备节点操作系统环境进行配置,以下操作注意需使用root用户执行。

防火墙配置

步骤1 以root用户登录操作系统。

步骤2 检查防火墙状态(以 CentOS Linux release 7 为例)。

sudo firewall-cmd --state
sudo systemctl status firewalld.service

步骤3 关闭防火墙服务。

sudo systemctl stop firewalld.service

步骤4 关闭防火墙自动启动服务。

sudo systemctl disable firewalld.service

步骤5 检查防火墙状态。

sudo firewall-cmd --state
sudo systemctl status firewalld.service

SELINUX配置

步骤1 查看是否开启SELINUX,如果是未开启则是diabled,已开启则是enforcing。

getenforce 

步骤2 临时关闭SELINUX。

setenforce 0 

步骤3 通过修改配置文件永久关闭SELINUX。

1、编辑配置文件。

vi /etc/selinux/config

2、将SELINUX=enforcing修改为SELINUX=disabled

3、重启系统。

reboot

SSH服务端口配置(可选)

SSH互信使得在多个Linux服务器之间做操作时,可以免密登录,而不需要输入任何密码。

通常情况下,HAS集群搭建过程会使用SSH协议的默认端口号(22),如需更改使用的SSH端口,可参考如下方式对集群内所有节点进行操作:

1、配置SSH Server配置文件/etc/ssh/sshd_config

vi /etc/ssh/sshd_config
Port 期望端口

2、修改SSH Client配置文件/etc/ssh/ssh_config

vi /etc/ssh/ssh_config
Port 期望端口

应始终确保两个配置文件的期望端口一致;集群内各节点需要具有相同的SSH服务端口。

3、重启各节点的SSH服务,使修改生效:

systemctl restart sshd

transparent_hugepage配置

1、使用root用户,通过配置如下系统服务实现永久关闭透明大页的目的。

vi /etc/systemd/system/disable-thp.service

[Unit]
Description=Disable Transparent Huge Pages (THP)
[Service]
Type=simple
ExecStart=/bin/sh -c "echo 'never' > /sys/kernel/mm/transparent_hugepage/enabled && echo 'never' > /sys/kernel/mm/transparent_hugepage/defrag"

[Install]
WantedBy=multi-user.target

2、修改完成后,执行如下命令加载系统服务,并设置开机自启动。

systemctl daemon-reload
systemctl start disable-thp
systemctl enable disable-thp

3、查看THP状态,当返回结果均为always madvise [never]时表示成功设置透明大页永久关闭。

cat /sys/kernel/mm/transparent_hugepage/enabled
cat /sys/kernel/mm/transparent_hugepage/defrag

时间同步配置

为了保证Vastbase的正常使用,需要同步各节点的时间,若时间不同步有可能会阻碍数据库后续使用,例如出现日志中时间节点不准确等问题。

检查时间配置

使用如下命令可查看当前时间是否符合规范:

ll /etc/localtime
date
hwclock --show

设置时间

方法一: 将数据库各节点的时区设置为相同时区

1、以root用户登录操作系统。

2、将/usr/share/zoneinfo/目录下的时区文件拷贝为/etc/localtime文件,从而设置时区和时间。

cp /usr/share/zoneinfo/$主时区/$次时区 /etc/localtime

方法二: 手工设定时间

1、以root用户登录操作系统。

2、执行date -s命令设置时区和时间。

以设置当前时间为2020-08-03 14:15:00为例。

date -s "2020-08-03 14:15:00"

3、将系统时间写入硬件时间。

hwclock –w

方法三: 使用时间服务器同步时间

对于高可用集群生产环境,应规范时间配置,使数据库主备节点保持时间同步。

选择主备节点所在局域网中一个合适的节点作为时间服务器(若条件有限,也可使用数据库主节点),使用ntpd或chronyd服务配置时间同步。操作步骤以使用ntpd服务为例。

1、安装ntpd服务。

yum install -y ntpd

CentOS或RedHat等系统环境下,chronyd服务与ntpd服务冲突,因此chronyd、ntpd两种时间同步方式只能二选一。

当使用ntpd服务时,需要禁用chronyd服务。

systemctl disable chronyd && systemctl stop chronyd

2、编辑配置文件。

  • 如果已经存在ntp服务器,假如为192.168.100.100,可以配置所有节点指向该ntp服务器时间。

    编辑高可用集群中每个节点的/etc/ntp.conf文件:

    • 本操作目的是让NTP Server和其自身保持同步。

    • 若在/etc/ntp.conf文件中定义的server都不可用时,将使用local时间作为ntp服务提供给ntp客户端。

    server 192.168.100.100 prefer 
    driftfile /var/lib/ntp/drift 
    broadcastdelay 0.008
    
  • 如果没有外部的时间服务器,可以选择集群中的某个节点作为时间服务器。选择一个节点为ntp服务器(以主节点192.168.100.1为例)在选择的节点上配置/etc/ntp.conf文件:

    server 127.127.1.0 
    fudge 127.127.1.0 stratum 10 
    driftfile /var/lib/ntp/drift 
    broadcastdelay 0.008 
    

    编辑高可用集群中其他节点的/etc/ntp.conf文件:

    server 192.168.100.1 prefer 
    driftfile /var/lib/ntp/drift 
    broadcastdelay 0.008 
    

若在ntp服务启动时修改ntpd.conf配置文件,需要重新启动ntp服务使其生效。

3、完成前一个步骤中的配置后,启动各节点ntpd服务:

systemctl start ntpd 
systemctl enable ntpd 
systemctl status ntpd

4、等待5分钟使时间服务器开始提供服务,5分钟后检查各节点时间是否同步。

date

5、确定时间同步后,在各节点将系统时间写入硬件时间。

hwclock –w

IPC参数设置

CentOS操作系统可跳过此配置。

步骤1 以root用户登录操作系统。

步骤2 进入/etc/systemd/logind.conf文件,查看是否已经设置了RemoveIPC=no,如果没有则执行步骤3,否则跳过。

vi /etc/systemd/logind.conf

步骤3 (可选)在配置文件末尾新增配置项RemoveIPC=no

步骤4 进入/usr/lib/systemd/system/systemd-logind.service文件,查看是否已经设置了RemoveIPC=no,如果没有设置则执行步骤5,否则跳过。

vi /usr/lib/systemd/system/systemd-logind.service

步骤5 (可选)修改或添加配置项RemoveIPC=no

步骤6 重新加载配置参数。

systemctl daemon-reload
systemctl restart systemd-logind

步骤7 检查修改是否生效。

loginctl show-session | grep RemoveIPC
systemctl show systemd-logind | grep RemoveIPC

配置hostname

修改3个节点hostname与XML配置文件的nodeNames保持一致。

步骤1 查看当前hostname。

hostname

步骤2 分别修改3个节点hostname与XML配置文件保持一致。

vi /etc/hostname

步骤3 重启服务器。

reboot

步骤4 修改完成后执行hostname查看当前节点名称。

创建数据库安装用户(可选)

创建用于安装数据库的操作系统用及和用户组,此处以创建vastbase用户为例。

执行预安装脚本时可以在指定数据库安装用户名和用户组后自动创建用户和组,所以本步骤可以选择跳过。

1、以root用户登录操作系统。创建数据库安装用户/用户组(可自定义)。

  • 方式一: 创建用户vastbase以及同名用户组。(执行useradd命令创建用户时会同步创建同名用户组。)

    useradd -m vastbase
    
  • 方式二: 使用groupadd命令创建用户组,使用useradd命令创建用户并指定其用户组。

    groupadd dbgrp
    useradd -m vastbase -g dbgrp
    

2、设定初始密码(需要重复输入2次且完全一致)。

passwd vastbase