MySQL Shell 9.0  /  MySQL InnoDB 复制集  /  更改主实例

9.7 更改主实例

使用 ReplicaSet.setPrimaryInstance() 操作可以安全地将复制集的主实例更改为另一个实例。当前主实例将降级为从属实例并变为只读,而提升的实例将成为新的主实例并变为读写。所有其他从属实例将更新为从新的主实例复制。已针对复制集引导的 MySQL 路由器实例会自动开始将读写客户端重定向到新的主实例。

为了能够安全地更改主实例,所有复制集实例都必须可以被 MySQL Shell 访问并具有一致的 GTID_EXECUTED 集。如果主实例不可用,并且无法恢复它,则强制故障转移可能是唯一的选择,请参见 第 9.8 节,“强制新的主实例”

在更改主实例期间,提升的实例会与旧的主实例同步,以确保在提交拓扑更改之前应用了主实例上的所有事务。如果此同步步骤花费的时间过长或在任何从属实例上都不可能进行,则操作将中止。在这种情况下,必须修复从属实例或将其从复制集中删除才能进行故障转移。