因线上项目上使用了主从读写分离,收到了主从同步告警,发现从从上读取到的数据与主数据库上的不一致:
1、使用show slave status\G,查看到seconds_behind_master大于0,并且有比较大的延时;
2、因磁盘空间有限,主数据库配置了expire_logs_days,从数据库还没有从主数据库同步完,就把主库的BINLOG日志给删除了;
恢复,因数据量比较小,直接从主库备份后,导入到从库:
mysqldump -q --set-gtid-purged=OFF --single-transaction --events --triggers --routines -uroot -p --host=127.0.0.1 --databases evuser im | gzip >1121.sql.gz
提示使用--set-gtid-purged=OFF表示,将在恢复时,不会再将主库的BINLOG日志从0位置为开始再同步,即清除了截止到导出来之前的BINLOG日志,恢复后,将会从导入之后的BINLOG位置进行同步。
3、恢复到从库:
mysql>source 1121.sql;
mysql>start slave;