mysql如何切换主从角色_mysql主从切换实战

发布时间 - 2026-02-03 00:00:00    点击率:
主从切换前必须确认Seconds_Behind_Master为0、Slave_IO_Running和Slave_SQL_Running均为Yes、原主库无长事务及未提交写入;需执行FLUSH TABLES WITH READ LOCK、MASTER_POS_WAIT等待追平、重置复制源并验证新主从数据一致性和连接指向。

主从切换前必须确认的 3 个状态

直接执行切换大概率导致数据丢失或复制中断。先检查这三项:
SHOW SLAVE STATUS\GSeconds_Behind_Master 必须为 0(或极小稳定值),不能是 NULL 或持续增长
Slave_IO_RunningSlave_SQL_Running 都必须是 Yes
• 原主库上 SHOW PROCESSLIST 中无长事务、无未提交的 INSERT/UPDATE/DELETE

停写 + 等待同步完成的标准操作

切勿在业务写入中强行切换。真实环境要这样收口:
• 在原主库执行 FLUSH TABLES WITH READ LOCK(会阻塞写,但确保后续 binlog 位置精确)
• 立即执行 SHOW MASTER STATUS,记下 FilePosition
• 到原从库运行 SELECT MASTER_POS_WAIT('xxx-bin.000001', 123456789),等待返回非 -1 值才表示已追平
• 此时再在原主库执行 UNLOCK TABLES

修改复制关系的两步关键命令

角色互换不是改个配置重启就行,必须重置复制源:
• 在**新主库**(原从库)上执行:
STOP SLAVE;
RESET SLAVE ALL;(清空 relay log 和 master.info,避免残留旧配置)
• 在**新从库**(原主库)上执行:
CHANGE REPLICATION SOURCE TO SOURCE_

HOST='new_master_ip', SOURCE_PORT=3306, SOURCE_USER='repl', SOURCE_PASSWORD='xxx', SOURCE_LOG_FILE='mysql-bin.000001', SOURCE_LOG_POS=123456789;
START SLAVE;

切换后必须验证的 3 个点

很多故障出现在“以为切成功了”之后:
• 新主库写入一条带时间戳的测试记录,比如 INSERT INTO test_switch VALUES (NOW());
• 立即在新从库查这条记录是否出现、时间是否一致
• 检查新从库的 SHOW SLAVE STATUS\GSeconds_Behind_Master 是否保持为 0,且 Retrieved_Gtid_SetExecuted_Gtid_Set 相等(若启用 GTID)
• 特别注意:应用连接字符串里的 host 和端口是否已指向新主库,DNS 缓存或连接池可能仍连着老地址

实际中最容易被跳过的,是原主库上的 FLUSH TABLES WITH READ LOCK 和后续的 MASTER_POS_WAIT 等待——有人图快直接 STOP SLAVE 就切,结果新主库漏掉最后几条 binlog,线上数据就对不上了。


# mysql  # word  # 端口  # ssl  # ai  # switch  # dns  # 数据丢失  # NULL  # select  # 字符串  # delete  # position  # 切成  # 追平  # 出现在  # 均为  # 就行  # 不上  # 这条  # 线上  # 重启  # 就对 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Laravel如何为API生成Swagger或OpenAPI文档  Laravel如何优化应用性能?(缓存和优化命令)  Laravel用户认证怎么做_Laravel Breeze脚手架快速实现登录注册功能  QQ浏览器网页版登录入口 个人中心在线进入  如何在新浪SAE免费搭建个人博客?  Java Adapter 适配器模式(类适配器,对象适配器)优缺点对比  如何用免费手机建站系统零基础打造专业网站?  Laravel如何使用.env文件管理环境变量?(最佳实践)  Python数据仓库与ETL构建实战_Airflow调度流程详解  Windows10电脑怎么查看硬盘通电时间_Win10使用工具检测磁盘健康  如何用美橙互联一键搭建多站合一网站?  如何用IIS7快速搭建并优化网站站点?  微信小程序 配置文件详细介绍  Angular 表单中正确绑定输入值以确保提交与验证正常工作  JavaScript数据类型有哪些_如何准确判断一个变量的类型  济南网站建设制作公司,室内设计网站一般都有哪些功能?  INTERNET浏览器怎样恢复关闭标签页_INTERNET浏览器标签恢复快捷键与方法【指南】  香港服务器网站测试全流程:性能评估、SEO加载与移动适配优化  jimdo怎样用html5做选项卡_jimdo选项卡html5实现与切换效果【指南】  详解免费开源的DotNet二维码操作组件ThoughtWorks.QRCode(.NET组件介绍之四)  如何制作新型网站程序文件,新型止水鱼鳞网要拆除吗?  无锡营销型网站制作公司,无锡网选车牌流程?  Swift中switch语句区间和元组模式匹配  Laravel如何记录日志_Laravel Logging系统配置与自定义日志通道  微信公众帐号开发教程之图文消息全攻略  Python3.6正式版新特性预览  Laravel控制器是什么_Laravel MVC架构中Controller的作用与实践  Laravel如何使用模型观察者?(Observer代码示例)  Laravel如何处理CORS跨域问题_Laravel项目CORS配置与解决方案  如何在IIS管理器中快速创建并配置网站?  新三国志曹操传主线渭水交兵攻略  独立制作一个网站多少钱,建立网站需要花多少钱?  如何快速搭建二级域名独立网站?  网站设计制作书签怎么做,怎样将网页添加到书签/主页书签/桌面?  如何用花生壳三步快速搭建专属网站?  如何在宝塔面板中创建新站点?  Laravel如何使用Blade模板引擎?(完整语法和示例)  如何快速搭建高效WAP手机网站?  零基础网站服务器架设实战:轻量应用与域名解析配置指南  为什么要用作用域操作符_php中访问类常量与静态属性的优势【解答】  怎么用AI帮你为初创公司进行市场定位分析?  详解一款开源免费的.NET文档操作组件DocX(.NET组件介绍之一)  百度浏览器如何管理插件 百度浏览器插件管理方法  Claude怎样写约束型提示词_Claude约束提示词写法【教程】  制作公司内部网站有哪些,内网如何建网站?  实例解析Array和String方法  Laravel怎么集成Vue.js_Laravel Mix配置Vue开发环境  Laravel怎么创建自己的包(Package)_Laravel扩展包开发入门到发布  Laravel如何配置任务调度?(Cron Job示例)  大同网页,大同瑞慈医院官网?