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