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 】
相关推荐:
如何在沈阳梯子盘古建站优化SEO排名与功能模块?
企业网站制作这些问题要关注
Gemini怎么用新功能实时问答_Gemini实时问答使用【步骤】
canvas 画布在主流浏览器中的尺寸限制详细介绍
Laravel如何使用Socialite实现第三方登录?(微信/GitHub示例)
如何用花生壳三步快速搭建专属网站?
Laravel请求验证怎么写_Laravel Validator自定义表单验证规则教程
高防网站服务器:DDoS防御与BGP线路的AI智能防护方案
JavaScript中的标签模板是什么_它如何扩展字符串功能
Laravel怎么创建自己的包(Package)_Laravel扩展包开发入门到发布
Win11怎么关闭专注助手 Win11关闭免打扰模式设置【操作】
如何用低价快速搭建高质量网站?
Javascript中的事件循环是如何工作的_如何利用Javascript事件循环优化异步代码?
Android okhttputils现在进度显示实例代码
Android实现代码画虚线边框背景效果
利用python获取某年中每个月的第一天和最后一天
Laravel Session怎么存储_Laravel Session驱动配置详解
HTML5空格在Angular项目里怎么处理_Angular中空格的渲染问题【详解】
如何用狗爹虚拟主机快速搭建网站?
Bootstrap整体框架之JavaScript插件架构
成都网站制作公司哪家好,四川省职工服务网是做什么用?
详解Oracle修改字段类型方法总结
如何在IIS中配置站点IP、端口及主机头?
Laravel API路由如何设计_Laravel构建RESTful API的路由最佳实践
装修招标网站设计制作流程,装修招标流程?
nginx修改上传文件大小限制的方法
专业商城网站制作公司有哪些,pi商城官网是哪个?
Laravel怎么在Controller之外的地方验证数据
如何在阿里云虚拟服务器快速搭建网站?
如何选择PHP开源工具快速搭建网站?
Android利用动画实现背景逐渐变暗
Laravel PHP版本要求一览_Laravel各版本环境要求对照
如何用5美元大硬盘VPS安全高效搭建个人网站?
详解Nginx + Tomcat 反向代理 如何在高效的在一台服务器部署多个站点
Android中AutoCompleteTextView自动提示
Laravel如何创建自定义Artisan命令?(代码示例)
Laravel怎么做缓存_Laravel Cache系统提升应用速度的策略与技巧
Swift中循环语句中的转移语句 break 和 continue
Laravel Seeder填充数据教程_Laravel模型工厂Factory使用
Win11怎么开启自动HDR画质_Windows11显示设置HDR选项
制作无缝贴图网站有哪些,3dmax无缝贴图怎么调?
Laravel如何实现API资源集合?(Resource Collection教程)
Android GridView 滑动条设置一直显示状态(推荐)
为什么php本地部署后css不生效_静态资源加载失败修复技巧【技巧】
Python图片处理进阶教程_Pillow滤镜与图像增强
独立制作一个网站多少钱,建立网站需要花多少钱?
BootStrap整体框架之基础布局组件
如何快速生成可下载的建站源码工具?
Laravel怎么进行数据库事务处理_Laravel DB Facade事务操作确保数据一致性
高防服务器租用首荐平台,企业级优惠套餐快速部署


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