比较两个MySQL数据库

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

数据库结构仍然在不断变化,并在开发过程中发生变化(我更改了本地副本,而只保留了测试服务器上的副本)。

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

虽然目前简单地放弃以前的测试服务器数据库是好的,但当测试开始输入测试数据时,它可能会有点棘手。
尽管如此,稍后会在生产中再次发生......

是否有一种简单的方法可以逐步对生产数据库进行更改,最好是通过自动创建脚本来修改它?


答案中提到的工具:

  • Red-Gate的MySQL模式和数据比较(商业)
  • Maatkit(现在Percona)
  • liquibase
  • 蟾蜍
  • Nob Hill数据库比较(商业)
  • MySQL差异
  • SQL EDT(商业)

  • 如果你正在使用小型数据库,我发现在两个数据库上都使用--skip-comments--skip-extended-insert选项运行mysqldump来生成SQL脚本,然后在SQL脚本上运行diff就能很好地工作。

    通过跳过评论可以避免无意义的差异,例如运行mysqldump命令的时间。 通过使用--skip-extended-insert命令,确保每行都插入自己的插入语句。 这消除了单个新记录或修改记录可能会在将来的所有插入语句中导致连锁反应的情况。 使用这些选项运行时会产生更大的转储而无需注释,因此这可能不是您想要在生产中使用的东西,但对于开发应该没问题。 我已经把我使用的命令的例子放在下面:

    mysqldump --skip-comments --skip-extended-insert -u root -p dbName1>file1.sql
    mysqldump --skip-comments --skip-extended-insert -u root -p dbName2>file2.sql
    diff file1.sql file2.sql
    

    Toad for MySQL具有数据和模式比较功能,我相信它甚至会创建一个同步脚本。 最重要的是,它是免费的。


    我使用一个名为Navicat的软件来:

  • 将Live数据库同步到我的测试数据库。
  • 显示两个数据库之间的差异。
  • 它花钱,只有Windows和Mac,它有一个糟糕的用户界面,但我喜欢它。

    链接地址: http://www.djcxy.com/p/38033.html

    上一篇: Compare two MySQL databases

    下一篇: Best tool for synchronizing MySQL databases