優(yōu)惠活動 - 12周年慶本月新客福利
優(yōu)惠活動 - 12周年慶本月新客福利
優(yōu)惠活動 - 12周年慶本月新客福利

嘗試在線模式修改網站數據庫

對于運維來說,對數據庫模式進行更新,是許多非常困難的任務之一。將數據庫模式與其他更新一起進行同步,有幾種常見的情景:部署、快速開發(fā)、通過修改索引和其他結構優(yōu)化性能。假如模式更新是一種阻塞操作(MYSQL中通常就是這樣的),這就真的成問題了。



將表做得小一點是有很大好處的。存檔或刪除數據是保持小表的好方法,但還有其他方法,例如,假如應用是分片架構,則將每個分片做得足夠小,從而使得每個表都不會變得很大。也可以將數據分到不同的表中,如對于基于日期的數據,每天都創(chuàng)建一個新表。這里的大多數建議都是比較極端的,并不推薦到處應用,但假如加上一點創(chuàng)造性的話,則可以走得更遠一點。

INNODBI的新版本(稱為 INNODB插件),以及Xtradb,提供在線增加或刪除索引的能力,而且速度很快。這一點確實很好。我仍然記得,第一次計算索引更新需要停機多長時間的情景:客戶給了我一個小時,然后運行更新索引的命令,僅僅花了30秒鐘,而我記得他們用的是INNODB插件。假如你還沒有用過的話,我想INNODB插件版本(或 XTRADB)是一次相當引人注目的升級。

如果表不是足夠小,則這些類型的操作都是不可能的。這個時候,就需要另想辦法。通過創(chuàng)建一個有著所需結構的“影子表”,借助于外部工具,在最后時刻對表進行交換與重命名,雖然理論上可行,我仍然不認為這樣做對每種情形都是可行的解決方案。所以,仍然有大量的情況,其中,交換服務器都是首選的方案。

一般的想法是設置主一主復制對,當然其中只有一臺服務器可寫。在只讀服務器上執(zhí)行更新,但不要復制到可寫服務器上??梢酝ㄟ^禁止將更新寫入日志,或在可寫服務器上停止復制過程來實現。更新一旦完成,則用正常方式使應用程序實現失效轉移,這樣,讀者和寫者就實現了角色變換。然后在另一臺網站建設服務器上重復執(zhí)行更新一一或許只需要重啟復制過程。使用這種方式,就實現了對應用程序隱含宕機時間的目的。
本文地址:http://m.hbbqcd.cn//article/3322.html
相關文章:
最新文章: