0

0

mysql主从复制中如何处理故障转移_高可用解决方案

P粉602998670

P粉602998670

发布时间:2026-02-14 08:06:43

|

392人浏览过

|

来源于php中文网

原创

seconds_behind_master为null表明复制已停止而非延迟;需先检查slave_io_running和slave_sql_running状态,再结合relay_log_file、exec_master_log_pos等字段定位io或sql线程故障原因。

mysql主从复制中如何处理故障转移_高可用解决方案

主从复制中断后如何快速定位 Seconds_Behind_Master 为 NULL 的原因

SHOW SLAVE STATUS\GSeconds_Behind_Master 显示 NULL,基本可判定复制已停止,不是延迟大。常见原因有:Slave_IO_RunningSlave_SQL_RunningNo,需先查这两个字段。

  • Slave_IO_Running: No 多因网络不通、主库 binlog 被清理、主库 server_id 冲突或权限不足(复制用户缺失 REPLICATION SLAVE 权限)
  • Slave_SQL_Running: No 通常是 SQL 线程执行失败,如主从表结构不一致、唯一键冲突、误删从库数据导致 UPDATE/DELETE 找不到行
  • 注意 Relay_Log_FileRelay_Log_Pos 是否停滞不动——若不变,说明 IO 线程卡死;若持续变化但 Exec_Master_Log_Pos 不变,则是 SQL 线程阻塞

跳过单条报错事件:用 SET GLOBAL sql_slave_skip_counter 还是 gtid_next

取决于是否启用 GTID。未启用 GTID 时,SET GLOBAL sql_slave_skip_counter = 1 可跳过当前 relay log 中下一条事件,但仅对基于位置的复制有效,且需先 STOP SLAVE;GTID 模式下该命令被禁用,必须用 SET GTID_NEXT + 空事务方式绕过。

  • GTID 模式下跳过错误步骤:STOP SLAVESET GTID_NEXT = 'xxx-xxx-xxx:N'(N 是报错事务的 GTID 序号+1)→ BEGIN; COMMIT;SET GTID_NEXT = 'AUTOMATIC'START SLAVE
  • 跳过操作是临时补救,不能常态化使用;跳过后务必校验从库数据一致性,例如用 pt-table-checksum
  • 频繁需要跳过,说明主从环境存在结构性风险:比如主库执行了 DROP TABLE 但从库该表被应用逻辑依赖,或主库开了 sql_log_bin=0 导致某些变更未记入 binlog

手动故障转移时,如何安全提升从库为主库

核心原则:确保选中的从库已完全追平主库(Seconds_Behind_Master = 0Slave_SQL_Running = Yes),再停主库写入、切换应用连接。不能只看 IO 线程状态。

OneStory
OneStory

OneStory 是一款创新的AI故事生成助手,用AI快速生成连续性、一致性的角色和故事。

下载
  • 执行前在候选从库上运行:STOP SLAVE IO_THREAD,等 Seconds_Behind_Master 变为 0 后再 STOP SLAVE,避免 relay log 中残留未执行事件
  • 检查 SHOW MASTER STATUS 输出的 FilePosition(或 GTID set),这是新主库的起点,后续其他从库需据此 CHANGE MASTER TO
  • 修改新主库配置:设 read_only = 0,确认 log_bin 已开启(否则无法再作为主库提供 binlog),并更新应用连接地址
  • 原主库恢复后,不要直接 START SLAVE —— 它可能已产生新写入,需先备份其 binlog、重放至新主库,再以新主库为源重建复制关系

为什么推荐用 orchestratorMHA 而非纯脚本做自动故障转移

