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 主从故障排查就这些了。根据具体情况,可能需要进行更多的排查步骤或使用其他工具来解决问题。

相关推荐
小陈工1 小时前
Python Web开发入门(十七):Vue.js与Python后端集成——让前后端真正“握手言和“
开发语言·前端·javascript·数据库·vue.js·人工智能·python
0xDevNull5 小时前
MySQL数据冷热分离详解
后端·mysql
科技小花5 小时前
数据治理平台架构演进观察:AI原生设计如何重构企业数据管理范式
数据库·重构·架构·数据治理·ai-native·ai原生
一江寒逸5 小时前
零基础从入门到精通MySQL(中篇):进阶篇——吃透多表查询、事务核心与高级特性,搞定复杂业务SQL
数据库·sql·mysql
D4c-lovetrain5 小时前
linux个人心得22 (mysql)
数据库·mysql
阿里小阿希6 小时前
CentOS7 PostgreSQL 9.2 升级到 15 完整教程
数据库·postgresql
荒川之神6 小时前
Oracle 数据仓库雪花模型设计(完整实战方案)
数据库·数据仓库·oracle
做个文艺程序员6 小时前
MySQL安全加固十大硬核操作
数据库·mysql·安全
不吃香菜学java6 小时前
Redis简单应用
数据库·spring boot·tomcat·maven
一个天蝎座 白勺 程序猿7 小时前
Apache IoTDB(15):IoTDB查询写回(INTO子句)深度解析——从语法到实战的ETL全链路指南
数据库·apache·etl·iotdb