首页/数据/数据库速查/从库提升为主库的完整命令
主从复制与高可用53 条

从库提升为主库的完整命令

提升动作清单:停复制、清元数据、关只读、确认服务端元信息(server_uuid 保留即可)、对外开放前做最后验证。

数据库速查数据更新于 2026-10-13

提升从库怎么做

提升从库的动作用一串固定命令完成:停复制、清理复制元数据、关闭只读保护,然后确认服务端元信息正常。这里最容易漏的是 RESET REPLICA ALL——它清掉历史通道与中继日志,防止新主残留旧复制配置;而 server_uuid 与 server_id 保持原样即可,不需要改动。整个流程最好固化成脚本并提前演练过,真到切换那一刻才不会手忙脚乱。

基本信息

步骤STOP REPLICA → RESET REPLICA ALL → 关闭只读 → 验证
元数据server_uuid 与 server_id 保持不变
写入验证写测试表并检查双写探针是否正常
后续动作提升后立即做一次全量备份作为新基线
前提确认从库已追平,没有落后事务

典型使用场景

  • 计划内的主从切换
  • 故障之后手工提升可用的从库
  • 演练提升流程并记录实际耗时
  • 下线旧主前的角色腾挪
  • 重建拓扑时确定新的主库

提升命令序列

提升命令序列
STOP REPLICA;
RESET REPLICA ALL;              -- 清空复制元数据与中继日志
SET GLOBAL super_read_only = OFF;
SET GLOBAL read_only = OFF;
-- 检查
SELECT @@GLOBAL.read_only, @@GLOBAL.super_read_only;
SELECT @@GLOBAL.gtid_executed;
SELECT @@GLOBAL.server_uuid;
-- 建议:提升后立即做一次全备,作为新拓扑的基线

步骤与容易漏的点

步骤作用容易漏的点
STOP REPLICA停止复制线程不停就直接提升会留下半开状态
RESET REPLICA ALL清空通道与中继日志漏做会残留旧通道
关闭 super_read_only允许写入只关 read_only 并不够
参数检查确认只读开关状态用 SELECT 确认,别凭记忆
立即备份建立新基线不做则下一次故障无从恢复
提升后的第一件事是验证写入:执行一条无害的写入或建一张测试表确认可写,再看应用侧是否恢复正常,别只盯着参数值。同时检查复制相关的后台线程是否已经清理干净,避免新旧状态混在一起。
旧主与其它从库的改挂是第二步:先保证新主可写、数据正确,再修拓扑。同时改动多个变量会让问题难以定位,处置时间也被拉长。
提升前必须确认从库已经追平:Seconds_Behind_Source 与 GTID 差集都要看,没追平就提升等于主动丢掉最后一段事务。

易错点

  • 忘记 RESET REPLICA ALL:新主残留旧通道,误配后重复拉取数据
  • 只关 read_only 不关 super_read_only:应用写入持续失败
  • 提升前不确认追平状态:直接丢掉最后一段事务
  • 提升后不立即备份:新主没有可用基线,下次故障无从下手

数据来源与参考

  • MySQL 8.0 Reference Manual: Promoting a Replica

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