1.背景
线上单表已过8000w数据,又不想分库分表,和客户商量一下决定对数据归档,客户要求留一个月的数据,因为线上每天都会备份,所以我想的是用mysqldump下最近一个月的数据,然后清空表,再导入。理想很丰满,现实很骨感,给主库导入数据,发现从库不同步,得,那找找什么原因吧。
2.原因分析
首先我们导出最近一个月的数据
mysqldump -uprod -p'ZA4safeProd!@#.' --single-transaction --quick iot ele --where="create_time > '2021-08-01 00:00:00'" > /mnt/ele.sql
然后清空ele表
TRUNCATE ele;
然后使用mysql命令行的source命令导入
source /mnt/ele.sql
感觉没啥问题,然后发现主从库不同步了,但是同步状态是没问题的,郁闷~
然后重新导一遍,发现了一个不起眼的问题
我们下载这个文件到本地,打开看一下
噢哟,这不就是你小子么,于是乎我们把其他无关语句都删除,只留下INSERT INTO语句,然后再导入,即可~
有疑问请移步这个帖子,详细看一下GTID是什么:https://blog.csdn.net/woailyoo0000/article/details/88981380