一、环境准备
1.环境信息
| ip | hostname | 角色 |
| 10.x.x.31 | gbase8c_7_31 | 主节点 |
| 10.x.x.35 | gbase8c_7_35 | 备节点 |
| 10.x.x.34 | VIP |
安装包:GBase8cV5_S5.0.0B28_centos7.8_x86_64.tar.gz
2.编辑/etc/hosts
##主备皆执行
cat >>/etc/hosts<<EOF
10.x.x.31 gbase8c_7_31
10.x.x.35 gbase8c_7_35
EOF
3.关闭防火墙
##主备皆执行
systemctl stop firewalld.service
systemctl disable firewalld.service
systemctl status firewalld.service4.关闭SELINUX
##主备皆执行
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
setenforce 0
getenforce5.安装依赖
##主备皆执行
yum install -y expect bzip26.创建gbase用户并给sudo权限
##主备皆执行
groupadd gbase
useradd -m -d /home/gbase gbase -g gbase
echo "gbase@123"|passwd gbase --stdin
sed -i.bak '/^root\s\+ALL=(ALL)\s\+ALL$/a gbase ALL=(ALL) NOPASSWD:ALL' /etc/sudoers7.设置免密,root和gbase用户都要互信
##主备皆执行
ssh-keygen -t rsa
ssh-copy-id 10.x.x.31
ssh-copy-id 10.x.x.35二、开始安装
1.创建安装目录
##主备皆执行,将安装包放入主节点 /data/install_package/ 目录下
mkdir -p /data/install_package
chmod 755 -R /data/
chown gbase.gbase -R /data/2.切换到gbase用户下进行解压
##主节点执行
su - gbase
cd /data/install_package/
tar -xf GBase8cV5_S5.0.0B28_centos7.8_x86_64.tar.gz
tar -xf GBase8cV5_S5.0.0B28_CentOS_x86_64_om.tar.gz3.编辑配置文件,vi xxxx_gbase.xml
<?xml version="1.0" encoding="UTF-8"?>
<ROOT>
<CLUSTER>
<PARAM name="clusterName" value="gbase" />
<PARAM name="nodeNames" value="gbase8c_7_31,gbase8c_7_35" />
<PARAM name="gaussdbAppPath" value="/data/gbasedb/database/app" />
<PARAM name="gaussdbLogPath" value="/data/gbasedb/database/log" />
<PARAM name="tmpMppdbPath" value="/data/gbasedb/database/tmp"/>
<PARAM name="gaussdbToolPath" value="/data/gbasedb/database/om" />
<PARAM name="corePath" value="/data/gbasedb/database/corefile"/>
<PARAM name="backIp1s" value="10.x.x.31,10.x.x.35"/>
</CLUSTER>
<DEVICELIST>
<!-- node1 -->
<DEVICE sn="gbase8c_7_31">
<PARAM name="name" value="gbase8c_7_31"/>
<PARAM name="azName" value="AZ1"/>
<PARAM name="azPriority" value="1"/>
<PARAM name="backIp1" value="10.x.x.31"/>
<PARAM name="sshIp1" value="10.x.x.31"/>
<PARAM name="dataNum" value="1"/>
<PARAM name="dataPortBase" value="15400"/>
<PARAM name="dataNode1" value="/data/gbasedb/database/data/dn,gbase8c_7_35,/data/gbasedb/database/data/dn"/>
<PARAM name="dataNode1_syncNum" value="0"/>
<!-- CM -->
<PARAM name="cmsNum" value="1"/>
<PARAM name="cmDir" value="/data/gbasedb/database/cm"/>
<PARAM name="cmServerPortBase" value="15300"/>
<PARAM name="cmServerListenIp1" value="10.x.x.31,10.x.x.35"/>
<PARAM name="cmServerHaIp1" value="10.x.x.31,10.x.x.35"/>
<PARAM name="cmServerlevel" value="1"/>
<PARAM name="cmServerRelation" value="gbase8c_7_31,gbase8c_7_35"/>
<!-- CM -->
</DEVICE>
<!-- node2 -->
<DEVICE sn="gbase8c_7_35">
<PARAM name="name" value="gbase8c_7_35"/>
<PARAM name="azName" value="AZ1"/>
<PARAM name="azPriority" value="1"/>
<PARAM name="backIp1" value="10.x.x.35"/>
<PARAM name="sshIp1" value="10.x.x.35"/>
<!-- CM -->
<PARAM name="cmDir" value="/data/gbasedb/database/cm"/>
<PARAM name="cmServerPortStandby" value="15300"/>
<!-- CM -->
</DEVICE>
</DEVICELIST>
</ROOT>4.切换到root用户下执行预安装
##主节点执行
su - root
cd /data/install_package
./script/gs_preinstall -U gbase -G gbase -X /data/install_package/xxxx_gbase.xml5.将安装目录权限授权给gbase用户
##主备皆执行
chown -R gbase.gbase /data/6.切换到gbase用户下执行正式安装
##主节点执行
su – gbase
cd /data/install_package
./script/gs_install -X /data/install_package/xxxx_gbase.xml7.查看集群状态
##执行 gs_om -t status --detail 显示如下
$ gs_om -t status --detail
[ CMServer State ]
node node_ip instance state
----------------------------------------------------------------------------------
1 gbase8c_7_31 10.x.x.31 1 /data/gbasedb/database/cm/cm_server Primary
2 gbase8c_7_35 10.x.x.35 2 /data/gbasedb/database/cm/cm_server Standby
[ Cluster State ]
cluster_state : Normal
redistributing : No
balanced : Yes
current_az : AZ_ALL
[ Datanode State ]
node node_ip instance state
----------------------------------------------------------------------------------------------
1 gbase8c_7_31 10.x.x.31 6001 15400 /data/gbasedb/database/data/dn P Primary Normal
2 gbase8c_7_35 10.x.x.35 6002 15400 /data/gbasedb/database/data/dn S Standby Normal到此数据库已安装完成
三、配置虚拟IP
1.设置虚拟IP为 10.x.x.34
##主备皆执行
su - gbase
cm_ctl res --add --res_name="CM_VIP" --res_attr="resources_type=VIP,float_ip=10.x.x.34"2.编辑定义的VIP资源
##主备皆执行
su - gbase
cm_ctl res --edit --res_name="CM_VIP" --add_inst="res_instance_id=6001,node_id=1" --inst_attr="base_ip=10.x.x.31"
cm_ctl res --edit --res_name="CM_VIP" --add_inst="res_instance_id=6002,node_id=2" --inst_attr="base_ip=10.x.x.35"3.设置CM参数,这里的网关是10.x.x.1(根据实际情况修改)
##主备皆执行
su - gbase
cm_ctl set --param --server -k "cms_enable_failover_on2nodes=1"
cm_ctl set --param --server -k "cms_network_isolation_timeout=10"
cm_ctl set --param --server -k "cms_enable_db_crash_recovery=1"
cm_ctl set --param --server -k "third_party_gateway_ip=10.x.x.1"4.重启数据库
su - gbase
gs_om -t stop
gs_om -t start
gs_om -t status --detail5.查看vip
##执行 cm_ctl show 能正常显示VIP
[ FloatIp Network State ]
node instance base_ip float_ip_name float_ip
---------------------------------------------------------------------
1 gbase8c_7_31 6001 10.x.x.31 CM_VIP 10.x.x.34
##主节点执行 ip a 能看到VIP
inet 10.x.x.31/21 brd 10.x.x.255 scope global noprefixroute ens192
valid lft forever preferred lft forever
inet 10.x.x.34/21 brd 10.x.x.255 scope global secondary ens192:15400四、高可用验证
1.手动主备切换
## 1.主节点执行 cm_ctl switchover -n 2 -D /data/gbasedb/database/data/dn 进行切换
$ cm_ctl switchover -n 2 -D /data/gbasedb/database/data/dn
......
cm_ctl: switchover successfully.
## 2.执行 gs_om -t status --detail 查看集群状态,能正常切换,可以看到10.x.x.35已成为主节点
$ gs_om -t status --detail
[ CMServer State ]
node node_ip instance state
----------------------------------------------------------------------------------
1 gbase8c_7_31 10.x.x.31 1 /data/gbasedb/database/cm/cm_server Primary
2 gbase8c_7_35 10.x.x.35 2 /data/gbasedb/database/cm/cm_server Standby
[ Cluster State ]
cluster_state : Normal
redistributing : No
balanced : No
current_az : AZ_ALL
[ Datanode State ]
node node_ip instance state
----------------------------------------------------------------------------------------------
1 gbase8c_7_31 10.x.x.31 6001 15400 /data/gbasedb/database/data/dn P Standby Normal
2 gbase8c_7_35 10.x.x.35 6002 15400 /data/gbasedb/database/data/dn S Primary Normal
##3.在10.x.x.35上执行 ip a 可以看到vip已漂过来
inet 10.x.x.35/21 brd 10.x.x.255 scope global noprefixroute ens192
valid lft forever preferred lft forever
inet 10.x.x.34/21 brd 10.x.x.255 scope global secondary ens192:15400
## 4.执行 cm_ctl switchover -n 1 -D /data/gbasedb/database/data/dn 进行回切
$ cm_ctl switchover -n 1 -D /data/gbasedb/database/data/dn
....
cm_ctl: switchover successfully.2.主机重启自动切换
##1.主节点执行 reboot 重启服务器
##2.备节点执行 gs_om -t status --detail 查看集群状态,能正常切换,可以看到10.x.x.35已成为主节点
$ gs_om -t status --detail
[ CMServer State ]
node node_ip instance state
--------------------------------------------------------------------------------------------------
1 gbase8c_7_31 10.x.x.31 1 /data/gbasedb/database/cm/cm_server Primary
2 gbase8c_7_35 10.x.x.35 2 /data/gbasedb/database/cm/cm_server Standby
[ Cluster State ]
cluster_state : Normal
redistributing : No
balanced : No
current_az : AZ_ALL
[ Datanode State ]
node node_ip instance state
--------------------------------------------------------------------------------------------------------------
1 gbase8c_7_31 10.x.x.31 6001 15400 /data/gbasedb/database/data/dn P Standby Normal
2 gbase8c_7_35 10.x.x.35 6002 15400 /data/gbasedb/database/data/dn S Primary Normal
##3.在10.x.x.35上执行 ip a 可以看到vip已漂过来
inet 10.x.x.35/21 brd 10.x.x.255 scope global noprefixroute ens192
valid lft forever preferred lft forever
inet 10.x.x.34/21 brd 10.x.x.255 scope global secondary ens192:15400
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




