暂无图片
暂无图片
1
暂无图片
暂无图片
暂无图片

openGauss/MogDB-3.0.0 dcf测试(非om安装)

原创 阎书利 2022-05-11
1591

IP地址

172.20.10.6 LERDER
172.20.10.7 FOLLOWER
172.20.10.8 FOLLOWER

一、安装openGauss

安装依赖包

yum install -y bzip2 bzip2-devel curl libaio

创建用户、组并创建目录

groupadd omma -g 20001
useradd omma -g 20001 -u 20001
echo "Enmo@123" | passwd --stdin omma

mkdir -p /opengauss/{soft,data}
tar xf openGauss-3.0.0-CentOS-64bit-all.tar.gz -C /opengauss/soft

image.png

配置环境变量

echo "export GAUSSHOME=/opengauss/soft"  >> /home/omma/.bashrc && \
echo "export PATH=\$GAUSSHOME/bin:\$PATH " >> /home/omma/.bashrc && \
echo "export LD_LIBRARY_PATH=\$GAUSSHOME/lib:\$LD_LIBRARY_PATH" >> /home/omma/.bashrc

image.png

解压数据库软件包

cd /opengauss/soft
tar -xf openGauss-3.0.0-CentOS-64bit.tar.bz2

image.png

初始化数据库
后续所有操作均使用omma用户,初始化需要加-c参数,会生成dcf相关文件paxosindex(注意nodename)

gs_initdb --nodename=gaussdb1 -w Enmo@123 -D /opengauss/data/ -c

image.png
image.png

二、配置dcf参数

1.配置白名单

在pg_hba.conf里添加白名单
image.png

2.配置dcf参数与replconninfo

因为在初始化时加了-c,会自动打开enable_dcf参数
image.png
在节点一的postgresql.conf里添加

port=21000
dcf_node_id = 1
dcf_ssl=off
dcf_data_path = '/opengauss/data/dcf_data'
dcf_log_path= '/opengauss/data/dcf_log'
dcf_config='[{"stream_id":1,"node_id":1,"ip":"172.20.10.6","port":21000,"role":"LEADER"},{"stream_id":1,"node_id":2,"ip":"172.20.10.7","port":21000,"role":"FOLLOWER"},{"stream_id":1,"node_id":3,"ip":"172.20.10.8","port":21000,"role":"FOLLOWER"}]'
replconninfo1 = 'localhost=172.20.10.6 localport=21001 localheartbeatport=21005 localservice=21004 remotehost=172.20.10.7 remoteport=21001 remoteheartbeatport=21005 remoteservice=21004'
replconninfo2 = 'localhost=172.20.10.6 localport=21001 localheartbeatport=21005 localservice=21004 remotehost=172.20.10.8 remoteport=21001 remoteheartbeatport=21005 remoteservice=21004'

类似得,在其他两个备机添加
节点二:

port=21000
dcf_node_id = 2
dcf_ssl=off
dcf_data_path = '/opengauss/data/dcf_data'
dcf_log_path= '/opengauss/data/dcf_log'
dcf_config='[{"stream_id":1,"node_id":1,"ip":"172.20.10.6","port":21000,"role":"LEADER"},{"stream_id":1,"node_id":2,"ip":"172.20.10.7","port":21000,"role":"FOLLOWER"},{"stream_id":1,"node_id":3,"ip":"172.20.10.8","port":21000,"role":"FOLLOWER"}]'
replconninfo1 = 'localhost=172.20.10.7 localport=21001 localheartbeatport=21005 localservice=21004 remotehost=172.20.10.6 remoteport=21001 remoteheartbeatport=21005 remoteservice=21004'
replconninfo2 = 'localhost=172.20.10.7 localport=21001 localheartbeatport=21005 localservice=21004 remotehost=172.20.10.8 remoteport=21001 remoteheartbeatport=21005 remoteservice=21004'

节点三:

port=21000
dcf_node_id = 3
dcf_ssl=off
dcf_data_path = '/opengauss/data/dcf_data'
dcf_log_path= '/opengauss/data/dcf_log'
dcf_config='[{"stream_id":1,"node_id":1,"ip":"172.20.10.6","port":21000,"role":"LEADER"},{"stream_id":1,"node_id":2,"ip":"172.20.10.7","port":21000,"role":"FOLLOWER"},{"stream_id":1,"node_id":3,"ip":"172.20.10.8","port":21000,"role":"FOLLOWER"}]'
replconninfo1 = 'localhost=172.20.10.8 localport=21001 localheartbeatport=21005 localservice=21004 remotehost=172.20.10.7 remoteport=21001 remoteheartbeatport=21005 remoteservice=21004'
replconninfo2 = 'localhost=172.20.10.8 localport=21001 localheartbeatport=21005 localservice=21004 remotehost=172.20.10.6 remoteport=21001 remoteheartbeatport=21005 remoteservice=21004'

三、启动openGauss

全部以备机身份拉起

gs_ctl start -D /opengauss/data -M standby

手动设置存活节点为少数派模式运行,在主节点执行(即 LEADER)

gs_ctl setrunmode -D /opengauss/data  -v 1 -x minority

image.png
集群其他节点主动重建拉起,在所有备节点执行(即 FOLLOWER)
gs_ctl build -b full -D /opengauss/data
image.png

image.png
存活节点重回多数派,在主节点执行(即 LEADER)

gs_ctl setrunmode -D /opengauss/data -x normal

image.png
全部节点查看状态

gs_ctl query -D /opengauss/data

image.png
image.png
image.png

四、数据同步测试

主节点

[omma@localhost ~]$ gsql -p 21000 postgres -r
gsql ((openGauss 3.0.0 build 02c14696) compiled at 2022-04-01 18:12:34 commit 0 last mr  )
Non-SSL connection (SSL connection is recommended when requiring high-security)
Type "help" for help.

openGauss=# create table ysl (id int);
CREATE TABLE
openGauss=# insert into ysl values(1);
INSERT 0 1
openGauss=# select * from ysl;
 id
----
  1
(1 row)

image.png

备机
image.png

五、故障切换测试

主节点进行停数据库
gs_ctl stop -D /opengauss/data/
image.png

可以看到我们的node2变成了主节点,身份是leader,而我们的原主变成了它的follower
image.png

拉起原主库,以standby方式启动,查看当前状态,原主节点依旧是新主节点的follower
gs_ctl start -D /opengauss/data -M standby
image.png

六、switchover切换测试

在节点1进行switchover操作,之前节点1为follower,执行完切换之后,可以看到我们的节点1又重新恢复成主节点。
image.png

此时查看节点2,也就是我们switchover之前的主节点,发现节点2已经shutdown了,需要手动再加入集群
image.png

总结

1.openGauss-3.0.0版本的dcf对于switchover,在进行切换之后会把原主节点shutdown,而不会重启为follower,需要手动重启。
2.此外dcf不像om工具这种部署的主备,不属于流复制,dcf在主节点pg_stat_replication视图里查询不到复制信息。
image.png
数据复制流程区别:
image.png

补充

对于dcf在switchover之后把原主节点关闭的这个问题,我在openGauss社区提了个issue。

给我的解答是:dcf模式下不是通过流复制进行的而是通过dcf进行的,此模式下switchover时对主机的处理就是将主机关闭,需要的话需要手工拉起。而如果不想人为手工操作,可以结合使用cm,在switchover将原主机关闭后cm会将其自动拉起。

这是对应的issue的地址:https://gitee.com/opengauss/DCF/issues/I57M77

最后修改时间:2022-09-27 13:57:41
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论