2012-01-07 105 views
11

我需要添加一列到我當前的表中。alter table mysql offline or not?

這張桌子在白天和黑夜使用很多。我發現我需要改變使用在這裏找到的alter命令

http://dev.mysql.com/doc/refman/5.1/en/alter-table.html 

我在開發服務器上測試它。

我花了約2小時完成。現在我想在生產服務器上執行此操作?

這會阻止我的網站?

回答

14

爲什麼不顯示說你會從午夜UTC時間進行維護1月7日2012年

這樣一來,你就不會打破任何數據在網站上留言,你不會得到任何MySQL的錯誤。你執行你的ALTER,並在完成後再次啓動站點(不要忘記你的代碼,以確保你有正確的領域等)。易於解決。

Stackoverflow做到了,爲什麼不是你的?

+0

我喜歡這個想法,但什麼時候? – 2012-01-07 01:04:11

+0

每個人都說我沒有「完美的時間」,查看你的統計數據,看看你什麼時候沒有或者低流量,然後做改變。 – 2012-01-07 01:06:13

+0

不錯的主意,謝謝你的幫助 – 2012-01-07 01:07:02

0

它不會停止您的網站,但它可能會使它引發錯誤。

當然,如果不查看應用程序的所有代碼,就無法回答這個問題。

底線是,如果有疑問安排維護窗口。

1

是的,在ALTER TABLE期間,所有的讀寫都被阻塞。如果您的網站需要使用該表格,請求將會掛起。

嘗試pt-online-schema-change。它允許讀取和寫入繼續,同時捕獲要在重新構建完成後針對更改的表進行重播的更改。

在您的開發服務器上仔細測試,以便了解它是如何工作的以及期望的。

+2

似乎很複雜 – 2012-01-07 00:56:51

-3
  1. 使生產服務器在一段時間內指向dev db(或)prodcution db的鏡像。
  2. 改變表生產
  3. 部署進行對話的生產DB(新屬性)的代碼

P.S:我覺得這是更安全,傻瓜證明的方式(根據我的經驗)。