Gaussdb数据库修改同步备机数量
背景说明
当前使用的测试环境为gaussdb主备集群1主3备1仲裁共5个节点,由于测试的需要,现需要把同步备的数量修改为1。
操作步骤
1、根据当前的版本,如果裸金属部署版本大于等于503.2版本且需要把synchronous_standby_names的参数修改为any1或first1,需要修改enable_az_auto_switchover参数为0,否则不需要修改该参数,跳过该步骤
enable_az_auto_switchover
参数说明:
AZ自动切换开关,若打开,则表示允许cm_server自动切换AZ。否则当发生dn故障等情况时,即使当前AZ已经不再可用,也不会自动切换到其它AZ上,除非手动执行切换命令。
取值范围:
非负整型,0或1,0表示开关关闭,1表示开关打开。修改后可以reload生效,参数修改请参考表14-2进行设置。默认值:1
gs_guc reload -Z cmserver -N all -I all -c "enable_az_auto_switchover"="0"
2、查询当前synchronous_standby_names参数在各个DN节点的配置
synchronous_standby_names,当前集群该参数默认为ANY 2
参数说明:
潜在同步复制的备机名称列表,每个名称用逗号分隔。当前连接的同步备机是列表中的第一个名称。如果当前同步备机失去连接,则它会立即更换下一个优先级更高的备机,并将此备机的名称放入列表中。备机名称可以通过设置环境变量PGAPPNAME指定。
取值范围:
字符串。当取值为*,表示匹配任意提供同步复制的备机名称。支持按如下格式配置:
● ANY num_sync (standby_name [, …]) [, ANY num_sync (standby_name [, …])]
● [FIRST] num_sync (standby_name [, …])
● standby_name [, …]
说明
1.其中num_sync是事务需要等待其回复的同步复制的备机的数量,standby_name是备机的名称,FIRST以及ANY指定从所列服务器中选取同步复制的备机的策略。
2.ANY N (dn_instanceId1, dn_instanceId2,…)表示在括号内任选N个主机名称作为同步复制的备机名称列表。例如,ANY 1(dn_instanceId1, dn_instanceId2)表示在dn_instanceId1和dn_instanceId2中任选一个作为同步复制的备机名称。
3.FIRST N (dn_instanceId1, dn_instanceId2,…)表示在括号内按出现顺序的先后作为优先级选择前N个主机名称作为同步复制的备机名称列表。例如,FIRST 1 (dn_instanceId1,dn_instanceId2)表示选择dn_instanceId1作为同步复制的备机名称。
4.dn_instanceId1, dn_instanceId2,…和FIRST 1 (dn_instanceId1, dn_instanceId2,…)具有的含义相同。
[omm@ZHHALxjspo0db009 ~]$ gs_guc check -Z datanode -N all -I all -c "synchronous_standby_names"
The gs_guc run with the following arguments: [gs_guc -Z datanode -N all -I all -c synchronous_standby_names check ].
Total GUC values: 4. Failed GUC values: 0.
The details for synchronous_standby_names:
[103.X.X.171] synchronous_standby_names='ANY 2(dn_6002,dn_6003,dn_6004)' [/data/data/dn/dn_6001/postgresql.conf]
[103.X.X.172] synchronous_standby_names='ANY 2(dn_6001,dn_6003,dn_6004)' [/data/data/dn/dn_6002/postgresql.conf]
[103.X.X.173] synchronous_standby_names='ANY 2(dn_6004,dn_6001,dn_6002)' [/data/data/dn/dn_6003/postgresql.conf]
[103.X.X.174] synchronous_standby_names='ANY 2(dn_6003,dn_6001,dn_6002)' [/data/data/dn/dn_6004/postgresql.conf]
3、根据查询节点的配置然后修改命令并分别在对应节点执行如下命令
--DN1节点执行
gs_guc reload -Z datanode -D /data/data/dn/dn_6001 -N 103.161.73.171 -c "synchronous_standby_names='ANY 1(dn_6002,dn_6003,dn_6004)'"
--DN2节点执行
gs_guc reload -Z datanode -D /data/data/dn/dn_6002 -N 103.161.73.172 -c "synchronous_standby_names='ANY 1(dn_6001,dn_6003,dn_6004)'"
--DN3节点执行
gs_guc reload -Z datanode -D /data/data/dn/dn_6003 -N 103.161.73.173 -c "synchronous_standby_names='ANY 1(dn_6004,dn_6001,dn_6002)'"
--DN4节点执行
gs_guc reload -Z datanode -D /data/data/dn/dn_6004 -N 103.161.73.174 -c "synchronous_standby_names='ANY 1(dn_6003,dn_6001,dn_6002)'"