我有像下面這樣的開發環境。需要分佈式體系結構或流程
已安裝tomcat7,mysql的開發服務器。我們的應用程序使用mysql數據庫在此上運行。我們有一臺叫做生產服務器的服務器,它也託管tomcat7和mysql。我們的應用程序也在那裏運行。我們正在使用亞馬遜網絡服務,如ec2實例。問題是每當我們在開發服務器中集成某些數據庫更改時,我們需要在生產服務器中複製相同的進程。任何人都可以向我建議理想的基礎設施,我們可以使用完整的克隆或任何簡單的流程。任何好的建築在實踐中都受到歡迎。
我有像下面這樣的開發環境。需要分佈式體系結構或流程
已安裝tomcat7,mysql的開發服務器。我們的應用程序使用mysql數據庫在此上運行。我們有一臺叫做生產服務器的服務器,它也託管tomcat7和mysql。我們的應用程序也在那裏運行。我們正在使用亞馬遜網絡服務,如ec2實例。問題是每當我們在開發服務器中集成某些數據庫更改時,我們需要在生產服務器中複製相同的進程。任何人都可以向我建議理想的基礎設施,我們可以使用完整的克隆或任何簡單的流程。任何好的建築在實踐中都受到歡迎。
每次對數據庫的更改都必須像應用程序的其他任何部分一樣跟蹤(最明顯的「其他部分」當然是您的代碼庫)。
記錄SQL腳本中對數據庫所做的每一項更改。該腳本將在目標環境中應用作爲標準升級過程的一部分 - 然後應用補丁的意思是「安裝新的代碼和應用數據庫升級腳本,這樣處理可以很容易地編寫腳本
如果你預見。在將來需要安裝應用程序的新實例的可能性時,您需要能夠創建新的空數據庫。爲此,您還需要維護一個「初始化腳本」,以創建應用程序的默認結構。這包括表,觸發器,存儲的例程創建腳本以及表中的一些默認行。這個腳本必須像升級腳本一樣維護。您可能希望在某個集成服務器上保留一個空數據庫,使用標準升級腳本進行升級噸。然後在每次發佈時轉儲此數據庫;這個轉儲成爲您的參考數據庫創建腳本。
This blog post at Coding Horror指向這個主題的幾個高質量的文章。
謝謝你的回答。我不想使用任何腳本,是否有可能克隆VM軟件,以便該過程很簡單? – geekgugi
請說明「克隆VM」。您無法「克隆」數據庫,因爲目標數據庫包含生產數據。不是應用一個簡短的數據庫補丁比克隆任何東西更容易嗎? – RandomSeed