2009-11-23 79 views
30

想知道是否有可能擁有MySQL數據庫的版本控制。MySQL版本控制 - Subversion

我意識到這個問題已經被問過,不過最新的幾乎是一年前,在事物的變化率...

的問題來了,每個開發者都有自己的Apache/MySQL的/ PHP他們有時編輯數據庫的計算機。如果他們不得不發送電子郵件給所有其他開發人員,然後手動編輯測試服務器數據庫,則會很不方便。

你如何處理這個問題?

感謝

+0

你也有DBV:http://stackoverflow.com/a/13837473/6309 – VonC 2012-12-12 10:19:11

回答

15

這本身不是一個MySQL相關的解決方案,但我們已經有很多成功的一個產品叫liquibase。 (http://www.liquibase.org/

這是一個覆蓋許多不同數據庫供應商的遷移解決方案,允許所有數據庫更改都在配置文件中編碼,所有這些都保存在Subversion中。由於所有配置都保存在XML文件中,所以很容易將其他人的更改合併到主線腳本中,並且可以很好地與標籤和分支搭配使用。

通過運行「更新數據庫」命令可以將數據庫升級到當前修訂級別。大多數更改還能夠回滾數據庫更改,這也會有所幫助。我建議遵循確保在運行遷移之前獲得最新的做法,因爲這可能是最簡單的。

最後,當它涉及到生產交貨,你可以選擇讓所有的數據庫改變輸出作爲一個完整的SQL腳本,因此它可以允許DBA運行和維護職責分離。

到目前爲止,它的工作就像一個魅力。

+0

這看起來像一個很好的解決方案 - 非常感謝你! – user103219 2009-11-23 17:32:19

+0

你也可以使用maatkit,它是內置於很多Linux發行版中的。這是一個小工具刀,maatkit,它並沒有在自身和其他程序之間建立依賴關係。 – 2012-07-01 02:37:37

+0

真的很酷的方法。 – funktioneer 2015-01-12 16:23:41

1

那麼我們使用Rails來保留遷移文件中的所有更改。我知道一些PHP框架可以做同樣的事情 - 例如Symphony。因此,當所有更改合併到我們的存儲庫(我們用戶mercurial)時 - 我們可以看到開發中需要或應用於數據庫的所有遷移變化。完成備份後,生產負責人會將代碼投入生產。但是,如果你不使用一個PHP框架來處理這個問題,awied的建議聽起來很有趣 - 我以前沒有聽說過liquidbase,但我一定會檢查出來。

1

有一種稱爲iBatis的工具,現在稱爲MyBatis,可以完美地處理數據庫版本。

需要一點努力才能在腳本中進行所有更改,而不是使用圖形工具,但是如果您熟悉編碼,則不會出現問題。

當您有多個數據庫(如dev-test-prod)時,只需創建3個環境文件,並且只需一條命令行指令即可更新一個環境。