朝花夕拾16章MySQL Shell 8.9.1 InnoDB ClusterSet 中的 Fencing 集群
发生 紧急故障转移后,ClusterSet 各部分之间的事务集存在不同的风险,您必须隔离集群以防止写入流量或所有流量。
如果发生网络分区,则可能会出现脑裂情况,即实例失去同步并且无法正确通信以定义同步状态。脑裂可能发生在以下情况:DBA 决定强制选举一个副本集群作为主集群,创建多个主集群,从而导致脑裂情况。
在这种情况下,DBA 可以选择隔离原始主集群:
- 写道。
- 所有流量。
可以使用三种围栏操作:
-
.fenceWrites()
:停止向 ClusterSet 的主集群写入流量。副本集群不接受写入,因此此操作对它们没有影响。从 8.0.31 开始,可以在无效的副本集群上使用。此外,如果在禁用的副本集群上运行
super_read_only
,它将启用它。 -
.unfenceWrites()
:恢复写入流量。此操作可以在之前使用该操作隔离写入流量的集群上运行.fenceWrites()
。无法
*
cluster*.unfenceWrites()
在副本集群上使用。 -
.fenceAllTraffic()
:隔离集群,使其免受所有流量的影响。如果您使用 隔离了集群的所有流量.fenceAllTraffic()
,则必须使用dba.rebootClusterFromCompleteOutage()
MySQL Shell 命令重新启动集群。有关 的更多信息
dba.rebootClusterFromCompleteOutage()
,请参阅第 7.8.3 节 “从严重中断中重新启动集群”。
栅栏写入()
在副本集群上发出.fenceWrites()
会返回错误:
解释ERROR: Unable to fence Cluster from write traffic:
operation not permitted on REPLICA Clusters
Cluster.fenceWrites: The Cluster '' is a REPLICA Cluster
of the ClusterSet '' (MYSQLSH 51616)