比较两个MySQL数据库[关闭]

就目前情况而言,这个问题不适合我们的问答形式。我们希望答案能得到事实、参考资料或专业知识的支持,但这个问题可能会引发辩论、争论、投票或广泛讨论。如果您觉得这个问题可以改进并可能重新打开,请访问帮助中心寻求指导。

9年前关闭的

锁定。此问题及其答案被锁定,因为该问题脱离主题,但具有历史意义。它当前不接受新答案或互动。

我目前正在使用MySQL数据库开发一个应用程序

在开发过程中,数据库结构仍在变化中(我更改了本地副本,将其单独放在测试服务器上)

是否有方法比较数据库的两个实例以查看是否有任何更改

虽然目前只需丢弃以前的测试服务器数据库就可以了,但随着测试开始输入测试数据,这可能会变得有点棘手。
同样的,但更多的情况会在以后的制作中再次发生

是否有一种简单的方法可以增量地对生产数据库进行更改,最好是自动创建一个脚本来修改它


答案中提到的工具:

  • RedGate的MySQL模式和数据比较(商业)
  • Maatkit(现为Percona)
  • 液化
  • 蟾蜍
  • Nob Hill数据库比较(商业)
  • MySQL差异
  • SQL EDT(商业版)

如果您使用的是小型数据库,我发现在这两个数据库上都运行mysqldump,并使用--跳过注释--跳过扩展插入选项来生成SQL脚本,那么在SQL脚本上运行diff就非常有效

通过跳过注释,您可以避免无意义的差异,例如运行mysqldump命令的时间。通过使用--skip extended insert命令,您可以确保每一行都插入了自己的insert语句。这就消除了单个新记录或修改记录可能在将来所有insert语句中引起连锁反应的情况nts。使用这些选项运行会产生更大的转储,而没有任何注释,因此这可能不是您在生产使用中想要做的事情,但对于开发来说应该可以。我在下面列出了我使用的命令示例:

mysqldump–跳过注释–跳过扩展插入-u root-p dbName1>file1.sql
mysqldump–跳过注释–跳过扩展插入-u root-p dbName2>file2.sql
diff file1.sql file2.sql

发表评论