我必须将数据库移至新服务器。我从服务器 A 执行数据库的 mysqldump 并将其导入服务器 B。然后我从服务器 B 执行转储,并通过 bash 上的 diff 将其与服务器 A 的转储进行比较。此操作失败,有些行不匹配,尽管手动检查显示没有涉及任何数据行。两台服务器运行的 mysql 5.0.x 版本略有不同。
使用的mysqldump命令:
mysqldump -u user -p mydb > mydbA.sql
经过一番研究后,我使用 bash 上的工具完成了以下操作:
- 旧服务器 A 上的 mysqldump ,完整转储和仅数据转储。
- 在新服务器 B 上创建数据库并从 A 导入完整转储。
- 然后仅从服务器 B 转储数据。
- 对数据转储 A 和数据转储 B 进行差异比较。
- 应以 0 退出 - 来自 echo $?
- MD5 也给出相同的哈希值。
两个服务器运行的 mysql 5.0.x 版本略有不同。
“全部”转储
mysqldump -u user -p mydb > mydbFULL.sql
仅数据转储
mysqldump --no-create-info --skip-opt --skip-comments --skip-extended-insert --compact -u user -p mydb > mydbDATAonly.sql
答案1
您可能需要查看 Percona Toolkit for MySQL。pt-table-checksum 工具将针对每个表运行校验和。虽然这是为 MySQL 复制设计的,但我认为您也可以使用它来比较迁移的数据。