人工操作响应慢、易出错;而自动化工具的核心价值不在“切换快”,而在“判断准”和“闭环全”。比如 orchestrator 会主动探测拓扑、识别中间节点、验证数据一致性,并支持优雅降级(如仅读服务不中断)。

  • MHAmaster_ip_failover 脚本能自动挪动 VIP,但要求所有节点时间同步、SSH 免密通,且不兼容 MySQL 8.0+ 的默认认证插件(需显式设 default_authentication_plugin=mysql_native_password
  • orchestrator 支持 HTTP API 和 Web UI,故障时可人工干预暂停自动切换,比 cron + mysqladmin ping 类脚本更可控
  • 所有自动方案都绕不开一个事实:网络分区(split-brain)时,工具可能误判主库宕机。因此必须配合仲裁节点(如 etcd 或外部 ping check)或强制多数派投票机制,否则高可用反而变成高风险

真正难的不是切主,而是切完之后怎么让其他从库跟上新主、怎么防止脑裂、怎么让应用无感重连。这些环节一旦漏掉一环,所谓高可用就只是幻觉。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
数据分析工具有哪些
数据分析工具有哪些

数据分析工具有Excel、SQL、Python、R、Tableau、Power BI、SAS、SPSS和MATLAB等。详细介绍:1、Excel,具有强大的计算和数据处理功能;2、SQL,可以进行数据查询、过滤、排序、聚合等操作;3、Python,拥有丰富的数据分析库;4、R,拥有丰富的统计分析库和图形库;5、Tableau,提供了直观易用的用户界面等等。

922

2023.10.12

SQL中distinct的用法
SQL中distinct的用法

SQL中distinct的语法是“SELECT DISTINCT column1, column2,...,FROM table_name;”。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

334

2023.10.27

SQL中months_between使用方法
SQL中months_between使用方法

在SQL中,MONTHS_BETWEEN 是一个常见的函数,用于计算两个日期之间的月份差。想了解更多SQL的相关内容,可以阅读本专题下面的文章。

373

2024.02.23

SQL出现5120错误解决方法
SQL出现5120错误解决方法

SQL Server错误5120是由于没有足够的权限来访问或操作指定的数据库或文件引起的。想了解更多sql错误的相关内容,可以阅读本专题下面的文章。

1616

2024.03.06

sql procedure语法错误解决方法
sql procedure语法错误解决方法

sql procedure语法错误解决办法:1、仔细检查错误消息;2、检查语法规则;3、检查括号和引号;4、检查变量和参数;5、检查关键字和函数;6、逐步调试;7、参考文档和示例。想了解更多语法错误的相关内容,可以阅读本专题下面的文章。

369

2024.03.06

oracle数据库运行sql方法
oracle数据库运行sql方法

运行sql步骤包括:打开sql plus工具并连接到数据库。在提示符下输入sql语句。按enter键运行该语句。查看结果,错误消息或退出sql plus。想了解更多oracle数据库的相关内容,可以阅读本专题下面的文章。

1190

2024.04.07

sql中where的含义
sql中where的含义

sql中where子句用于从表中过滤数据,它基于指定条件选择特定的行。想了解更多where的相关内容,可以阅读本专题下面的文章。

583

2024.04.29

sql中删除表的语句是什么
sql中删除表的语句是什么

sql中用于删除表的语句是drop table。语法为drop table table_name;该语句将永久删除指定表的表和数据。想了解更多sql的相关内容,可以阅读本专题下面的文章。

433

2024.04.29

pixiv网页版官网登录与阅读指南_pixiv官网直达入口与在线访问方法
pixiv网页版官网登录与阅读指南_pixiv官网直达入口与在线访问方法

本专题系统整理pixiv网页版官网入口及登录访问方式,涵盖官网登录页面直达路径、在线阅读入口及快速进入方法说明,帮助用户高效找到pixiv官方网站,实现便捷、安全的网页端浏览与账号登录体验。

23

2026.02.13

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
MySQL 教程
MySQL 教程

共48课时 | 2.2万人学习

MySQL 初学入门(mosh老师)
MySQL 初学入门(mosh老师)

共3课时 | 0.3万人学习

简单聊聊mysql8与网络通信
简单聊聊mysql8与网络通信

共1课时 | 833人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号