ADMIN ACTIVATE STANDBY
ADMIN ACTIVATE STANDBY 用于在计划外切换(Failover)场景下将 standby 集群激活为 primary。支持两种模式:FLASHBACK(回退到一致性快照点)和 FORCE_COMMIT(强制提交已接收数据)。
该语句必须在当前 standby 集群上执行。
警告:
在执行
ACTIVATE STANDBY前,必须确认原primary已彻底停机或网络隔离,否则可能导致“脑裂”现象,造成不可逆的数据冲突和不一致。
所需权限
执行该语句需要 SUPER 权限。
语法图
ADMIN ACTIVATE STANDBY MODE = FLASHBACK | FORCE_COMMIT;参数说明
| 参数 | 说明 |
|---|---|
FLASHBACK | 将 standby 的数据回退到一个一致性快照点后激活为 primary。适用于异步复制场景,或同步复制场景但无法确认原 primary 状态 |
FORCE_COMMIT | 强制提交 standby 已接收的所有数据后激活为 primary。仅限同步复制场景,可确保 RPO = 0 |
使用 FORCE_COMMIT 前必须满足以下条件:
- 当前复制为同步复制(
MAXIMUM_PROTECTION或MAXIMUM_AVAILABILITY) - 原
primary尚未执行ADMIN DROP LOG REPLICATION - 已确认原
primary已彻底停机或网络隔离
若已在原 primary 上执行过 ADMIN DROP LOG REPLICATION,只能使用 FLASHBACK。
示例
使用 FLASHBACK 模式激活:
ADMIN ACTIVATE STANDBY MODE = FLASHBACK;使用 FORCE_COMMIT 模式激活:
ADMIN ACTIVATE STANDBY MODE = FORCE_COMMIT;MySQL 兼容性
ADMIN ACTIVATE STANDBY 语句是 TiDB 对 MySQL 语法的扩展。