系统组的故障恢复
Ignite 3 集群包括两个系统 Raft 组,这两个组对于集群的正常运行都是必不可少的。
对系统 Raft 组执行故障恢复操作可以恢复永久多数损失。当系统 Raft 组失去多数时,它将变得不可用。当 CMG 不可用时,集群本身仍然可用,但有限制:它仍然可以处理大多数操作,但无法加入新节点、启动/重启现有节点以及构建新索引。当 MG 不可用时,集群将不可用,它甚至无法处理 GET/PUT/SQL 请求。
提示
数据分区的故障恢复在单独的章节中介绍。
当多数丢失后,可以在控制台或日志文件的集群日志中看到。当 Raft 组变为不可用时,日志将显示类似下面的内容:Send with retry timed out [retryCount = 11, groupId = cmg_group].Send with retry timed out [retryCount = 11, groupId = metastorage_group].
。
CMG 故障的指标是节点在restart
命令后未启动,这在日志中反映为Local CMG state recovered, starting the CMG
,但是后面没有:Successfully joined the cluster
。
如果节点在 CMG 可用而 MG 不可用时启动,则日志将显示:Metastorage info on start
,但是后面没有:Performing MetaStorage recovery
。
警告
将故障恢复命令应用于系统节点组时要小心,这些命令可能会导致脑裂
(将集群拆分为两个集群),所以仅当 CMG/MG 的多数永久丢失时,才使用 recovery
命令作为最后的手段。
1.集群管理组
如果 CMG 失去多数:
重启 CMG 节点以恢复丢失的多数;
如果该操作失败,需要使用以下命令(手动或通过 REST)强制分配新的多数:
recovery cluster reset --url=<node-url> --cluster-management-group=<new-cmg-nodes>
。该命令将发送到
--url
参数指定的节点,该节点必须属于new-cmg-nodes
Raft 组,此节点将成为修复导体
,并发起reset
过程。上述过程可能会因以下原因而失败:
new-cmg-nodes
中指定的某些节点不在物理拓扑中;修复导体
没有发起该过程所需的所有信息。
如果某些节点由于网络原因而关闭或不可用(因此未参与修复):
- 启动这些节点(或恢复网络连接并重启它们);
- 使用以下命令(手动或通过 REST)将这些节点迁移到修复的集群:
recovery cluster migrate --old-cluster-url=<url-of-old-cluster-node> --new-cluster-url=<url-of-new-cluster-node>
。
2.元存储组
如果 MG 失去多数:
重启 MG 节点(或至少重启 Ignite 节点内的 Raft 节点);
如果该操作失败:
确保每个可以启动的节点都已启动并加入集群;
使用以下命令(手动或通过 REST)强制分配新的多数:
recovery cluster reset --url=<existing-node-url> [--cluster-management-group=<new-cmg-nodes>] --metastorage-replication-factor=N
。N
是修复后 MG 中投票 Raft 节点的请求数量,如果省略--cluster-management-group
,则该命令将从 CMG 领导者获取当前 CMG 投票成员集,如果 CMG 不可用,则该命令会失败。该命令将发送到
--url
指定的节点,此节点将成为修复导体,并发起reset
过程。如果修复导体无法修复 MG,则必须手动重复该过程(没有故障转移)。
如果某些节点由于网络原因而关闭或不可用(因此未参与修复):
- 启动这些节点(或恢复网络连接并重启它们);
- 使用以下命令(手动或通过 REST)将这些节点迁移到修复的集群:
recovery cluster migrate --old-cluster-url=<url-of-old-cluster-node> --new-cluster-url=<url-of-new-cluster-node>
。
提示
如果其中一个节点的元存储中有一个修订,而参与修复的任何节点上都没有该修订,这意味着其元存储已与MG领导者的元存储不同。这样的节点将不允许加入集群,它的启动将失败,并出现MetastorageDivergedException(错误代码META-7)
。这时需要将该节点中的数据清除,然后将其作为空节点加入集群。
18624049226