MySQL主从故障排查思路

一.确认主从状态


首先要确定主从复制的状态,可以通过执行以下命令来检查:

1)SHOW MASTER STATUS; 命令用于显示主库的状态信息,包括以下列:

  • File: 当前正在写入的二进制日志文件名。

  • Position: 文件中当前正在写入的位置。

  • Binlog_Do_DB: 主库正在复制的数据库列表。

  • Binlog_Ignore_DB: 主库正在忽略复制的数据库列表。

2)SHOW SLAVE STATUS; 命令用于显示从库的状态信息,包括以下列:

  • Slave_IO_State: 从库的 I/O 线程的当前状态。

  • Master_Host: 主库的主机名或 IP 地址。

  • Master_User: 从库用于连接主库的用户名。

  • Master_Port: 主库的端口号。

  • Connect_Retry: 从库尝试连接到主库的次数。

  • Master_Log_File: 主库当前正在写入的二进制日志文件名。

  • Read_Master_Log_Pos: 从库当前读取的主库二进制日志位置。

  • Relay_Log_File: 从库正在写入的中继日志文件名。

  • Relay_Log_Pos: 从库当前写入的中继日志位置。

  • Relay_Master_Log_File: 从库当前读取的主库二进制日志文件名。

  • Slave_IO_Running: 从库的 I/O 线程是否正在运行。

  • Slave_SQL_Running: 从库的 SQL 线程是否正在运行。

  • Last_Errno: 最后一个复制错误的错误码。

  • Last_Error: 最后一个复制错误的错误信息。

  • Seconds_Behind_Master: 从库与主库之间的复制延迟时间(秒)。

这些信息可以帮助确定主从复制的状态,检查复制是否正常运行以及是否存在任何错误或延迟。

二.检查网络连接


检查主库和从库之间的网络连接是否正常 ,可以使用 ping 命令或 telnet 命令来测试主从服务器之间的连通性。

  • ping 主库IP地址。

  • telnet 主库IP地址 3306。

如果网络连接正常,可以继续排查其他可能的问题。

三.检查主库状态


在主库上执行以下命令来检查主库的状态:

1) SHOW PROCESSLIST; 命令用于显示当前正在运行的 MySQL 进程列表,包括以下列:

  • Id: 进程的唯一标识符。

  • User: 进程所属的用户。

  • Host: 进程连接的主机名或 IP 地址。

  • db: 进程正在使用的数据库。

  • Command: 进程正在执行的命令类型。

  • Time: 进程运行的时间(秒)。

  • State: 进程的当前状态。

  • Info: 进程正在执行的具体 SQL 语句。

这些信息可以帮助确定当前正在运行的查询、连接和执行时间,以及进程的状态。

2 )SHOW ENGINE INNODB STATUS; 命令用于显示 InnoDB 存储引擎的状态信息

它提供了一个详细的报告,包含以下部分:

  • SEMAPHORES: 信号量的状态信息。

  • TRANSACTIONS: 事务的状态信息。

  • FILE I/O: 文件 I/O 操作的状态信息。

  • INSERT BUFFER AND ADAPTIVE HASH INDEX: 插入缓冲区和自适应哈希索引的状态信息。

  • LOG: 日志的状态信息。

  • BUFFER POOL AND MEMORY: 缓冲池和内存的状态信息。

  • ROW OPERATIONS: 行操作的状态信息。

  • SEMAPHORES: 信号量的状态信息。

  • TRANSACTIONS: 事务的状态信息。

  • FILE I/O: 文件 I/O 操作的状态信息。

  • INSERT BUFFER AND ADAPTIVE HASH INDEX: 插入缓冲区和自适应哈希索引的状态信息。

  • LOG: 日志的状态信息。

  • BUFFER POOL AND MEMORY: 缓冲池和内存的状态信息。

  • ROW OPERATIONS: 行操作的状态信息。

  • TRANSACTIONS: 事务的状态信息。

  • FILE I/O: 文件 I/O 操作的状态信息。

  • INSERT BUFFER AND ADAPTIVE HASH INDEX: 插入缓冲区和自适应哈希索引的状态信息。

  • LOG: 日志的状态信息。

  • BUFFER POOL AND MEMORY: 缓冲池和内存的状态信息。

  • ROW OPERATIONS: 行操作的状态信息。

这些信息可以用于分析和诊断 InnoDB 存储引擎的性能和问题。

四.检查从库状态


在从库上执行以下命令来检查从库的状态:

复制代码
SHOW SLAVE STATUS;

检查 Seconds_Behind_Master 的值,如果该值为 0,则表示从库与主库同步正常。如果该值不为 0,则表示从库与主库之间存在延迟。

五.检查错误日志


检查主库和从库的错误日志,查看是否有任何错误或警告信息。

可以通过执行以下命令来查看错误日志的位置:

复制代码
SHOW VARIABLES LIKE 'log_error';

然后,使用文本编辑器打开错误日志文件,查找其中的错误或警告信息。

重启主从服务:如果以上步骤没有找到问题,可以尝试重启主从服务。首先停止从库的复制进程,然后停止主库的 MySQL 服务,最后按照正确的顺序启动主从服务。

复制代码
STOP SLAVE;
STOP MASTER;
START MASTER;
START SLAVE;

重启服务后,再次检查主从状态和复制日志,确保复制正常。

数据一致性检查:如果主从复制仍然存在问题,可以执行数据一致性检查。可以使用 Percona Toolkit 或其他工具来比较主库和从库之间的数据差异,并尝试修复数据不一致的问题。

基本上MySQL 主从故障排查就这些了。根据具体情况,可能需要进行更多的排查步骤或使用其他工具来解决问题。

相关推荐
2601_9521963615 分钟前
计算机科学与技术专业应届生投商业分析岗,需要哪些额外能力?
数据库·oracle
皮皮学姐分享-ppx19 分钟前
地级市、省级人才政策强度测算(2000-2025)
大数据·数据库·人工智能·百度·高考
晚安日记wanna26 分钟前
大厂禁 JOIN 的真正原因,拆到第四层才清楚
数据库·后端·面试
java1234_小锋1 小时前
Redis 宣布正式接入 AI
数据库·人工智能·redis
这个DBA有点耶1 小时前
数据融合平台的下一代形态:数据库内核自己就能融合,为什么还要ETL?
数据库·架构·aigc
数据库小学妹1 小时前
MySQL大表怎么优化?2亿行表的分区归档与冷热分离实战
数据库·mysql·分库分表·分区表·数据库运维·冷热分离
91刘仁德1 小时前
RAG实战 - 向量数据库(Milvus)
数据库·milvus
资深技术分享员1 小时前
Geejing WebBuilder 日志、在线用户、系统监控,出问题时的三个第一现场
java·运维·数据库
我是小白呀2 小时前
n8n 实战:把 AcmeFlow 的 READY 事件接到 CRM 通知
数据库·人工智能·workflow
蓝速科技2 小时前
仓储盘点移动终端选型与蓝速科技 K10 实战方案
运维·数据库·人工智能·科技·材质