gaussdb 双机维护【切换双机】【06】

双机正常时的切换

前提条件

  • GaussDB双机正常运行,已经建立日志同步。
  • 双机需在同一地域,不同地域的双机无法进行切换

背景信息

  • 场景一:当数据库升级时,先停止备机,升级备机数据库,然后启动备机,当主备关系稳定后切换主备机,然后升级原来的主机数据库,这样可保证业务零中断,数据零丢失,提供高可靠性数据库服务。
  • 场景二:在复杂的应用系统中,除数据库软件还有其他应用进程,当这些进程产生异常时需进行切换,则为了避免数据丢失,主备数据库也要跟着切换。
  • switchover 命令必须在双机正常状态下执行,它会保证在切换过程中不会存在任何数据丢失。
  • switchover 命令在平滑切换时可能会因为磁盘IO阻塞导致切换超时失败,此时switchover仍然可能继续进行,并最终切换成功。您在 switchover 命令执行失败后,仍可继续尝试执行此命令。
  • 说明: 可用相关命令设置切换等待时间,如果切换时间大于此等待时间,会导致切换超时失败。

switchover 命令执行超时失败后可采取以下两种方案。

  • 方案一:停止主机,并将备机强制升主。
  • 方案二:分别停止主机和备机,然后重新启动主机和备机。

示例
在备机上执行gs_ctl query命令,查询双机状态看是否满足切换条件。

 Ha state:
        LOCAL_ROLE                     : Standby
        STATIC_CONNECTIONS             : 1
        DB_STATE                       : Normal
        DETAIL_INFORMATION             : Normal


 Senders info:
        No information
 Receiver info:
        RECEIVER_PID                   : 32388
        LOCAL_ROLE                     : Standby
        PEER_ROLE                      : Primary
        PEER_STATE                     : Normal
        STATE                          : streaming
        SENDER_SENT_LOCATION           : 0/B000000
        SENDER_WRITE_LOCATION          : 0/B000000
        SENDER_FLUSH_LOCATION          : 0/B000000
        SENDER_REPLAY_LOCATION         : 0/B000000
        RECEIVER_RECEIVED_LOCATION     : 0/B000000
        RECEIVER_WRITE_LOCATION        : 0/B000000
        RECEIVER_FLUSH_LOCATION        : 0/B000000
        RECEIVER_REPLAY_LOCATION       : 0/B000000
        SYNC_PERCENT                   : 100%
        CHANNEL                        : 10.144.197.189:51506 <--10.144.197.188:1357

说明:DB_STATE字段为Normal,SYNC_PERCENT为100%,说明双机状态正常,可以进行正常切换。

在备机上执行gs_ctl switchover命令,进行双机角色切换。

gaussdba@linux:~/opt/data> gs_ctl switchover
waiting for server to switchover........ done
switchover completed

在备机上执行gs_ctl query命令,进行状态查询,确认角色切换成功。

 gaussdba@linux:~> gs_ctl query
 Ha state:
        LOCAL_ROLE                     : Primary
        STATIC_CONNECTIONS             : 1
        DB_STATE                       : Normal
        DETAIL_INFORMATION             : Normal

 Senders info:
        SENDER_PID                     : 6773
        LOCAL_ROLE                     : Primary
        PEER_ROLE                      : Standby
        PEER_STATE                     : Normal
        ......                           ......
        ......                           ......

说明:在备机上查询LOCAL_ROLE:Primary,PEER_ROLE:Standby说明主机已经降为备机,备机已经升为主机,角色转换成功。

主机故障时的切换

前提条件
主机出现故障,并且无法及时恢复。

说明: 本条件并不是必须条件,在主备机正常同步的情况下,也可以使用 failover 命令强行将备机升为主机,但并不建议这么做,因为这样会导致数据库双主

  • failover操作可以加-M参数,指定数据库切换之后的模式,但只允许指定的模式高于自己的模式,这样允许将次级联备机、级联备机或备机升为主机,将次级联备机、级联备机升为备机,或者将次级联备机升为级联备机。如果不加-M参数,默认将数据库切换成主机。
  • failover操作只会将备机升为主机,不会主动修复故障的原主机。

场景一:failover操作不加-M参数,默认将数据库升为主机。在备机上执行如下命令。

gs_ctl failover

在备机上查询是否升为主机。

gs_ctl query

场景二:failover操作加-M 参数,指定数据库切换后的模式。在次级联备机上执行如下命令。

gs_ctl failover -M standby

在次级联备机上查询是否升为备机。

gs_ctl query

场景三:failover操作-M参数指定的模式低于自己的模式,报错退出。以级联备机模式启动数据库。

gs_ctl start -M cascadestandby

将级联备机升为次级联备机,报错退出。

gs_ctl failover -M cascadestandby1

示例一:failover操作不加-M参数,默认将数据库升为主机。

在备机上执行gs_ctl failover命令,进行升主。

gaussdba@linux:~/opt/data> gs_ctl failover
waiting for server to failover.... done
failover completed

在备机上查询双机状态,确认本端已经升为主机。

 Ha state:
        LOCAL_ROLE                     : Primary
        STATIC_CONNECTIONS             : 2
        DB_STATE                       : Normal
        DETAIL_INFORMATION             : Normal

 Senders info:
        No information
 Receiver info:
        No information

说明:可以看到LOCAL_ROLE:Primary ,说明备机已经升为主机。

示例二:failover操作加-M参数,指定数据库切换后的模式。

在次级联备机上执行gs_ctl failover -M standby命令,升为备机。

gaussdba@linux:~/opt/data> gs_ctl failover -M standby
waiting for server to failover.... done
failover completed

在次级联备机上查询是否升为备机。

 Ha state:
        LOCAL_ROLE                     : Standby
        STATIC_CONNECTIONS             : 0
        DB_STATE                       : NeedRepair
        DETAIL_INFORMATION             : Disconnected

 Senders info:
        No information
 Receiver info:
        No information

说明:可以看到LOCAL_ROLE:Standby ,说明次级联备机已经升为备机。

示例三:failover操作-M参数指定的模式低于自己的模式,报错退出。

以级联备机模式启动数据库。

gaussdba@linux:~/opt/data> gs_ctl start -M cascadestandby
server starting.... done
server started

将级联备机升为次级联备机,报错退出。

gaussdba@linux:~/opt/data> gs_ctl failover -M cascadestandby1
server mode is higher than failover mode
  • 0
    点赞
  • 1
    收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Zhao.Mr

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值