ITPub博客

首页 > 数据库 > > GaussDB 200常用集群维护操作-实例主备切换

GaussDB 200常用集群维护操作-实例主备切换

作者:GaussDB_数据库 时间:2020-01-13 15:00:31 0 删除 编辑

操作场景

集群在运行过程中,出于运维目的数据库管理员可能需要手工对DN或GTM做主备切换。例如发现DN或GTM主备自动failover后想恢复原有的主备角色,或者怀疑硬件故障想手动switchover。

 说明:

switchover为维护操作:确保集群状态正常,所有业务结束,并使用pgxc_get_senders_catchup_time()视图查询无主备追赶后,再进行switch操作。

switchover有普通主备切换和快速主备切换两种操作,普通主备切换适用于一般场景,快速主备切换适用于业务量巨大、并发量巨大的大压力场景。

快速主备切换需要待切换的一组GTM、DN实例状态全部是正常的。

快速主备切换有下面两种方式:

  • 单组DN主备实例切换。
    cm_ctl switchover -n nodeid -D /srv/BigData/mppdb/data2 -q
    其中,参数q表示快速切换,nodeid为需要升主的备实例所在节点ID,/srv/BigData/mppdb/data2为备DN或GTM的数据目录。
  • 切换所有GTM、DN实例状态为初始主备角色。
    cm_ctl switchover -a -q
    操作步骤
  1. 以操作系统用户omm登录GaussDB 200集群任一主机。执行source ${BIGDATA_HOME}/mppdb/.mppdbgs_profile命令启动环境变量。
  2. 在当前备DN或GTM所在的主机上执行如下命令。
    gs_om -t switch -h plat1 -D /srv/BigData/mppdb/data2
    plat1为当前备DN或GTM所在的主机。

    /srv/BigData/mppdb/data2为plat1备DN或GTM的数据目录。

     注意:

    对于同一对实例,上一次主备切换未完成,不能执行下一次切换。对于业务正在操作时,发起switchover,可能主机的线程无法停止导致switchover显示超时,实际后台仍然在运行,等主机线程停止后,switchover即可完成。比如在主机删除一个大的分区表时,可能无法响应switchover发起的信号。

示例

将DN备实例切换为主实例。假设备实例所在主机plat1,路径为“/gaussdb/data/data_dnS1”。

gs_om -t switch -h plat1 -D /gaussdb/data/data_dnS1
Switching instances.
Successfully switched instances.

异常处理

异常判断标准如下:

  • 业务压力下,主备实例切换时间长,这种情况不需要处理。
  • 切换过程中,因网络故障、磁盘满等原因造成主备实例连接断开,出现双备现象,切换超时,此时请参考如下步骤修复。
  1. 使用以下命令查询当前的实例状态。

    gs_om -t status -h plat1
    ...
    node : 1
    instance_id : dn_6001_6002
    node_ip : 192.168.0.11
    data_path : /gaussdb/data/data_dn1
    type : Datanode
    instance_state : Standby
    static_connections : 2
    HA_state : Need repair
    reason : Mode not matched
    gs_om -t status -h plat2
    ...
    node : 2
    instance_id : dn_6001_6002
    node_ip : 192.168.0.12
    data_path : /gaussdb/data/data_dnS1
    type : Datanode
    instance_state : Standby
    static_connections : 2
    HA_state : Need repair
    reason : Mode not matched

    查询结果显示两个实例的状态都为Standby,这种状态为异常状态。

  2. 查询主CM Server所在主机。
    gs_om -t status --detail  ## 查找主CM Server所在服务器
    登录主CM Server所在服务器。
  3. 查询主CM Server的进程号。

    ps -ef | grep cm_server   ## 查询主CM Server的进程
    omm 125124 1 0 Jul23 ? 00:01:12 ${BIGDATA_HOME}/mppdb/core/bin/cm_server

    125124为主CM Server的进程号。

  4. kill主CM Server的进程。

    kill -9 125124

    CM Server自动重启后会停止异常的主备实例,重新仲裁。

  5. 实例状态恢复后,重新切换实例,参见操作步骤。

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69959250/viewspace-3139441/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2020-01-06

  • 博文量
    2907
  • 访问量
    19281