2010-02-12 54 views
12

我有大約100個數據庫(所有相同的結構,只在不同的服務器上),每個數據庫都有大約十幾個表。大多數表格很小(可以說100MB或更少)。有些桌面可能很大(比如4GB +)。生產數據庫上的MySql ALTER TABLE - 任何問題?

我需要在每個數據庫中的每個表上運行一系列ALTER TABLE命令。主要將一些行添加到結構中,但是需要進行一些更改,例如將一行從varchar更改爲tinytext(反之亦然)。還增加了一些新的索引(但索引新的行,不存在的索引,所以假設這不是什麼大問題)。

我想知道這樣做有多安全,以及是否有任何有關此過程的最佳實踐。

首先,我是否有可能破壞或刪除表中的數據。我懷疑沒有,但需要確定。

其次,我認爲對於更大的表(4GB +),這可能是幾分鐘到幾個小時的過程?

任何事情我應該知道的關於在生產數據庫上執行ALTER TABLE命令的內容我對學習感興趣。

如果知道它的任何價值,我打算通過PHPMYADMIN發出大部分命令。

謝謝 -

+0

不錯的問題,很高興看到這個答案 - 我最初的懷疑是它不會花太長時間,因爲我不認爲如果你正在修改表 - 不確定,但期待更多受過良好教育的人投入這個:) – suitedupgeek 2010-02-12 23:35:11

+0

+1好問題。 – ziya 2010-02-13 00:22:39

回答

5

首先在應用任何轉換器之前進行備份。兩種方法你可以做到這一點:mysqldump的一切,或者你可以複製你的mysql數據文件夾。

其次,您可能想要從命令行使用mysql。 PHPMyAdmin可能會超時。大多數PHP服務器的暫停時間少於10分鐘。或者你無意中關閉了瀏覽器。

+1

備份大小在100MB到4GB之間的〜100個數據庫+必須值得另一個問題:-) – ziya 2010-02-13 00:20:12

+1

+1命令行建議。 – ziya 2010-02-13 00:22:24

+0

關於鎖定行的任何可能的問題? – Jorre 2010-08-30 18:19:01

0

這是我的建議。

  1. 您可以對應用程序進行故障切換(確保所有數據庫都沒有連接)。

  2. 您可以使用「創建索引語句」來創建索引。不要使用alter table add index語句。

  3. 這些全部使用腳本(將所有這些語句保存在文件中並從源代碼運行)。

  4. 看起來像表大小非常小,所以它不會產生任何頭痛。