使用该
ReplicaSet
.setPrimaryInstance()
操作安全地将 ReplicaSet 的主实例更改为另一个实例。当前的主要实例降级为次要实例并变为只读,而提升的实例成为新的主要实例并变为可读写。所有其他辅助实例都更新为从新的主实例复制。已针对 ReplicaSet 引导的 MySQL Router 实例自动开始将读写客户端重定向到新的主节点。
为了能够安全地更改主实例,所有 ReplicaSet 实例都必须可以通过 MySQL Shell 访问并且具有一致的
GTID_EXECUTED
集合。如果主实例不可用,并且没有办法恢复它,则强制故障转移可能是唯一的选择,请参阅
第 9.7 节,“强制一个新的主实例”。
在更改主实例期间,提升的实例与旧的主实例同步,确保在提交拓扑更改之前应用主实例上存在的所有事务。如果此同步步骤花费的时间太长或无法在任何辅助实例上执行,则操作将中止。在这种情况下,必须修复辅助实例或从 ReplicaSet 中删除辅助实例才能进行故障转移。