2015-11-13 104 views
0

現狀:更新現場項目

  1. 我剛剛部署了我的網站的第一個版本(PHP中 MySQL數據庫)。我現在需要轉到我的網站的第2版。
  2. 我通常建立我的網站在本地主機,然後將其移動到生產服務器
  3. 我現在想重組我的數據庫。但我不清楚如何做到這一點,而不會丟失/破壞現有的用戶數據。
  4. 我很擔心,在進行上述更改時,用戶可能會嘗試使用 對數據庫進行編輯。

問題爲您

  1. 比方說,我調整自己的數據庫在本地主機。我如何在現場服務器上覆制 這個重組?我是否需要在本地主機和生產服務器上運行每個查詢 ? (看起來效率很低 - 有沒有更好的方法來做到這一點?)
  2. 我該如何確保在重構​​數據庫的同時,不會損害數據的神聖性(即,如何確保數據庫的「版本」不會改變,直到我完成我的工作?)

回答

2

您在sql中創建一個「遷移腳本」,收集在兩種狀態之間遷移數據庫所需的所有查詢。您可以嘗試在開發環境和生產環境中經常需要這些功能。

在生產環境遷移過程中,您啓用了一種「維護模式」,可防止對所做數據進行任何更改,並向用戶明確說明。在這裏透明。兩種變型在使用中:

  1. 您阻止所有請求,並通過了「維修標誌」,這是典型的,如果做的遷移只需要很短的時間暫時代替現場。如果這還不夠,那麼

  2. 你必須實現一個只讀或維護模式到你的邏輯渲染所有數據爲只讀。再一次:對你的用戶透明。

如果這將是太多的黑客攻擊,那麼你可能需要從「大玩家」誰從未在所有操縱運行的系統學習,但只有實例之間切換,往往一個實例池。所以你準備了第二個新的系統,並且只能在給定的時間點切換到那個系統。儘管如此,您仍然需要注意一個只讀週期以允許數據同步,但交換機本身是快速且可逆的。