突破存儲跨中心雙活方案設計階段難點之四:如何防范數(shù)據(jù)同步邏輯錯誤?
存儲跨中心雙活是塊存儲的同步,無法避免邏輯錯誤被同步,出現(xiàn)該問題又該如何防范?
數(shù)據(jù)同步邏輯錯誤問題:存儲層面的復制技術(shù)基本以存儲塊為單位進行的數(shù)據(jù)復制,假設數(shù)據(jù)塊發(fā)生了邏輯錯誤,那么存儲是無法檢測到的,它會繼續(xù)將壞的數(shù)據(jù)塊兒同步到災備端,如果因此數(shù)據(jù)庫發(fā)生宕機,那么災備端的數(shù)據(jù)庫也同樣無法正常啟動。
解析和解答
鄧毓 某農(nóng)信社資深骨干工程師
這是一個很典型的問題,塊存儲如何防范邏輯錯誤。做了存儲的跨中心的雙活或者做了存儲的鏡像,同步復制,很容易就會覺得數(shù)據(jù)有兩份甚至多份一致性的副本,就會覺得萬事大吉,甚至覺得不需要備份系統(tǒng)了。
數(shù)據(jù)備份系統(tǒng)是企業(yè)數(shù)據(jù)安全的***一道防線,無論做了什么同步、異步、雙活還是連續(xù)性數(shù)據(jù)保護,數(shù)據(jù)備份系統(tǒng)都應該作為一個最穩(wěn)固可靠的基礎(chǔ)的存在,地位無法替代。
回到問題來,基于存儲的復制技術(shù),無論復制方式是同步、異步、雙活還是連續(xù)性數(shù)據(jù)保護,都是基于存儲數(shù)據(jù)塊級別的復制技術(shù),復制源端在可讀時,會將塊中的數(shù)據(jù)原樣的拷貝一份至目標端,當源端數(shù)據(jù)出現(xiàn)誤刪、誤改、磁區(qū)退化數(shù)據(jù)異變、數(shù)據(jù)庫事物層邏輯錯誤等數(shù)據(jù)邏輯性錯誤時,復制目標端無法檢測到這些錯誤,依舊復制“錯誤”的數(shù)據(jù),導致兩份副本都無法正常使用的災難。
所以我們要有多層次的防范機制,來保障數(shù)據(jù)的可靠性和安全性,存儲雙活技術(shù)只是其中的一個層次,要輔以備份技術(shù)、數(shù)據(jù)庫復制技術(shù),連續(xù)性數(shù)據(jù)保護,建立了完善的數(shù)據(jù)保障體系。
(1)備份系統(tǒng)按照一定的時間頻率對數(shù)據(jù)庫做全量和增量備份,在遇到數(shù)據(jù)邏輯錯誤時,通過恢復將數(shù)據(jù)回退到***一個備份版本。如TSM、NBU、COMMVAULT。
(2)數(shù)據(jù)庫復制技術(shù)有實時同步、準同步、異步等方式,保障主數(shù)據(jù)庫邏輯錯誤無法正常運行時,切至備數(shù)據(jù)庫,回退到備庫前一個日志COMMIT后的版本。如DB2 HADR、ORACLE ADG、MYSQL主從復制等。
(3)連續(xù)性數(shù)據(jù)保護技術(shù)也是準/實時對存儲數(shù)據(jù)塊做快照,源端數(shù)據(jù)無法繼續(xù)使用時,通過快照回退至前一個數(shù)據(jù)可用版本。如CDP。
通常為了考慮不影響源端數(shù)據(jù)的訪問性能或者單個系統(tǒng)無法滿足需求時,可以考慮多種方式結(jié)合,比如備份系統(tǒng)在備份超大數(shù)據(jù)庫時,沒有充足的帶寬或者備份時間窗口,可以用數(shù)據(jù)庫的異步復制方式來做為備份方式的補充;連續(xù)性數(shù)據(jù)保護技術(shù)需要通過LVM鏡像源端數(shù)據(jù),增加了寫延遲,可以通過數(shù)據(jù)庫準實時同步或者異步的方式復制數(shù)據(jù)到備庫節(jié)點,備庫節(jié)點的后端存儲為連續(xù)性數(shù)據(jù)保護的存儲節(jié)點,如DB2 HADR+CDP的組合。
所以總結(jié)來看,存儲跨中心雙活并不是***的,依舊需要傳統(tǒng)的數(shù)據(jù)保障技術(shù)輔助,建立常態(tài)高效的數(shù)據(jù)保障體系,才能應對萬難。