由于主库发生变动,比如show master status;查到的File已经发生变化 目前遇到的是rds做硬调整之后这个文件会变,需要从库做如下操作
- 检查从库报错信息和Master_Log_File字段是否是和主库已经不一致了,show slave status for channel ‘my_db’;
- 停掉同步stop slave for channel ‘my_db’;
- 查主库log名和位点(File,Position)
- 修改从库同步log和位点CHANGE MASTER TO MASTER_LOG_FILE=‘主库log名’, MASTER_LOG_POS =主库位点 for channel ‘my_db’;
- 启动同步start slave for channel ‘my_db’;
上面五步其实很看运气的,假如期间有大量数据变动基本上还是会失败的
那我们只能放大招了:
- 主库提供一个权限高点的账号并且能让从库所在的服务器连接。比如主库地址192.168.0.1账号scen 密码scen ,从库停掉同步
- 在从库地址192.168.0.2的机器上留有硬盘空间并执行mysqldump -h 192.168.0.1 -u scen -p’scen’ --set-gtid-purged=off --master-data=2 --single-transaction --databases --add-drop-database my_db > /opt/dump/bak_20201112.sql
- 然后拿到备份的完整数据的log名和位点cat bak_20201112.sql |grep ‘mysql-bin.’(shell语句),记录一下比如是mysql-bin.0