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