1. 程式人生 > >備份容災數據 一致性問題

備份容災數據 一致性問題

數據一致性

一致性問題一般是指數據前後之間的邏輯關系是否一致(正確和完整簡單舉例來說,比如A用戶正在寫數據N的時候,B用戶開始讀數據N,由於A用戶剛寫了一半,所以B用戶讀的數據就不是前後邏輯一致性的,這就是一致性問題的一種。

一致性問題在各個領域都存在,提的比較多的是分布式存儲的一致性問題,數據庫的一致性問題,以及崩潰一致性問題。

我們黑方主要涉及到的可以認為是數據備份中的一致性問題,上面說到的一致性問題有關聯性,不完全相同。

數據備份中的一致性問題是指備份的文件及數據是否和待備份數據保持一致。主要兩個因素導致:

1、由於各種cache的存在,導致實際存儲在硬盤上的數據和用戶實際看到的並不一致;

2、在備份過程中,數據又可能發生變化,導致前後備份的數據處於不一致狀態

對於備份中的一致性問題,黑方的解決方案按備份方式的不同而有變化:

1、對於定時備份來說:

1)普通文件定時備份,windows系統,可以采用vss卷影的方式備份來解決一致性問題,VSS服務本身保證了在創建卷snapshot時數據是一致的。

2)數據庫文件備份,可以用數據庫提供的備份接口來解決,由這些接口API來負責提供數據一致性保障;

對於沒有提供接口API的,以普通文件形式直接備份,此時是存在崩潰一致性問題的,就是備份過程中數據發生變化,考慮到數據庫自身的健壯性,一般會檢查到數據不一致,從而觸發回滾到上一個一致性的狀態,在實際使用過程中,是可行的(不過理論上不完美)。

3OS系統備份,

windows下也是用vss卷影的方式;linux用文件打包的方式,文件的粒度相對於整個卷來說比較小,這樣可以認為是近似數據一致(理論上不完美,實際可行

2、對於實時備份來說:

黑方的實時備份主要是兩方面,文件cdp以及卷cdp

兩者對於一致性的處理基本方法一致,首先做完整備份,備份之前在驅動層做snapshot,然後開始備份,備份過程中如果發生數據更新,依據數據的不同會有兩種處理方法:

1)、文件cdp會將數據更新的部分先備份下來,然後更新到備份集裏;

2)、卷cdp會將數據更新的部分加上臟標誌,在備份完畢後重新對臟標誌的數據再次進行備份。

總結來說,黑方就是盡可能保證數據一致性,如果實在達不到,

要做到崩潰一致性。

崩潰一致性通常是指突然斷電或死機崩潰時的數據所處的一致性狀態,理論上任何app都應該能處理突然斷電的情況,所以能做到崩潰一致性也可以滿足需求。


備份容災數據 一致性問題