1.背景

线上单表已过8000w数据,又不想分库分表,和客户商量一下决定对数据归档,客户要求留一个月的数据,因为线上每天都会备份,所以我想的是用mysqldump下最近一个月的数据,然后清空表,再导入。理想很丰满,现实很骨感,给主库导入数据,发现从库不同步,得,那找找什么原因吧。

2.原因分析

首先我们导出最近一个月的数据

  1. mysqldump -uprod -p'ZA4safeProd!@#.' --single-transaction --quick iot ele --where="create_time > '2021-08-01 00:00:00'" > /mnt/ele.sql

然后清空ele表

  1. TRUNCATE ele;

然后使用mysql命令行的source命令导入

  1. source /mnt/ele.sql

感觉没啥问题,然后发现主从库不同步了,但是同步状态是没问题的,郁闷~

然后重新导一遍,发现了一个不起眼的问题
9a0b350a043cc80cbf725a3c8fd04a5.png
我们下载这个文件到本地,打开看一下
image.png
噢哟,这不就是你小子么,于是乎我们把其他无关语句都删除,只留下INSERT INTO语句,然后再导入,即可~

有疑问请移步这个帖子,详细看一下GTID是什么:https://blog.csdn.net/woailyoo0000/article/details/88981380