实例主备切换
vb_ctl是Vastbase提供的数据库服务控制工具,可以用来启停数据库服务和查询数据库状态。
使用基于HAS的高可用方案时,建议使用相应的集群管理工具对数据库集群进行操作。
操作场景
Vastbase在运行过程中,数据库管理员可能需要手工对数据库节点做主备切换。例如:
主机运行正常,因为维护等需求需要进行switchover操作,switchover之后主机降备,备机升主开始接管业务。这些操作需要主机和备机之间交互才能完成。
主机故障后,对备机进行failover操作,failover后备机升主,开始接管业务。failover的过程由备机独立完成,不需要与主机进行交互。
- 主备切换为维护操作,确保Vastbase状态正常,所有业务结束后,再进行切换操作。
- 在开启极致RTO时,不支持级联备机。因为在极致RTO开启情况下,备机不支持连接,所以无法与级联备机同步数据。
- 级联备机切换后,主机的synchronous_standby_names参数不会自动调整,因此可能需要手动调整主机的synchronous_standby_names参数,否则有可能会导致主机的写业务阻塞。
操作步骤
1、以操作系统用户vastbase登录数据库任意节点,执行如下命令,检查主备节点情况:
vb_ctl query
2、以操作系统用户vastbase登录需要升主的备节点,执行命令:
vb_ctl switchover -D DATADIR -m SWITCHOVER-MODE
如果主机故障则执行:
vb_ctl failover -D DATADIR -m SWITCHOVER-MODE
参数说明
-D DATADIR
指定数据目录的位置。其中DATADIR由数据目录的路径替换。
-m SWITCHOVER-MODE
声明双机主备实例正常时切换的切换模式。SWITCHOVER-MODE表示切换模式,包括如下取值:
fast(默认值),直接将主库降级,对备库升主,实现主备切换。
-f,切换时不执行检查点,直接退出实现主备切换。
3、切换成功后检查主备状态及日志同步情况。
注意事项
- 对于同一个数据库,如果上一次主备切换未完成,则不能执行下一次切换。
- switchover命令下发后,命令如果超时返回,后台进程的执行状态可能处于不可确定状态。
- 如果备机在standby wait状态,可以通过重复下发switchover命令消除,使集群恢复到正常状态。
示例
将数据库主实例切换为备实例。
1、查看数据库主备状态:
vb_ctl query
返回结果为:
//主库结果: HA state: local_role : Primary static_connections : 1 db_state : Normal detail_information : Normal //备库结果: HA state: local_role : Standby static_connections : 1 db_state : Normal detail_information : Normal
2、登录备节点执行主备切换命令:
vb_ctl switchover
返回结果为:
vb_ctl switchover ,datadir is /home/vastbase/data/vastbase switchover term (1) waiting for server to switchover....... switchover completed (/home/vastbase/data/vastbase)
当故障时,登录备节点执行:
vb_ctl failover
结果显示如下:
[2022-08-02 10:37:53.887][28312][][vb_ctl]: vb_ctl failover ,datadir is /home/va stbase/data/vastbase [2022-08-02 10:37:53.887][28312][][vb_ctl]: failover term (1) [2022-08-02 10:37:53.893][28312][][vb_ctl]: waiting for server to failover... [2022-08-02 10:37:53.894][28312][][vb_ctl]: done [2022-08-02 10:37:53.894][28312][][vb_ctl]: failover completed (/home/vastbase/data/vastbase)
3、在原备机检查备机状态。
vb_ctl status
返回结果为:
vb_ctl status,datadir is /home/vastbase/data/vastbase vb_ctl: server is running (PID: 9231) /home/vastbase/local/vastbase/bin/vastbase "-M" "primary"
错误排查
如果switchover过程中出现失败,请根据日志文件中的日志信息排查错误。
异常处理
其他备机正在build的情况下,主机需要发送日志到备机后才能降备,会导致主备切换时间长。应尽量避免build过程中进行主备切换。
切换过程中,因网络故障、磁盘满等原因造成主备实例连接断开,出现双主现象时,使用步骤如下步骤修复,否则可能会造成数据丢失:
1、确定降为备机的节点,在节点上执行关闭服务命令:
vb_ctl stop
2、以standby模式启动节点。
vb_ctl -M standby start
3、检查所有节点状态
vb_ctl query