如何根据冲刺发布情况升级MySQL数据库架构?
问题出现的原因:在使用Navicat软件时,用户希望了解如何在不同的冲刺发布中升级MySQL数据库架构。
解决方法:使用Navicat软件可以实现以下功能:
- 将生产数据库同步到测试数据库。
- 显示两个数据库之间的差异。
- 使用结构同步功能将模式更改从开发环境推送到测试和生产环境。
Navicat软件的特点:
- 虽然Navicat软件需要购买,并且只能在Windows和Mac系统上使用,但它具有独特的用户界面。
- 软件也可以在Linux系统上运行。
- 用户可以在Mac系统上使用Navicat软件进行数据库比较和同步操作。
但是,需要注意的是Navicat软件似乎只能比较服务器上的数据库,而不能直接比较本地的SQL文件。
至于为什么喜欢Navicat软件的独特用户界面,文章中并未提及原因。
如何在各个迭代中升级MySQL数据库模式?
最开始提到了Toad for MySQL,它具有数据和模式比较功能,甚至可以创建同步脚本。最重要的是,它是免费软件。虽然还没有进行更多的研究,但暂时选择了Toad。
MySQL Workbench只会提供更改的报告,而不会生成更新脚本(或者我还没有找到如何生成)。如果你比较两个脚本,它会提示你是否更新数据库。在我的情况下,我只对更新脚本感兴趣。
然而,Toad非常不方便,你不能简单地比较两个不同的sql转储。
直到我意识到它只能在Windows上运行,而不是Linux,我才对这个工具感到兴奋。又得重新搜索...
对我来说效果很好。它完成了我需要做的一切,并且突出显示改变记录的单元格使得很容易看到有什么变化。
自从ESXi出现以来,操作系统不再是一个巨大的障碍(谁找不到一个附带旧电脑的2000或XP许可证?)。
使用--run-all-tests --difftype sql --disable-binary-logging
选项的mysqldbcompare几乎可以完成相同的工作(除了输出中混合了注释,字符串中的特殊字符没有转义)。
我对Toad唯一的抱怨是它并不总是以聪明的方式生成ALTER命令,而是会重命名一个表,创建一个新表(带有新列),然后将数据从旧表移动到新表。这比简单的alter要花费更多的时间。
Smith 你能告诉我Linux的替代方案吗?
这个工具只支持Windows,对我来说没用。我认为答案应该提到这一点。
现在它是一个eclipse插件,但是这个插件相当有bug。但仍然比Windows好。
现在Toad已经不再是免费软件了。它是免费试用版,你必须购买才能使用全部功能。
那就使用一个虚拟机吧,问题解决了。
如何在各个冲刺发布中升级MySQL数据库架构?
如果你在处理小型数据库,我发现在两个数据库上运行mysqldump命令,使用--skip-comments
和--skip-extended-insert
选项生成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
命令行很棒!现在我可以在任何脚本中使用它了 🙂
如果要比较数据,请改用以下命令;仍然会有关于字符集等的一些MySQL4+的注释:mysqldump --opt --compact --skip-extended-insert -u user -p db table > file.sql
如果只关心架构,可能对于需要生产使用的人来说,-d
,--no-data
可能会有兴趣。
更好的工具是MySQL官方开发的mysqldbcompare实用程序,您可以在Windows、Linux或Mac上使用它,它还可以输出数据和架构更改的SQL语句,并且比简单的命令行diff能够确定更多的测试。
链接已经失效了,请提供一个新链接吗?
--all-databases
也很有用,如果您希望比较整个服务器架构而不仅仅是一个特定的数据库。
如果您想要一个带有颜色的漂亮差异,请尝试vimdiff
不幸的是,整个问题被删除进行"审核",但我正在编写自己的开源差异工具,一旦我有了细节,我会回复的!
太棒了!但是,是需要使用-d
来跳过数据的。
如果您不关心空格、制表符和大小写,-iEwB
可能会有用。