Mysql

記錄對 MySQL 數據庫所做的所有更改

  • August 22, 2018

我有一個 Web 應用程序設置,其中有單獨的 Apache-Wordpress 容器用於開發和生產。數據庫外部託管在虛擬主機上。

在設置開發環境時,我只需複制 Apache 容器並創建一個 MySQL 容器,在其中從外部數據庫導入轉儲。

當我想通過用開發容器替換生產容器來更新生產環境時,就會出現問題。更新開發容器對測試數據庫進行了更改,例如新表或架構更改,這些更改在外部數據庫中不存在。

如何使用對測試數據庫所做的更改來更新外部數據庫,而不會失去轉儲後進入生產數據庫的數據?

有幾種工具可用於實現此目的。以下是我的最愛:

  1. SQLYog
  2. DB忍者

這裡 SQLYog 是付費工具,但它只有 windows 版本可用。如果您選擇這個,那麼它的以下功能將為您完成這項工作:

  • 架構和數據同步
  • 視覺數據比較

如果您更喜歡基於 Web 的界面,那麼 DBNinja 是一個很好的工具。您可以輕鬆比較兩個數據庫模式並修復差異。以下是他們官方頁面的範例截圖: 模式比較 - DB Ninja

有一個實用程序,我現在正在使用它來完成類似的任務,我希望這對你也有幫助。

mysqldbcompare --server1=usr:pwd@host1 --server2=usr:pwd@host2 --changes-for=server2 --run-all-tests dbname > changes.txt

該實用程序將幫助我比較兩台伺服器主機上的數據庫,並將伺服器 2 上的差異和需要更新的內容寫入文本文件。

查看官方mysqldbcompare頁面了解更多詳細資訊。此外,此實用程序可以選擇比較兩台伺服器上的數據。在使用它之前檢查所有參數。謝謝。

引用自:https://dba.stackexchange.com/questions/145617