在上周,互聯網技術圈的一條重磅消息就是某旅游類門戶網站的癱瘓,而據傳這一情況出現是因為其后臺的數據庫被物理刪除,造成數據的全部丟失。到筆者發稿時,該網站的業務尚未恢復,而這一情況出現已經超過 10 個小時。有人根據其業務進行估計,這一事故的出現,每小時將損失超過千萬元。
我們先不論這一事故是操作失誤還是設備故障抑或是有人故意為之,數據庫引發的整個網站癱瘓也讓人們開始重新關注和重視數據庫的安全性以及高可用性。那么下來筆者也以這個事件為引子,談談有關數據庫的數據災備的一些觀點。
“數據庫災備是什么 ”
數據庫災備指的是在同一時間,一個數據庫在運行的同時,還有另外一個數據庫在另一個不同的地點運行,同時完全和當前的主要運行的數據庫實時同步。這樣當主數據庫發生任何問題的時候,另一個地點的數據庫可以立刻接管業務,使整個業務不會中斷。
在很多傳統的數據庫中,災備是一種非常成熟的技術。例如 Oracle 的 DataGuard,DB2 的 HADR,都是鼎鼎有名的跨數據中心數據庫災備方案。使用了災備機制的數據庫,當主系統所在的數據中心出現故障后(不管是被人把系統干掉了,還是整個數據中心被地震震塌了),備系統可以在短時間內感知并接管數據服務,使得在線業務持續運行。
從技術的角度看,傳統的災備方案一般會將主庫的日志順序發送給備庫,在備庫上重新執行主庫上的操作。這樣主庫和備庫之間可能僅存在非常小的延時,基本實現同步。但是,在很多新型的分布式數據庫中,災備方案還并沒有像傳統數據庫那樣普及。因此,數據的安全性隱患也是很多企業在考慮使用新型分布式數據庫時一個非常重要的因素。
“數據庫災備需要考慮的因素 ”
除了基本的數據復制功能外,災備方案還有些什么其他重要的考慮因素呢?
1)主備庫之間的延遲。既然主備庫分別部署在不同的數據中心,互聯網延遲則是必須考慮的因素。主備庫之間的延遲越小,當主庫出現故障時丟失的數據越少。例如如果主備庫之間的延遲可以縮小到一秒鐘以內,當主庫所在的系統出現人為或非可控災難的時候,主備庫切換所造成的數據損失會被限定在一秒鐘內,這樣和整個門戶網站的癱瘓比起來,企業所遭受的損失幾乎可以忽略不計。
2)占用帶寬小。一般來說,主備數據中心之間的網絡帶寬非常昂貴。由于主備數據中心之間的網絡一般都是跨廣域網的,因此其帶寬的承受能力絕對不能像局域網那樣假設為千兆或萬兆帶寬。因此,在網絡傳輸時數據通道的條數,數據傳輸時的壓縮比率都是非常重要的指標。
3)安全的傳輸通道。既然數據是跨廣域網的傳輸,如果有人在機房外架設嗅探器,是否可以截獲我們的網絡通訊呢?如果主備節點之間總是以明文通訊,這絕對是一個非常重大的安全隱患。因此,主備數據中心之間的數據通訊是否加密則是第三個重要的安全指標。
這些跨數據中心復制的重要因素,在 SequoiaDB 企業版中得到了非常高的重視。在保證網絡順暢的環境中,使用 SequoiaDB 進行遠程跨數據中心復制可以將主備庫的延時限定在秒級,同時 SSL 數據通道配合數據壓縮,使得數據在傳輸時高效安全可靠。
“事故預防 還需健全的權限管理 ”
當然,除了技術以外,很多災難場景的發生都是人為產生的。再嚴密的加密措施也無法擋住 DBA 從內部販賣數據;再嚴格的防火墻也擋不住系統管理員的 rm –rf。因此,對內部員工的培訓、監管以及系統隔離是非常必要的。
例如,對于數據庫管理員來說,主備庫最好由完全不同的團隊管理。譬如北京和上海兩個數據中心完全可以由不同的 DBA 團隊運營,就算其中一個團隊出現問題,也不會對另一個團隊運維的系統產生影響。
第二,數據的備份很多企業都非常重視,但是可能會存在一個團隊能夠管理和隨意修改備份文件。這種情況下,假設這個團隊的成員在內部進行破壞,將生產系統和備份全部銷毀,會導致整個企業 IT 系統的完全癱瘓。因此,如何將歷史數據和在線數據的管理隔離,也是企業內部安全流程非常重要的管理措施。
最后,筆者對該網站出現的故障深表同情,也希望各大其他的企業引以為鑒,多多注重數據安全,避免相同的事故重演。