跳转至

gtm故障处理

gtm故障恢复

在SeaboxMPP数据库中,gtm是全局事务管理器,整个数据库事务的执行都依赖于gtm,因此一旦gtm故障,则SeaboxMPP数据库的事务就无法正常进行。gtm实例的故障原因多种多样:

  • 由于网络或者硬件失效,导致gtm主机不可用

  • gtm实例没有运行

  • gtm实例的数据目录损坏或者丢失

如果SeaboxMPP数据库集群gtm发生故障,系统会自动对其进行恢复操作,具体的恢复步骤如下:

  1. 将gtm实例的status设置为d(掉线)
    • 此时SeaboxMPP集群的所有操作都将被阻塞
  2. 向此gtm实例发送启动命令,尝试重新启动gtm
  3. 如果gtm已经启动,则gtm恢复成功
  4. 如果在设定的时间(默认30s)内,无法启动gtm,则将其status设置为b(损坏)
  5. 遍历SeaboxMPP集群拓扑信息,找到在线的coordinator主机
  6. 修改scdcs中gtm的拓扑信息,将其hostname修改为选定的 host,然后将其status修改为d
  7. 修改集群中所有 coordinator 的 seaboxsql.conf 配置文件,将其 gtm_host 修改为选定的 host
  8. 将 gtm 在新的 host 上启动,如果启动失败,则转到第4步继续执行
  9. 如果gtm启动成功,gtm 的数据存储在 scdcs 上,gtm会自动下载数据,继续提供服务
  10. gtm实例恢复完成

注意

  1. 如果SeaboxMPP数据库集群内,所有的coordinator所在的主机都不在线,则无法恢复gtm
  2. gtm实例发生故障,statusd(掉线)到b(损坏)之间的这段时间,SeaboxMPP集群的所有操作都会被阻塞,无法进行。默认的设定时间为30s,可以根据实际业务需求对此时间进行修改。例如,将此设定时间修改为10s:
    seabox config -c monitor_gtm_bad_time -v 10