从集群中移除无法修复的备库
大概思路
1,将现有正常节点的postgresql.conf里的涉及到主备参数进行修改(去掉),主要是replconninfo和synchronous_stanby_names。
synchronous_stanby_names 主要看有没有配置异常的节点。没有不需要处理,有的话去除掉。
如果synchronous_stanby_names值有变更,就需要重启集群(?gs_guc reload是不是可以不用重启集群,待验证),没有不需要。
2,准备一个新的集群xml配置文件,排除掉无法修复的库的信息,生成静态配置文件:
gs_om -t generateconf -X XMLFILE --distribute
# 为了更有把握?刷新下动态配置文件。
gs_om -t refreshconf
## 如果可以,stop,start集群,验证。
3,如果移除的是同步备,为保证数据安全,则需要酌情修改synchronous_stanby_names参数值增加同步从
修改方法:列表里有值的,这个从就是同步从。没有的就归类为异步从?还是归类为潜在同步者
potential。
4,application_name = 'dn_6001' postgresql.conf
实践练习
查看当前集群状态
当前环境为1主3备,且集群状态正常。
[ Cluster State ] cluster_state : Normal redistributing : No current_az : AZ_ALL [ Datanode State ] node node_ip instance state | node node_ip instance state | node node_ip instance state | node node_ip instance state ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 1 user374 20.198.110.160 6001 /app/ogdata/data/dn1 P Primary Normal | 2 user375 20.198.110.161 6002 /app/ogdata/data/dn1 S Standby Normal | 3 user376 20.198.110.162 6003 /app/ogdata/data/dn1 S Standby Normal | 4 user377 20.198.110.163 6004 /app/ogdata/data/dn1 S Standby Normal
模拟故障
选择删除主机 user377的数据目录为例(以实践移除节点为例,不考虑可修复的情况)。
[omm@user374 ~]$ ssh user377 Last login: Tue Mar 8 18:43:03 2022 from 20.198.110.160 [omm@user377 ~]$ rm -rf /app/ogdata/data/ [omm@user377 ~]$ gs_om -t status --detail [ Cluster State ] cluster_state : Degraded redistributing : No current_az : AZ_ALL [ Datanode State ] node node_ip instance state | node node_ip instance state | node node_ip instance state | node node_ip instance state ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 1 user374 20.198.110.160 6001 /app/ogdata/data/dn1 P Primary Normal | 2 user375 20.198.110.161 6002 /app/ogdata/data/dn1 S Standby Normal | 3 user376 20.198.110.162 6003 /app/ogdata/data/dn1 S Standby Normal | 4 user377 20.198.110.163 6004 /app/ogdata/data/dn1 S Down Manually stopped
删除数据目录后,集群状态异常。
准备新的集群xml配置文件
不包含异常节点user377
[omm@user374 ~]$ cp single.xml single_drop.xml [omm@user374 ~]$ more single_drop.xml <?xml version="1.0" encoding="UTF-8"?> <ROOT> <CLUSTER> <PARAM name="clusterName" value="gauss_omm"/> <PARAM name="nodeNames" value="user374,user375,user376"/> <PARAM name="gaussdbAppPath" value="/app/opengauss/app/2.0.1"/> <PARAM name="gaussdbLogPath" value="/app/opengauss/gaussdb_log" /> <PARAM name="tmpMppdbPath" value="/app/opengauss/tmp"/> <PARAM name="gaussdbToolPath" value="/app/opengauss/tool"/> <PARAM name="corePath" value="/app/opengauss/corefile"/> <PARAM name="backIp1s" value="20.198.110.160,20.198.110.161,20.198.110.162"/> <PARAM name="clusterType" value="single-inst"/> </CLUSTER> <DEVICELIST> <DEVICE sn="user374"> <PARAM name="name" value="user374"/> <PARAM name="backIp1" value="20.198.110.160"/> <PARAM name="sshIp1" value="20.198.110.160"/> <PARAM name="azName" value="F"/> <PARAM name="azPriority" value="1"/> <!-- dn --> <PARAM name="dataNum" value="1"/> <PARAM name="dataPortBase" value="15800"/> <PARAM name="dataNode1" value="/app/ogdata/data/dn1,user375,/app/ogdata/data/dn1,user376,/app/ogdata/data/dn1"/> <PARAM name="dataNodeXlogPath1" value="/app/ogxlog,/app/ogxlog,/app/ogxlog"/> </DEVICE> <DEVICE sn="user375"> <PARAM name="name" value="user375"/> <PARAM name="backIp1" value="20.198.110.161"/> <PARAM name="sshIp1" value="20.198.110.161"/> <PARAM name="azName" value="F"/> <PARAM name="azPriority" value="1"/> </DEVICE> <DEVICE sn="user376"> <PARAM name="name" value="user376"/> <PARAM name="backIp1" value="20.198.110.162"/> <PARAM name="sshIp1" value="20.198.110.162"/> <PARAM name="azName" value="Y"/> <PARAM name="azPriority" value="1"/> </DEVICE> </DEVICELIST> </ROOT>
重新生成静态配置文件
以上面的新的xml配置文件,重新生成集群静态配置文件。
gs_om -t generateconf -X XMLFILE --distribute [omm@user374 ~]$ gs_om -t generateconf -X /home/omm/single_drop.xml --distribute Generating static configuration files for all nodes. Creating temp directory to store static configuration files. Successfully created the temp directory. Generating static configuration files. Successfully generated static configuration files. Static configuration files for all nodes are saved in /app/opengauss/tool/script/static_config_files. Distributing static configuration files to all nodes. Successfully distributed static configuration files.
查看集群现有情况
[omm@user374 ~]$ gsql -p 15800 -d postgres -r [ Cluster State ] cluster_state : Normal redistributing : No current_az : AZ_ALL [ Datanode State ] node node_ip instance state | node node_ip instance state | node node_ip instance state ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ 1 user374 20.198.110.160 6001 /app/ogdata/data/dn1 P Primary Normal | 2 user375 20.198.110.161 6002 /app/ogdata/data/dn1 S Standby Normal | 3 user376 20.198.110.162 6003 /app/ogdata/data/dn1 S Standby Normal
可以看到user377这个节点已经被排除到集群外。
配置文件修改
修改集群所有节点postgresql.conf文件,去除replconninfo [0-9]中涉及涉及user377的行。
查看现有集群所有节点synchronous_standby_names参数,如有有配置6004的,需要去除,并且需要重启集群生效(?gs_guc reload是否可以不需要重启集群,待验证)。
查看参数并修改配置
gs_guc check -N all -I all -c "synchronous_standby_names" # 主,备节点该参数配置不同 gs_guc reload -N all -I all -c "synchronous_standby_names = '1(dn_6002)'" # 主,备节点该参数配置不同 。
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




