VastbaseG100

基于openGauss内核开发的企业级关系型数据库。

Menu

实例主备切换

功能描述

Vastbase在运行过程中,数据库管理员可能需要手工对数据库节点做主备切换。例如:

  • 主机运行正常,因为维护等需求需要进行switchover操作,switchover之后主机降备,备机升主开始接管业务。这些操作需要主机和备机之间交互才能完成;

  • 主机故障后,备机需要进行failover操作,failover后备机升主,开始接管业务。failover的过程由备机独立完成,不需要与主机进行交互。

主备切换为维护操作,确保Vastbase G100状态正常,所有业务结束后,再进行切换操作。

操作步骤

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 : 指定数据目录的位置。
  • -m SWITCHOVER -mode : 默认值为fast,目前暂不支持其他模式。所有活跃事务都被回滚并且客户端被强制断开,然后服务器被切换。

3、切换成功后检查主备状态及日志同步情况。

注意事项

  • 对于同一个数据库,上一次主备切换未完成,不能执行下一次切换。
  • switchover命令下发后,命令如果超时返回,后台进程的执行状态可能处于不可确定状态。
  • 如果备机在standby wait状态,可以通过重复下发switch over命令消除,使集群恢复到正常状态。

示例

将数据库主实例切换为备实例。

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