switchover
在主备机正常时,出于维护的需要,将备机切换为主机,可保证切换过程中数据不丢失。
查看集群实例主备状态:1节点为主库,2节点为备库
$ gs_om -t status --detail
[ Cluster State ]
cluster_state : Normal
redistributing : No
current_az : AZ_ALL
[ Datanode State ]
node node_ip instance state | node node_ip instance state
--------------------------------------------------------------------------------------------------------------------------------------------------------------------
1 cen7-og1-02 192.168.229.53 6001 /opt/MogDB/data/dn P Primary Normal | 2 cen7-og1-03 192.168.229.54 6002 /opt/MogDB/data/dn S Standby Normal
在备节点执行切换主备操作:
$ gs_ctl switchover -D /opt/MogDB/data/dn
[2021-01-15 02:44:55.125][1034][][gs_ctl]: gs_ctl switchover ,datadir is /opt/MogDB/data/dn
[2021-01-15 02:44:55.125][1034][][gs_ctl]: switchover term (1)
[2021-01-15 02:44:55.137][1034][][gs_ctl]: waiting for server to switchover…
[2021-01-15 02:45:06.250][1034][][gs_ctl]: done
[2021-01-15 02:45:06.250][1034][][gs_ctl]: switchover completed (/opt/MogDB/data/dn)
确认集群主备状态:1节点为备库,2节点为主库
$ gs_om -t status --detail
[ Cluster State ]
cluster_state : Normal
redistributing : No
current_az : AZ_ALL
[ Datanode State ]
node node_ip instance state | node node_ip instance state
--------------------------------------------------------------------------------------------------------------------------------------------------------------------
1 cen7-og1-02 192.168.229.53 6001 /opt/MogDB/data/dn P Standby Normal | 2 cen7-og1-03 192.168.229.54 6002 /opt/MogDB/data/dn S Primary Normal
保存数据库主备机器信息:确保gs_om -t refreshconf 命令执行成功,否则再次重启会影响数据库状态。
$ gs_om -t refreshconf
Generating dynamic configuration file for all nodes.
Successfully generated dynamic configuration file.
failover
测试1:在主机异常时,将备机切换为主机。
查看集群实例主备状态:1节点为备库,2节点为主库
$ gs_om -t status --detail
[ Cluster State ]
cluster_state : Normal
redistributing : No
current_az : AZ_ALL
[ Datanode State ]
node node_ip instance state | node node_ip instance state
--------------------------------------------------------------------------------------------------------------------------------------------------
1 og201.2.test 192.168.2.157 6001 /mogdata/db1 P Primary Normal | 2 og201.3.test 192.168.2.158 6002 /mogdata/db1 S Standby Normal
主节点关闭数据库,模拟主节点故障
$ gs_ctl stop -D /mogdata/db1
[2021-12-27 11:34:07.742][24807][][gs_ctl]: gs_ctl stopped ,datadir is /mogdata/db1
waiting for server to shut down......... done
server stopped
备节点执行主备切换操作:
$ gs_ctl failover -D /mogdata/db1
[2021-12-27 11:34:42.304][28315][][gs_ctl]: gs_ctl failover ,datadir is /mogdata/db1
[2021-12-27 11:34:42.304][28315][][gs_ctl]: failover term (1)
[2021-12-27 11:34:42.310][28315][][gs_ctl]: waiting for server to failover...
.[2021-12-27 11:34:43.327][28315][][gs_ctl]: done
[2021-12-27 11:34:43.327][28315][][gs_ctl]: failover completed (/mogdata/db1)
确认集群主备状态:备库切换为主库
$ 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
--------------------------------------------------------------------------------------------------------------------------------------------------
1 og201.2.test 192.168.2.157 6001 /mogdata/db1 P Down Manually stopped | 2 og201.3.test 192.168.2.158 6002 /mogdata/db1 S Primary Normal
在确定降为备机的节点以standy模式启动MogDB服务:
$$ gs_ctl start -D /mogdata/db1 -M standby
[2021-12-27 11:35:10.858][24918][][gs_ctl]: gs_ctl started,datadir is /mogdata/db1
[2021-12-27 11:35:11.010][24918][][gs_ctl]: waiting for server to start...
…
[2021-12-27 11:35:12.032][24918][][gs_ctl]: done
[2021-12-27 11:35:12.032][24918][][gs_ctl]: server started (/mogdata/db1)
确认集群状态:主备节点已顺利切换
$ gs_om -t status --detail
[ Cluster State ]
cluster_state : Normal
redistributing : No
current_az : AZ_ALL
[ Datanode State ]
node node_ip instance state | node node_ip instance state
--------------------------------------------------------------------------------------------------------------------------------------------------
1 og201.2.test 192.168.2.157 6001 /mogdata/db1 P Standby Normal | 2 og201.3.test 192.168.2.158 6002 /mogdata/db1 S Primary Normal
保存数据库主备机器信息:确保gs_om -t refreshconf 命令执行成功,否则再次重启会影响数据库状态。
$ gs_om -t refreshconf
Generating dynamic configuration file for all nodes.
Successfully generated dynamic configuration file.
测试2:在主机正常时,将备机切换为主机。
将主机重启为备机之后,备机将处于需要修复状态,需要对备机进行build操作。
$ gs_om -t status --detail
[ Cluster State ]
cluster_state : Normal
redistributing : No
current_az : AZ_ALL
[ Datanode State ]
node node_ip instance state | node node_ip instance state
--------------------------------------------------------------------------------------------------------------------------------------------------------------------
1 cen7-og1-02 192.168.229.53 6001 /opt/MogDB/data/dn P Standby Normal | 2 cen7-og1-03 192.168.229.54 6002 /opt/MogDB/data/dn S Primary Normal
备节点执行主备切换操作:
$ gs_ctl failover -D /opt/MogDB/data/dn
[2021-01-15 03:33:13.803][17292][][gs_ctl]: gs_ctl failover ,datadir is /opt/MogDB/data/dn
[2021-01-15 03:33:13.803][17292][][gs_ctl]: failover term (1)
[2021-01-15 03:33:13.810][17292][][gs_ctl]: waiting for server to failover…
[2021-01-15 03:33:14.823][17292][][gs_ctl]: done
[2021-01-15 03:33:14.823][17292][][gs_ctl]: failover completed (/opt/MogDB/data/dn)
确认集群主备状态:双主状态
$ gs_om -t status --detail
[ Cluster State ]
cluster_state : Unavailable
redistributing : No
current_az : AZ_ALL
[ Datanode State ]
node node_ip instance state | node node_ip instance state
--------------------------------------------------------------------------------------------------------------------------------------------------------------------
1 cen7-og1-02 192.168.229.53 6001 /opt/MogDB/data/dn P Primary Normal | 2 cen7-og1-03 192.168.229.54 6002 /opt/MogDB/data/dn S Primary Normal
在确定降为备机的节点关闭并以standy模式启动MogDB服务:
$ gs_ctl start -D /opt/MogDB/data/dn -M standby
[2021-01-15 03:03:08.695][9126][][gs_ctl]: gs_ctl started,datadir is /opt/MogDB/data/dn
[2021-01-15 03:03:08.864][9126][][gs_ctl]: waiting for server to start…
…
[2021-01-15 03:03:10.921][9126][][gs_ctl]: done
[2021-01-15 03:03:10.921][9126][][gs_ctl]: server started (/opt/MogDB/data/dn)
确认集群状态:1节点为主库,2节点为备库,但备库需要修复
$ 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
--------------------------------------------------------------------------------------------------------------------------------------------------------------------
1 cen7-og1-02 192.168.229.53 6001 /opt/MogDB/data/dn P Primary Normal | 2 cen7-og1-03 192.168.229.54 6002 /opt/MogDB/data/dn S Standby Need repair(WAL)
在备库所在节点执行修复命令:
[omm@cen7-og1-03 ~]$ gs_ctl build -D /opt/MogDB/data/dn [2021-01-15 03:23:57.702][30784][][gs_ctl]: gs_ctl incremental build ,datadir is /opt/MogDB/data/dn waiting for server to shut down… done server stopped [2021-01-15 03:23:58.726][30784][][gs_ctl]: fopen build pid file “/opt/MogDB/data/dn/gs_build.pid” success [2021-01-15 03:23:58.726][30784][][gs_ctl]: fprintf build pid file “/opt/MogDB/data/dn/gs_build.pid” success [2021-01-15 03:23:58.727][30784][][gs_ctl]: fsync build pid file “/opt/MogDB/data/dn/gs_build.pid” success … [2021-01-15 03:24:02.833][30784][dn_6001_6002][gs_ctl]: done [2021-01-15 03:24:02.833][30784][dn_6001_6002][gs_ctl]: server started (/opt/MogDB/data/dn) [2021-01-15 03:24:02.833][30784][dn_6001_6002][gs_ctl]: fopen build pid file “/opt/MogDB/data/dn/gs_build.pid” success [2021-01-15 03:24:02.833][30784][dn_6001_6002][gs_ctl]: fprintf build pid file “/opt/MogDB/data/dn/gs_build.pid” success [2021-01-15 03:24:02.835][30784][dn_6001_6002][gs_ctl]: fsync build pid file “/opt/MogDB/data/dn/gs_build.pid” success
确认集群状态:正常
$ gs_om -t status --detail
[ Cluster State ]
cluster_state : Normal
redistributing : No
current_az : AZ_ALL
[ Datanode State ]
node node_ip instance state | node node_ip instance state
--------------------------------------------------------------------------------------------------------------------------------------------------------------------
1 cen7-og1-02 192.168.229.53 6001 /opt/MogDB/data/dn P Primary Normal | 2 cen7-og1-03 192.168.229.54 6002 /opt/MogDB/data/dn S Standby Normal
保存数据库主备机器信息:确保gs_om -t refreshconf 命令执行成功,否则再次重启会影响数据库状态。
$ gs_om -t refreshconf
Generating dynamic configuration file for all nodes.
Successfully generated dynamic configuration file.
最后修改时间:2021-12-27 11:49:08
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




