VastbaseG100

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

Menu

实例主备切换

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