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