ITPub博客

首页 > 数据库 > > 应急处理-单AZ拉起

应急处理-单AZ拉起

作者:GaussDB_数据库 时间:2020-01-08 17:19:09 0 删除 编辑

在部署两地三中心集群时,如果生产中心AZ1和同城的灾备中心AZ2同时发生故障(例如地震灾害等情况),异地灾备中心AZ3仅作为一个备份,集群不会自动切换到AZ3运行,此时需要手动拉起AZ3来提供服务。

单AZ拉起可能丢失部分数据,请谨慎使用此操作。

  • 指定单AZ拉起的操作,只适用于两地三中心3个AZ,且AZ1、AZ2同时故障的场景。在其他场景下,此操作可能会导致数据库服务异常。
  • 拉起后的单AZ,数据库只能进行DML操作,不能进行DDL操作。【仅适用于使用Zenith_HA内核的单AZ拉起】
  • 拉起后的单AZ,数据库可对外提供正常服务。【仅适用于使用Zenith_Zpaxos内核的单AZ拉起】
  • 拉起指定单AZ之后,禁止使用单AZ拉起功能再拉起其他AZ。如果继续拉起其他AZ,可能会导致集群脑裂。
  • 拉起AZ3之后,集群拓扑结构中仍包含AZ1和AZ2的实例信息,此时被拉起的AZ3实例状态显示为ONLINE,其他AZ实例状态显示为OFFLINE。使用启停集群命令时会作用于整个集群(包含AZ1,AZ2,AZ3)。【仅适用于使用Zenith_HA内核的单AZ拉起】
  • 拉起AZ3时,AZ3中备DN实例在集群启动后会升为主DN,在业务量大的场景下,备机日志落后较多持续重演,可能会导致首次拉起超时失败,这种情况下,等待集群状态为非Unavailable时,备机补齐日志正常后,可重新拉起AZ3。【仅适用于使用Zenith_HA内核的单AZ拉起】
  • 进行过主备切换后,如果当前集群状态中balanced字段为false,再继续执行单AZ拉起,集群状态中balanced字段会显示为true,但实际集群DN主备状态并未改变。

前提条件

指定拉起的AZ中部署2个或2个以上的ETCD实例,且同时部署CM SERVER、CN实例,每个DN组至少部署一个DN实例。

注意事项

单AZ拉起暂不支持安装有GTS的集群。

操作步骤

  1. 以omm用户身份登录GaussDB 100所在的任意服务器。
  2. 使用如下命令指定单AZ拉起。

    AZ3为指定要拉起的AZ。
    gs_om -t start --az=AZ3

  3. 清理每个DN残留两阶段事务。

    用户可根据自己的情况进行提交或回滚两阶段事务,下面以回滚所有DN上残留的两阶段事务为例。
    1. 连接DN。
      zsql omm@127.0.0.1:40000
      Please enter password:
      ***********

      40000为DN的端口号,可以通过查看安装配置文件clusterconfig.xml中dataPortBase对应的值确认自定义的DN端口号。

      127.0.0.1为本节点IP,如果要连接其他节点上的DN,此处应为其他节点的IP。

    2. 回退两阶段事务。
      SELECT GLOBAL_TRAN_ID FROM SYS.SYS_PENDING_TRANS;
      如果上述SELECT查询有结果,说明有残留的两阶段事务,那么需要通过rollback来回滚残留事务。

      执行命令ROLLBACK PREPARED 'XXX',其中XXX为上一步SELECT返回的GLOBAL_TRAN_ID,完成对XXX事务的回滚,如下:

      ROLLBACK PREPARED 'XXX';
      对单AZ内的每一个DN执行3的操作。
    3. 回滚操作可能导致数据不一致,请谨慎操作。

    4. 退出连接。

  4. 使用如下命令恢复data_nodes$系统表的定时检查和更新操作。
    omm@plat1:~> cm ctl updateCNSwitchCmd updateNodeRoute=ON -e $ETCD_ADDRESS
    示例

示例1:拉起指定的AZ,以拉起AZ3为例。

使用Zenith_HA内核的单AZ拉起:

omm@plat1:~> gs_om -t start --az=AZ3
Starting az
=========================================
Starting specified az in the cluster.
Clean old cm and etcd for specified AZ.
Successfully clean old cm and etcd for specified AZ.
Restarting etcd for specified AZ.
Successfully restarted etcd for specified AZ.
Checking the etcd status.
Successfully checked the etcd status.
Restarting cm agent for specified AZ.
Successfully restarted cmAgent for specified AZ.
start the specified az in the cluster.
..............................80s
======================================================================
Finish to start the specified az in the cluster.
示例2:连接DN,并查询是否有残留的两阶段事务,如果有回退残留事务。
omm@plat1:~>zsql omm@127...1:8000
Please enter password:
***********
connected.
SQL> SELECT GLOBAL_TRAN_ID FROM SYS.PENDING_TRANS$;
GLOBAL_TRAN_ID
----------------
T82333_cn5001
(1 rows)
SQL> ROLLBACK PREPARED 'T82333_cn5001';
示例3:恢复data_nodes系统表的定时检查和更新。
omm@plat1:~> cm ctl updateCNSwitchCmd updateNodeRoute=ON -e $ETCD_ADDRESS
Set output to terminal.

错误排查

如果集群单AZ拉起失败,请根据日志文件中的日志信息排查错误,参见管理日志。

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

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

注册时间:2020-01-06

  • 博文量
    2907
  • 访问量
    19243