[MYSQL案例][012] mysqldump导出导入的数据checksum校验不一致, pt-table-checksum也校验不一致

December 17, 2023
测试
测试
测试
测试
1 分钟阅读

环境

mysql 主从(主5.6 从5.7)

问题

在主库(5.6) 使用的mysqldump导出数据, 并导入到mysql 5.7

mysqldump --single-transaction --master-data=2

然后使用checksum table 校验每张表的hash值, 发现有张表校验值主从不一致, 但行数是一样的, 只有这一张表不一致.

再使用Mysqldump 导出主5.6 和 从5.7 的数据, 然后使用diff比较, 发现是一致的....

分析

mysql导出导入的, 行数一致, 基本上就确定是字符集方向的问题了.

使用pt-table-checksum 校验得到 一个有问题的数据区间.

然后再使用脚本逐行校验该区间的数据, 得到不一致的数据行ID

查找相关数据, 发现 一个varchar字段的数据有个4字节的字符... (emjo), 但是在从库(5.7)上发现是乱码...

故推断为导出时的字符集问题, 重新导出数据, 导出时加上参数: --default-character-set=utf8mb4

mysqldump --single-transaction --master-data=2 --default-character-set=utf8mb4

然后导入从库, 再次校验数据, 数据就一致了

总结

导出的时候注意加上字符集.

其实导入的时候 还遇到个小问题, 就是只导入那一行数据, 但那一行数据又有时间字段, 我又把TIME_ZONE之类的删除掉了. 导致导入进去的数据 差了8小时... 所以导入的时候也要注意 TIME_ZONE 之类的, 其实还有外键的问题, 不过这些mysql的dump文件都是有写的, 别删了就行.

继续阅读

更多来自我们博客的帖子

如何安装 BuddyPress
由 测试 December 17, 2023
经过差不多一年的开发,BuddyPress 这个基于 WordPress Mu 的 SNS 插件正式版终于发布了。BuddyPress...
阅读更多
Filter如何工作
由 测试 December 17, 2023
在 web.xml...
阅读更多
如何理解CGAffineTransform
由 测试 December 17, 2023
CGAffineTransform A structure for holding an affine transformation matrix. ...
阅读更多