比较两个数据库是否存在任何差异

时间:2016-03-02 16:36:25

标签: python mysql

我在登台服务器上有一个mysql数据库,在生产服务器上有另一个。最初两者完全相同。后来,在模式更改,添加或删除某些表等方面对登台数据库进行了一些修改。现在我需要将登台服务器的数据库与生产数据库进行比较,以便我可以在生产中进行部署和更改。

我知道有一些可用的外部工具。 但我想知道我是否可以使用一些mysql命令来实现这一点,或者编写python程序来实现这一点。

如果有人知道解决方法,请告诉我。

4 个答案:

答案 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