MySQL复制故障不再怕,这些步骤让你轻松应对

引言

在数据库的高可用性架构中,MySQL 的主从复制是一个关键技术,它允许数据从一个主服务器自动同步到多个从服务器。

然而,复制过程中可能会遇到各种问题,比如从服务器断电后重启,复制线程可能无法正常工作。

本文将介绍如何排查和解决这些问题。

故障现象

当从服务器因断电或其他原因重启后,执行SHOW SLAVE STATUS;查询状态时,如果Slave_SQL_RunningNo,这通常意味着复制的 SQL 线程没有正常运行。

可能的原因

1、复制线程未启动:复制线程可能没有在从服务器启动时自动运行。

2、复制错误:复制过程中可能遇到了错误,导致 SQL 线程停止。

3、时间不同步:主从服务器时间相差较大可能影响复制。

4、网络问题:主从服务器之间的网络连接可能存在问题。

故障排查步骤

1. 检查复制线程状态

首先,确认复制线程是否启动:

START SLAVE;

2. 查看错误日志

检查从服务器的错误日志,以确定复制过程中是否有错误发生。

3. 同步时间

确保主从服务器的时间同步,避免因时间差异导致的问题。

4. 检查网络连接

确认主从服务器之间的网络连接是否正常。

5. 查看详细状态

SHOW SLAVE STATUS\G

特别关注 Slave_IO_RunningSlave_SQL_Running 的状态,以及 Last_Error 字段。

特别是 Last_Error 字段信息,如果上述步骤都无法解决问题,可以 Last_Error 的信息进行排查。

故障解决

笔者这里根据 Last_Error 字段信息找到了问题:

从服务器同步数据时,从库数据表主键已存在,这将导致从服务器无法正确地应用数据变更,从而引发复制错误。

最后根据日志信息,重新配置了从服务器的复制位置,问题得以解决。

主从同步常用设置

MySQL主从仅同步指定库

在MySQL主从同步中,如果你只想同步特定的数据库,可以在主服务器上设置 binlog-do-db 参数

# [mysqld]模块
binlog-do-db=xxxx   二进制日志记录的数据库
binlog-ignore-db=xxxx 二进制日志中忽略数据库
# 以上任意指定其中一行参数就行,如果需要忽略多个库,则添加多行
  • replicate-do-db 设定需要复制的数据库
  • replicate-ignore-db 设定需要忽略的复制数据库
  • replicate-do-table 设定需要复制的表
  • replicate-ignore-table 设定需要忽略的复制表
  • replicate-wild-do-tablereplication-do-table 功能一样,但是可以通配符
  • replicate-wild-ignore-tablereplication-ignore-table 功能一样,但是可以加通配符

常用命令

# 主库操作

FLUSH TABLES WITH READ LOCK; # 锁定主库表,阻止对数据库进行任何的写操作

SHOW MASTER STATUS; # 获取主数据库的状态信息
                               
unlock tables;   # 数据库解锁,恢复对主数据库的操作

# 从库操作

CHANGE MASTER TO MASTER_HOST = '主库ip',    # 主服务器ip
MASTER_USER = '同步账号',                    # 主服务器登陆名
MASTER_PASSWORD = '同步密码',                # 主服务器登陆密码
MASTER_LOG_FILE = 'mysql-bin.000283',       # 二进制文件的名称
MASTER_LOG_POS = 2722491                    # 二进制文件的位置

start slave     # 启动从库复制进程

show slave status # 查看从库复制状态  

STOP SLAVE    # 停止从库复制进程

reset slave  # 清除从库复制进程信息

reset slave all  # 清除从库复制进程信息,并重新设置主库信息

总结

MySQL主从复制的故障排查和解决需要系统管理员具备一定的技术知识和经验。

通过上述步骤,大多数复制问题都可以得到有效的解决。

如果问题依然存在,可能需要更深入的分析和专业的技术支持。

– 欢迎点赞、关注、转发、收藏【我码玄黄】,各大平台同名。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我码玄黄

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值