2016-02-04 59 views
0

所以我有一個正在生產的mysql數據庫。因爲它是非常大的變化需要很長時間,所以對於我們來說像截斷表一樣的事情,添加列需要很長時間(想想幾個小時)。 Liquibase在半小時左右的時間內超時(無關緊要),所以爲了讓我們做出改變,我們需要手動完成,然後記錄更改。我們重構我們的數據庫是一個相當有點小,增加一對列,但因爲這是在生產和正在不斷負載下,我們不能沒有一個大的打擊給我們的用戶和我們自己都失去任何傳入的數據。我們如何在Liquibase更改日誌中記錄我們的更改,以便在下次運行時它不會嘗試重新應用我們的修復程序,但它也將允許我們爲開發環境保留相同的更改日誌。如何在事後記錄liqubase中數據庫的更改?

作爲一個相關的說明,我們最近發現有人前進行了更改督促分貝數年,並沒有將它記錄在liquibase所以是有可能早在更改日誌填寫行?

+0

我不知道這是否會幫助,你可以做的是克隆整個生產數據庫,編輯克隆(如截斷和其他的東西,是的,你必須重構你的數據庫,其目的是獲取更低,從這些數據中,從較小的表,我不知道這是什麼技術被調用,它某種指數,但硬編碼一個填充。)和同樣迅速取代它的生產不搞亂的數據庫產生。 – PauAI

+0

我們現在正在這樣做。重構本來應該發生很久以前,但沒有。 – alexddupree

回答

1

要記錄在Liquibase表的更改,您使用changelogsync命令。這會將行放入與變更日誌中的每個變更集對應的DATABASECHANGELOG表中。

您可以對「回填」問題做同樣的事情 - 在更改日誌中創建與生產中的實際更改相對應的更改集,然後使用changelogsync通知特定數據庫已經部署更改。

相關問題