mysql主从复制如何切换主库_mysql主从切换流程
发布时间 - 2025-12-26 00:00:00 点击率:次主库切换需确保从库同步完成:Seconds_Behind_Master=0且复制线程正常;原主库加读锁并记录binlog位点;目标从库停复制、重置配置、关闭read_only;其余从库重新CHANGE MASTER TO新主;最后解锁、验证同步与写入、更新路由。
确认从库已同步完成
切换前必须确保从库的复制已追上主库,否则会丢失数据。执行 SHOW SLAVE STATUS\G,重点检查以下两项:
- Seconds_Behind_Master = 0:表示从库没有延迟
- Slave_IO_Running 和 Slave_SQL_Running 都为 Yes:说明复制线程正常运行
若存在延迟,可等待同步完成,或在业务低峰期操作;必要时用 SELECT MASTER_POS_WAIT() 等待指定 binlog 位置。
停止原主库写入并刷新读写状态
为避免切主过程中产生新数据,需临时阻断原主库的写操作:
- 在原主库执行 FLUSH TABLES WITH READ LOCK;(全局只读锁)
- 再执行 SHOW MASTER STATUS; 记下当前 binlog 文件名和 position,后续从库需基于此点恢复
- 保持连接不退出,防止锁自动释放
此时应用应停止向原主库写入,可配合服务层配置或代理(如 ProxySQL、HAProxy)将流量切至只读模式。
提升从库为新主库
在目标从库上执行以下步骤:
- 停止复制:STOP SLAVE;
- 重置复制信息(清除旧主配置):RESET SLAVE ALL;
- 开启写能力(如有 read_only=ON,需关闭):SET GLOBAL read_only = OFF;
- 确认无误后,该库即可作为新主库接受写请求
注意:若使用 GTID 复制,还需记录 SELECT @@GLOBAL.GTID_EXECUTED;,供后续其他从库重新指向新主时使用。
重新配置其他从库指向新主
原集群中其余从库需重新指向新的主库:
- 在每个从库上先执行 STOP SLAVE;
- 使用 CHANGE MASTER TO 指向新主库 IP、端口、账号密码,并指定正确的 binlog 文件与 position(或 GTID)
- 启动复制:START SLAVE;,再用 SHOW SLAVE STATUS\G 验证
若原主库后续要转为从库,也按同样方式配置它指向新主库即可。
清理与验证
切换完成后需做几项收尾工作:
- 在原主库执行 UNLOCK TABLES; 解除读锁
- 检查新主库的写入是否正常(如插入测试数据、查 binlog 是否更新)
- 验证各从库同步状态、延迟、错误日志(Last_IO_Errno、Last_SQL_Errno)
- 更新应用配置、DNS、中间件路由规则等,确保后续流量正确打到新主库
整个过程建议在维护窗口内操作,并提前做好回滚预案(如保留原主库 binlog、备份关键位点)。
# mysql
# 端口
# ai
# proxy
# 路由
# dns
# 中间件
# select
# 线程
# position
# 位点
# 如有
# 再用
# 追上
# 两项
# 都为
# 则会
# 还需
# 时用
# 正常运行
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
Laravel如何部署到服务器_线上部署Laravel项目的完整流程与步骤
HTML透明颜色代码怎么让下拉菜单透明_下拉菜单透明背景指南【技巧】
如何用搬瓦工VPS快速搭建个人网站?
JavaScript中的标签模板是什么_它如何扩展字符串功能
Laravel中间件如何使用_Laravel自定义中间件实现权限控制
Win11怎么更改系统语言为中文_Windows11安装语言包并设为显示语言
php中::能调用final静态方法吗_final修饰静态方法调用规则【解答】
Laravel如何升级到最新的版本_Laravel版本升级流程与兼容性处理
微信小程序 配置文件详细介绍
Laravel如何发送系统通知?(Notification渠道示例)
轻松掌握MySQL函数中的last_insert_id()
Win11怎么恢复误删照片_Win11数据恢复工具使用【推荐】
企业网站制作这些问题要关注
Laravel如何处理文件下载请求?(Response示例)
Laravel怎么调用外部API_Laravel Http Client客户端使用
Laravel如何使用Laravel Vite编译前端_Laravel10以上版本前端静态资源管理【教程】
Laravel如何实现RSS订阅源功能_Laravel动态生成网站XML格式订阅内容【教程】
Laravel如何保护应用免受CSRF攻击?(原理和示例)
Android中AutoCompleteTextView自动提示
浅谈javascript alert和confirm的美化
如何快速配置高效服务器建站软件?
Laravel如何配置Horizon来管理队列?(安装和使用)
Python文件操作最佳实践_稳定性说明【指导】
微博html5版本怎么弄发超话_超话进入入口及发帖格式要求【教程】
HTML5空格和margin有啥区别_空格与外边距的使用场景【说明】
javascript和jQuery中的AJAX技术详解【包含AJAX各种跨域技术】
如何在 React 中条件性地遍历数组并渲染元素
Laravel如何使用Gate和Policy进行权限控制_Laravel权限判定与策略规则配置
如何在 Go 中优雅地映射具有动态字段的 JSON 对象到结构体
网站制作怎么样才能赚钱,用自己的电脑做服务器架设网站有什么利弊,能赚钱吗?
Laravel如何记录日志_Laravel Logging系统配置与自定义日志通道
Python进程池调度策略_任务分发说明【指导】
Laravel如何清理系统缓存命令_Laravel清除路由配置及视图缓存的方法【总结】
详解阿里云nginx服务器多站点的配置
JavaScript如何实现类型判断_typeof和instanceof有什么区别
香港服务器网站搭建教程-电商部署、配置优化与安全稳定指南
Laravel如何处理CORS跨域问题_Laravel项目CORS配置与解决方案
Laravel任务队列怎么用_Laravel Queues异步处理任务提升应用性能
如何在Windows环境下新建FTP站点并设置权限?
EditPlus中的正则表达式实战(6)
html5如何设置样式_HTML5样式设置方法与CSS应用技巧【教程】
如何使用 jQuery 正确渲染 Instagram 风格的标签列表
青岛网站建设如何选择本地服务器?
Python正则表达式进阶教程_复杂匹配与分组替换解析
如何快速搭建高效香港服务器网站?
太平洋网站制作公司,网络用语太平洋是什么意思?
jimdo怎样用html5做选项卡_jimdo选项卡html5实现与切换效果【指南】
Laravel如何实现文件上传和存储?(本地与S3配置)
浏览器如何快速切换搜索引擎_在地址栏使用不同搜索引擎【搜索】
高防网站服务器:DDoS防御与BGP线路的AI智能防护方案


aster=0且复制线程正常;原主库加读锁并记录binlog位点;目标从库停复制、重置配置、关闭read_only;其余从库重新CHANGE MASTER TO新主;最后解锁、验证同步与写入、更新路由。