【发布时间】:2009-05-20 02:08:33
【问题描述】:
我有一些数据库备份,我正在尝试找出是否有一种方法可以比较备份中的数据,以了解数据随时间的变化情况。 我在要比较的字段上没有时间戳,但我在行上有一个唯一的 ID。备份是使用 mysqldump 创建的 .sql 文件。
是否有执行此操作的流程?
【问题讨论】:
标签: mysql database schema mysqldump mysql-management
我有一些数据库备份,我正在尝试找出是否有一种方法可以比较备份中的数据,以了解数据随时间的变化情况。 我在要比较的字段上没有时间戳,但我在行上有一个唯一的 ID。备份是使用 mysqldump 创建的 .sql 文件。
是否有执行此操作的流程?
【问题讨论】:
标签: mysql database schema mysqldump mysql-management
有许多用于 MySQL 的 diff 工具,包括名为 MySQLDiff (http://www.mysqldiff.org/) 的工具。还有一个命令行界面可以在这里找到:
http://devzone.intellitree.com/projects/intellitree-cli-extension-to-mysqldiff/
查看之前的 StackOverFlow 帖子,了解与此类似的可视化差异工具(以及其他一些解决方案):
【讨论】:
理论上,您可以将备份作为第二个数据库导入,然后编写一个 PHP 脚本,连接到您的 SQL 服务器并按唯一 ID 迭代条目,并进行比较。
您也可以只在命令行中使用diff,但生成的数据集可能不那么可行。
【讨论】:
您可以使用WinMerge 之类的工具或任何其他合并工具来查看备份的实际差异。成功与否取决于文件的大小。对于非常大的备份,我不建议这样做。
【讨论】:
如果您使用 mysqldump 进行备份,那么您的备份文件将是标准文本文件。然后,您可以使用任何体面的文本文件比较实用程序(即 unix 系统上的 diff)来查看差异。
这样做的一个好处是表模式与数据一起转储。
另一个好处是备份与版本和机器无关 - 您可以恢复到任何正在运行的 MySQL 副本。
缺点是转储的数据部分被写成最大长度的行,所以一些文本编辑器会卡住它。
干杯,
-R
【讨论】:
有一个很好的工具是pydumpyhttps://code.google.com/p/pydumpy/(镜像:https://github.com/miebach/pydumpy)
它可以让您创建易于与diff 比较的转储
如果你想比较已经存在的转储,你可以先从每个转储中创建一个临时 mysql 数据库,然后从那里开始。
【讨论】: