MySQL主从同步故障修复

Updated on with 0 views and 0 comments

MySQL主从同步1032故障修复操作记录

一、故障信息

  1. 环境:Docker MySQL8.0,一主两从、跨机器独立部署
  2. 故障现象:从库同步中断,SQL线程报错 1032,提示记录不存在;原因为前期多次跳过同步错误,导致主从数据差异堆积、并行复制MTS线程崩溃。
  3. 处理方案:采用 XtraBackup 全新全量物理备份,重建两台从库数据与主从复制(根治方案,放弃mysqldump/pt工具临时修复)。

二、主库操作(192.168.1.19)

1. 全新全量物理备份

mkdir -p /data/xtbk/full_new
xtrabackup --user=root --password='Master@123' \
--host=127.0.0.1 --port=3306 \
--datadir=/data/mysql/data \
--target-dir=/data/xtbk/full_new \
--backup

2. 备份预处理(应用redo日志,使备份可直接恢复)

xtrabackup --prepare --target-dir=/data/xtbk/full_new

3. 获取同步Binlog位点

cat /data/xtbk/full_new/xtrabackup_binlog_info

结果:mysql-bin.000017 157

4. 打包备份并下发至两台从库

cd /data/xtbk
tar -zcvf full_new.tar.gz full_new/
scp full_new.tar.gz root@192.168.1.20:/data/xtbk/
scp full_new.tar.gz root@192.168.1.21:/data/xtbk/

三、从库统一操作(从库1、从库2操作完全一致)

1. 从库安装xtrabackup8.0

yum install -y https://repo.percona.com/yum/percona-release-latest.noarch.rpm
percona-release enable tools release
yum clean all && yum makecache
yum install -y percona-xtrabackup-80

2. 解压备份包

mkdir -p /data/xtbk
cd /data/xtbk
tar -zxvf full_new.tar.gz

3. 隔离原有错误数据,初始化空data目录

mv /data/mysql/data /data/mysql/data_bak_err
mkdir -p /data/mysql/data

备注:mv迁移旧错乱数据做备份;新建空data目录,xtrabackup不自动创建目录,必须手动初始化。

4. 恢复物理备份至MySQL数据目录

xtrabackup --copy-back \
--target-dir=/data/xtbk/full_new \
--datadir=/data/mysql/data

5. 授权Docker运行权限(必填)

chown -R 999:999 /data/mysql/data

6. 重启MySQL容器

docker restart 容器名

四、从库重建主从复制

登录从库MySQL:mysql -uroot -pMaster@123

STOP SLAVE;
RESET SLAVE ALL;

CHANGE MASTER TO
MASTER_HOST='192.168.1.19',
MASTER_USER='repl',
MASTER_PASSWORD='Repl@123456',
MASTER_LOG_FILE='mysql-bin.000017',
MASTER_LOG_POS=157;

START SLAVE;

五、修复验证

1. 同步状态

show slave status\G

Slave_IO_Running=Yes、Slave_SQL_Running=Yes,无报错,延迟为0,1032故障彻底解决。

2. 数据一致性校验(主从双向执行)

use biz_db;
select count(*),max(id) from user_order;

主库、从库1、从库2数据行数、主键最大值完全一致。


标题:MySQL主从同步故障修复
作者:zhongts
地址:http://212.64.20.79:8080/articles/2026/06/13/1781315443438.html