gtm故障处理
gtm故障恢复¶
在SeaboxMPP数据库中,gtm是全局事务管理器,整个数据库事务的执行都依赖于gtm,因此一旦gtm故障,则SeaboxMPP数据库的事务就无法正常进行。gtm实例的故障原因多种多样:
-
由于网络或者硬件失效,导致gtm主机不可用
-
gtm实例没有运行
-
gtm实例的数据目录损坏或者丢失
如果SeaboxMPP数据库集群gtm发生故障,系统会自动对其进行恢复操作,具体的恢复步骤如下:
- 将gtm实例的
status
设置为d
(掉线)- 此时SeaboxMPP集群的所有操作都将被阻塞
- 向此gtm实例发送启动命令,尝试重新启动gtm
- 如果gtm已经启动,则gtm恢复成功
- 如果在设定的时间(默认30s)内,无法启动gtm,则将其
status
设置为b
(损坏) - 遍历SeaboxMPP集群拓扑信息,找到在线的coordinator主机
- 修改scdcs中gtm的拓扑信息,将其hostname修改为选定的 host,然后将其
status
修改为d
- 修改集群中所有 coordinator 的 seaboxsql.conf 配置文件,将其 gtm_host 修改为选定的 host
- 将 gtm 在新的 host 上启动,如果启动失败,则转到第4步继续执行
- 如果gtm启动成功,gtm 的数据存储在 scdcs 上,gtm会自动下载数据,继续提供服务
- gtm实例恢复完成
注意
- 如果SeaboxMPP数据库集群内,所有的coordinator所在的主机都不在线,则无法恢复gtm
- gtm实例发生故障,
status
为d
(掉线)到b
(损坏)之间的这段时间,SeaboxMPP集群的所有操作都会被阻塞,无法进行。默认的设定时间为30s,可以根据实际业务需求对此时间进行修改。例如,将此设定时间修改为10s:seabox config -c monitor_gtm_bad_time -v 10