我在登台服务器上有一个mysql数据库,在生产服务器上有另一个。最初两者完全相同。后来,在模式更改,添加或删除某些表等方面对登台数据库进行了一些修改。现在我需要将登台服务器的数据库与生产数据库进行比较,以便我可以在生产中进行部署和更改。
我知道有一些可用的外部工具。 但我想知道我是否可以使用一些mysql命令来实现这一点,或者编写python程序来实现这一点。
如果有人知道解决方法,请告诉我。
答案 0 :(得分:0)
执行两个mysqldump
并在其上运行diff
[-du]
。
$ mysqldump --databases prod > prod.sql
$ mysqldump --databases stage > stage.sql
$ diff -du stage.sql prod.sql
答案 1 :(得分:0)
Mysqldbcompare可让您比较两个数据库并识别差异。
答案 2 :(得分:0)
如果你想编写所有代码来自己来区分表,但这并不简单(我知道,我已经完成了)。如果你想走那条路,你只需要对每个数据库运行SHOW TABLES
查询,然后为数据库中的每个表运行SHOW FULL COLUMNS FROM :table
,然后构造查询以更新每个列/表/数据库。
另一种可能更好的选择是使用现有工具。 Here's one I wrote in PHP,它有一个API,或者您可以下载源代码并将其用作参考。
答案 3 :(得分:0)
以下事情对我有用。因为我只是想比较架构的变化。我不想比较实际数据。
$ mysqldump -u root -p --databases --no-data staging > stage.sql
$ mysqldump -u root -p --databases --no-data production > prod.sql
$ vimdiff stage.sql prod.sql