使用了mysqldbcompare 和 mysqldiff ,在校验大表时 都有类似卡死现象(七八个小时),请问有没有什么开源的工具可以校验亿级,最好是一个小时能搞定的
1条回答 默认 最新
关注【以下回答由 GPT 生成】
要快速校验源库和目标库的大表数据一致性(亿级数据),可以尝试使用以下方法来解决该问题:
- 使用pt-table-checksum工具:
- pt-table-checksum是Percona Toolkit的一部分,它可以用于校验MySQL数据库的数据完整性。
- 通过在源库和目标库上分别运行pt-table-checksum,可以生成两个库的数据校验结果。
- 可以使用以下命令来安装pt-table-checksum:
$ sudo apt-get install percona-toolkit # Ubuntu $ sudo yum install percona-toolkit # CentOS/RHEL - 运行pt-table-checksum的命令示例:
$ pt-table-checksum --replicate=test.checksums \ h=源库主机,u=用户名,p=密码,D=源库名 \ h=目标库主机,u=用户名,p=密码,D=目标库名 - 该工具会在源库和目标库上创建一个名为test.checksums的表,并记录数据的校验结果。
-
通过对比两个库的校验结果,可以判断数据是否一致。
-
使用Percona Toolkit的pt-table-sync工具:
- pt-table-sync是Percona Toolkit的另一个工具,可以用于修复数据不一致的问题。
- 如果数据在源库和目标库中不一致,可以使用pt-table-sync来同步数据。
- 使用以下命令来安装pt-table-sync:
$ sudo apt-get install percona-toolkit # Ubuntu $ sudo yum install percona-toolkit # CentOS/RHEL - 运行pt-table-sync的命令示例:
$ pt-table-sync --execute h=源库主机,u=用户名,p=密码,D=源库名,t=表名 \ h=目标库主机,u=用户名,p=密码,D=目标库名,t=表名 -
该工具会根据校验结果,同步源库和目标库中的数据。
-
使用mysqlpump和mysqlimport进行快速数据导入:
- 如果目标库不存在数据,也可以考虑重新导入整个数据。
- 使用mysqlpump 工具从源库中导出数据:
$ mysqlpump --host=源库主机 --user=用户名 --password=密码 --databases 源库名 --tables 表名 > 数据导出文件.sql - 然后使用mysqlimport工具将数据导入到目标库:
$ mysqlimport --host=目标库主机 --user=用户名 --password=密码 --database=目标库名 数据导出文件.sql - 这种方法可以提高导入速度,尤其在亿级数据的情况下。
总结: 以上是几种可能的解决方案来快速校验源库和目标库的大表数据一致性(亿级数据)。使用pt-table-checksum和pt-table-sync可以快速校验和修复数据不一致的问题。而使用mysqlpump和mysqlimport可以进行快速数据导入,特别适用于数据重新导入的场景。
【相关推荐】
- 帮你找了个相似的问题, 你可以看下: https://ask.csdn.net/questions/211178
- 你也可以参考下这篇文章:MySQL安装配置,以及无法配置“mysqld‘ 不是内部或外部命令,也不是可运行的程序 或批处理文件”解决方案
- 你还可以看下mysql参考手册中的 MySQL 字符集、对齐方式、统一编码 MySQL中的字符集和对齐方式
- 您还可以看一下 陈贺群老师的软件测试教程系列之MySQL数据库教学视频(中)课程中的 数据库_在dos中添加数据出现错误或者查询数据出现乱码问题解决介绍小节, 巩固相关知识点
- 除此之外, 这篇博客: 两台电脑组件局域网,一方访问对方mysql数据库;一方充当服务器,对方充当客户端中的 二、访问对方mysql数据库 部分也许能够解决你的问题。
如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^解决 无用评论 打赏 举报