近幾周互聯(lián)網(wǎng)企業(yè)頻繁暴出各類(lèi)“癱瘓”事件,網(wǎng)易、支付寶也身負(fù)重傷,而5月28日攜程網(wǎng)站服務(wù)及App全站癱瘓,從事故發(fā)生至恢復(fù)長(zhǎng)達(dá)近12小時(shí),造成的損失不言而喻。在對(duì)攜程事件感到惋惜的同時(shí),讓大家不由感嘆,對(duì)數(shù)據(jù)安全問(wèn)題的重視已迫在眉睫。

隨著數(shù)據(jù)價(jià)值的不斷提升,數(shù)據(jù)安全問(wèn)題里面,最常見(jiàn)的棘手問(wèn)題為因黑客攻擊而造成的用戶(hù)數(shù)據(jù)泄密和丟失??v觀(guān)互聯(lián)網(wǎng)高速發(fā)展的這些年,黑客攻擊事件頻發(fā),光用戶(hù)數(shù)據(jù)泄密就已有如下九大慘案載入互聯(lián)網(wǎng)史冊(cè)。


由以上數(shù)據(jù)統(tǒng)計(jì)可以看出,每次黑客攻擊涉及的用戶(hù)數(shù)量巨大。另有數(shù)據(jù)稱(chēng),近4年的互聯(lián)網(wǎng)安全事故導(dǎo)致11.3億用戶(hù)信息泄露。而在福布斯上榜的中國(guó)企業(yè)中,大多都曾經(jīng)遭受過(guò)攻擊或出現(xiàn)信息泄露,特別是一些掌握大量民眾個(gè)人信息的企業(yè)成為黑客攻擊的“重災(zāi)區(qū)”,其中不乏國(guó)內(nèi)知名大公司,中國(guó)移動(dòng)、淘寶、騰訊、小米以及12306。

當(dāng)網(wǎng)站受到攻擊,數(shù)據(jù)庫(kù)會(huì)被破壞,這時(shí)需要從備份里面恢復(fù)數(shù)據(jù)庫(kù)。防止黑客在入侵了以后,循著網(wǎng)站的備份腳本將備份刪除掉,或者備份設(shè)備被入侵,數(shù)據(jù)庫(kù)被破壞造成的備份丟失、泄露,是常規(guī)的備份手段難以解決的問(wèn)題。因此,將數(shù)據(jù)庫(kù)安全地備份到云存儲(chǔ)實(shí)際上是一個(gè)比較簡(jiǎn)單且成本很低的手段。

那么,如何安全地備份數(shù)據(jù)庫(kù)到云存儲(chǔ)?牛小七將分三個(gè)步驟為大家詳解。

如何導(dǎo)出數(shù)據(jù)

對(duì)于小數(shù)據(jù)庫(kù)或者低壓力數(shù)據(jù)庫(kù)就很簡(jiǎn)單了,比如MySQL有mysqldump ,其它數(shù)據(jù)庫(kù)也有相對(duì)應(yīng)的dump工具,這些都能很好地解決問(wèn)題。高壓力數(shù)據(jù)庫(kù)一般會(huì)做一個(gè)主從結(jié)構(gòu),如果從數(shù)據(jù)庫(kù)能夠停機(jī)就很方便,因?yàn)閺臄?shù)據(jù)庫(kù)停機(jī)了以后不管是用dump還是直接用拷備文件,都能夠快速方便地把數(shù)據(jù)庫(kù)給導(dǎo)出來(lái);如果從數(shù)據(jù)庫(kù)不能停機(jī),建議在從數(shù)據(jù)庫(kù)下面的LVM磁盤(pán)層來(lái)處理。首先把從數(shù)據(jù)庫(kù)設(shè)為只讀并且同步所有數(shù)據(jù)到磁盤(pán)(比如 MySQL中的 FLUSHTABLES WITH READ LOCK),這種情況下數(shù)據(jù)庫(kù)的讀操作可以繼續(xù),但磁盤(pán)上的文件不再更改。

這時(shí),在LVM層執(zhí)行snapshot操作,完成之后,釋放掉數(shù)據(jù)庫(kù)中的鎖。再?gòu)腖VM的snapshot中拷貝文件,就得到一個(gè)很完整的數(shù)據(jù)庫(kù),并且不用擔(dān)心備份了事務(wù)中間的狀態(tài)。整個(gè)流程也很快,通常可以做到亞秒級(jí)的,而且在備份過(guò)程中從數(shù)據(jù)庫(kù)一直是可讀的,主從同步的延遲也影響很小,所以這個(gè)方案比較容易被接受,應(yīng)用也比較廣。

如何安全地加密數(shù)據(jù)

黑客入侵了之后,所有的腳本和很多加密機(jī)制都暴露在黑客面前。那么,怎樣才能完成加密又能避免黑客拿到相關(guān)信息來(lái)解密你的數(shù)據(jù)呢?一個(gè)簡(jiǎn)單的方法是用非對(duì)稱(chēng)密鑰,比如gpg就支持非對(duì)稱(chēng)加密,即gpg這邊生成一對(duì)公私鑰,私鑰放在自己的電腦好好保存,公鑰可以放在你的服務(wù)器上,用來(lái)加密你的數(shù)據(jù),需要從備份恢復(fù)時(shí)才需要?jiǎng)佑媚愕乃借€來(lái)解密數(shù)據(jù)。

如何安全地上傳數(shù)據(jù)到云存儲(chǔ)

防止客戶(hù)順著備份腳本把你的備份刪除或者覆蓋是兩個(gè)需要避免的問(wèn)題。七牛云存儲(chǔ)有上傳憑證的概念,它是是七牛上傳時(shí)用來(lái)鑒權(quán)的一個(gè)工具,它能很好地幫助你解決這個(gè)問(wèn)題:

上傳憑證中的路徑支持通配符,如 /backup/*,前后多次備份都可以使用同一個(gè)上傳憑證,不用每次準(zhǔn)備一個(gè)新的通配符;

上傳憑證具備有效期的概念,比如設(shè)一個(gè)一年的有效期,那么這一年的數(shù)據(jù)備份操作都可以用這個(gè)uptoken操作實(shí)現(xiàn);

上傳憑證還可以指定是否允許覆蓋原始文件。

例如,指定key的名字是 /backup/*,每次備份都可以用這個(gè)上傳憑證來(lái)上傳,指定有效期一年且不允許覆蓋,那么就可以做到方便地把你的數(shù)據(jù)備份放到云存儲(chǔ),不用擔(dān)心黑客刪除或者覆蓋掉你的文件。

此外,七牛還額外做了些事情簡(jiǎn)化提高整個(gè)備份的健壯性,比如上傳時(shí)支持分片上傳的操作,當(dāng)你的數(shù)據(jù)庫(kù)比較大,100G或者更大的一個(gè)數(shù)據(jù),想要一次性上傳成功,即使機(jī)房到機(jī)房上傳也是比較痛苦的,那么引入分片上傳的操作就可以提高上傳成功率。

備注:

上傳憑證的細(xì)節(jié)可以參考:

http://developer.qiniu.com/docs/v6/api/reference/security/upload-token.html

有一些開(kāi)源項(xiàng)目也是關(guān)于如何備份數(shù)據(jù)庫(kù)到七牛的,比如:

* Ruby: https://github.com/lidaobing/backup2qiniu

* C#: https://github.com/abelyao/qiniu-backup

* Python: https://github.com/chitosai/backup2qiniu

大家也可以參考七牛的合作伙伴多備份的技術(shù)方案,也能為大家提供備份服務(wù)。

分享到

sunyingying

相關(guān)推薦