首页 > 数据库 >MySQL 主从故障排查

MySQL 主从故障排查

时间:2023-12-25 10:36:19浏览次数:34  
标签:主库 状态 信息 排查 MySQL 日志 从库 主从

MySQL 主从复制是一种常见的数据库架构,用于提高数据库的可用性和性能。但是,在实际应用中,主从故障是难免的。本文详细介绍一套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 主从故障排查方案。根据具体情况,可能需要进行更多的排查步骤或使用其他工具来解决问题。

标签:主库,状态,信息,排查,MySQL,日志,从库,主从
From: https://blog.51cto.com/u_64214/8963849

相关文章

  • mysql开发包安装
    1.下载MySQL的yum源安装包,例如:wgethttp://dev.mysql.com/get/mysql57-community-release-el7-7.noarch.rpm2.安装yum源安装包,例如:sudoyumlocalinstallmysql57-community-release-el7-7.noarch.rpm3.安装mysql-community-devel-5.7.44,例如:sudoyuminstallmysql-community-d......
  • mysql读写分离
    一、简介MySQL读写分离是一种通过将数据库的读操作和写操作分配到不同的数据库服务器上来提高数据库性能和可扩展性的技术。这种架构的目标是通过分担数据库服务器的负载,提高系统的响应速度和可用性。下面是MySQL读写分离的一些基本概念和原理:读写分离概念:读操作:通常比写操作......
  • MySQL常用服务器状态命令(运维)
    查询当前服务器运行的进程方式一:查询正在运行的所有MySQL进程,包括进程ID、用户、主机、当前数据库、命令、时间等信息。showprocesslist;方式二:可以查询正在运行的所有MySQL进程,包括进程ID、用户、主机、当前数据库、命令、时间等信息,并且可以添加筛选条件及排序方式。s......
  • MySQL导入导出 —— mysqldump 简介及常见用法
    一、导出导出用户需要有导出对象的权限,例如导出表要有select权限、导出视图要有showview权限、导出触发器要有trigger权限、需要锁表时要有locktables权限等。如果dump文件中包含了GTID信息,则无法导入到未启用GTID的数据库(低于5.6.9版本的数据库不支持GTID,因此也无法导入到这......
  • mysql集群模式分析
    集群的好处高可用性:故障检测及迁移,多节点备份。可伸缩性:新增数据库节点便利,方便扩容。负载均衡:切换某服务访问某节点,分摊单个节点的数据库压力。集群要考虑的风险网络分裂:群集还可能由于网络故障而拆分为多个部分,每部分内的节点相互连接,但各部分之间的节点失去连接。脑裂......
  • Debian 安装 Mysql
    参考地址:https://dev.mysql.com/doc/mysql-apt-repo-quick-guide/en/1.下载aptRepohttps://dev.mysql.com/downloads/repo/apt/2.安装MysqlAptRepodpkg-imysql-apt-config_0.8.29-1_all.deb3.更新存储库包信息apt-getupdate4.安装Mysqlapt-get-yinstallmysql-s......
  • Linux 启动MySQL 报错:Status:“Server shutdown complete“ Error:13(权限不够)
    Status:“Servershutdowncomplete”Error:13(权限不够)我在银河麒麟V10系统中安装启动MySQL出现的一个错误:“Servershutdowncomplete”Error:13(权限不够),我在其他系统中没有遇到到。问题背景在国产化系统银河麒麟V10上尝试启动MySQL服务器时,可能会收到如下错误信息:Status:"Ser......
  • 【flink番外篇】4、flink的sink(内置、mysql、kafka、redis、clickhouse、分布式缓存、
    文章目录Flink系列文章一、maven依赖二、Jdbc/mysql示例1、maven依赖2、实现1)、userbean2)、内部匿名类实现3)、lambda实现4)、普通继承RichSinkFunction实现5)、完整代码3、验证本文介绍了Flink将数据sink到mysql中,其实是通过jdbc来将数据sink到rmdb中,mysql是一个常见的数据库,故......
  • MySQL核心技术原理之:MyISAM存储引擎
    作者:禅与计算机程序设计艺术1.背景介绍MyISAM是MySQL默认使用的存储引擎。它是一个高性能的静态表存储引擎,它保存了表结构信息及数据索引,适合于执行大量的静态SELECT操作。但是其不支持事物(transaction)、外键约束(foreignkeyconstraints)、FULLTEXT索引等特性。因此,对于需要使用这......
  • mysql 判断字符串结尾
    mysql判断字符串结尾CREATETABLE`tbl_str`(`id`INTDEFAULTNULL,`Str`VARCHAR(30)DEFAULTNULL)INSERTINTO`mytest`.`tbl_str`(`id`,`Str`)VALUES('1','helloworld'),('2','mysqlstring'),('3','......