一種用于數(shù)據(jù)備份的方法以及裝置的制造方法
【專利摘要】本申請(qǐng)公開了一種用于數(shù)據(jù)備份的方法,包括:向備庫查詢校驗(yàn)數(shù)據(jù),其中,所述校驗(yàn)數(shù)據(jù)為在主庫中插入的數(shù)據(jù),且在將寫入到主庫中的數(shù)據(jù)通過日志方式備份至備庫過程中,所述校驗(yàn)數(shù)據(jù)同時(shí)備份到備庫中;獲取該校驗(yàn)數(shù)據(jù)插入主庫的時(shí)間,并將該時(shí)間作為完備時(shí)間點(diǎn);將鏡像數(shù)據(jù)中早于該完備時(shí)間點(diǎn)之前的數(shù)據(jù)記錄刪除;其中,所述鏡像數(shù)據(jù)為在向主庫中寫入數(shù)據(jù)時(shí),同步寫入到設(shè)定存儲(chǔ)空間的數(shù)據(jù)。所述用于數(shù)據(jù)備份的方法實(shí)現(xiàn)簡(jiǎn)單,成本較低,并且備份數(shù)據(jù)的安全性較高。
【專利說明】
一種用于數(shù)據(jù)備份的方法以及裝置
技術(shù)領(lǐng)域
[0001]本申請(qǐng)涉及數(shù)據(jù)備份技術(shù)領(lǐng)域,具體涉及一種用于數(shù)據(jù)備份的方法。本申請(qǐng)同時(shí)涉及一種用于檢測(cè)主備庫數(shù)據(jù)差異的方法,一種用于數(shù)據(jù)備份的裝置,以及一種用于檢測(cè)主備庫數(shù)據(jù)差異的裝置。
【背景技術(shù)】
[0002]隨著近幾年來業(yè)務(wù)系統(tǒng)的高速發(fā)展,當(dāng)前的數(shù)據(jù)庫管理系統(tǒng)(DatabaseManagement System, DBMS)也隨著客戶的增加、業(yè)務(wù)的增長(zhǎng)以及業(yè)務(wù)系統(tǒng)的交易數(shù)和交易復(fù)雜度的增長(zhǎng)有了大規(guī)模的提升,同時(shí)也導(dǎo)致了 DBMS中的數(shù)據(jù)變化更加頻繁,DBMS的ACID (原子性 Atomicity、一致性 Consistency、隔離性 Isolat1n 和持久性 Durability)實(shí)現(xiàn),保證了 DBMS中數(shù)據(jù)的穩(wěn)定性和持久性。其中,持久性意味著在主機(jī)Host失效的時(shí)候,可以保證數(shù)據(jù)的持久一致。當(dāng)前,DBMS采用的是開放的MySQL數(shù)據(jù)庫產(chǎn)品,通過主備庫進(jìn)行異步數(shù)據(jù)復(fù)制來實(shí)現(xiàn);主庫(master)首先將數(shù)據(jù)的變化記錄到二進(jìn)制日志(binarylog,binlog)中,binlog記錄的是數(shù)據(jù)寫入主庫,或者主庫中的數(shù)據(jù)發(fā)生改變的事件;備庫(slave)將binlog中記錄的事件復(fù)制到中繼日志(relay log)中;slave執(zhí)行relay log中記錄的事件,并以relay log中記錄的數(shù)據(jù)更新自身存儲(chǔ)的數(shù)據(jù)。在主備庫進(jìn)行異步數(shù)據(jù)復(fù)制的過程中,如果master突然出現(xiàn)異常,貝>J可能會(huì)存在slave未能及時(shí)復(fù)制master中的數(shù)據(jù),造成數(shù)據(jù)丟失。
[0003]目前,針對(duì)上述MySQL數(shù)據(jù)庫主備庫進(jìn)行異步數(shù)據(jù)復(fù)制造成的數(shù)據(jù)丟失,主要的解決方案是基于MySQL數(shù)據(jù)庫的半同步復(fù)制模式(Sem1-synchronous Replicat1n),所述半同步復(fù)制模式下設(shè)有一個(gè)master和至少一個(gè)slave,master執(zhí)行完自身的某一事務(wù)后,設(shè)有一個(gè)延時(shí)等待,用于等待slave來執(zhí)行該事務(wù),直到有任意一個(gè)slave執(zhí)行該事務(wù),否則master會(huì)繼續(xù)上述的延時(shí)等待,防止了由于master異常導(dǎo)致slave未能及時(shí)復(fù)制master中的數(shù)據(jù)造成的數(shù)據(jù)丟失。
[0004]上述提供的現(xiàn)有技術(shù)存在明顯的缺陷,上述基于MySQL數(shù)據(jù)庫的半同步復(fù)制模式,實(shí)現(xiàn)難度較大,并且在執(zhí)行單條事務(wù)時(shí)增加了額外的延時(shí)等待,導(dǎo)致在備份數(shù)據(jù)時(shí)的耗時(shí)較長(zhǎng);此外,上述基于MySQL數(shù)據(jù)庫的半同步復(fù)制模式,如果slave出現(xiàn)異常,則master無法接收slave發(fā)送的事務(wù)消息,master在延時(shí)等待結(jié)束之后,切換為異步復(fù)制模式,并一直處于異步復(fù)制模式,存在一定的缺陷。
【發(fā)明內(nèi)容】
[0005]本申請(qǐng)?zhí)峁┮环N用于數(shù)據(jù)備份的方法,以解決現(xiàn)有技術(shù)存在的數(shù)據(jù)備份耗時(shí)長(zhǎng)和實(shí)現(xiàn)難度大的問題。本申請(qǐng)同時(shí)涉及一種用于檢測(cè)主備庫數(shù)據(jù)差異的方法,一種用于數(shù)據(jù)備份的裝置,以及一種用于檢測(cè)主備庫數(shù)據(jù)差異的裝置。
[0006]本申請(qǐng)?zhí)峁┮环N用于數(shù)據(jù)備份的方法,包括:
[0007]向備庫查詢校驗(yàn)數(shù)據(jù),其中,所述校驗(yàn)數(shù)據(jù)為在主庫中插入的數(shù)據(jù),且在將寫入到主庫中的數(shù)據(jù)通過日志方式備份至備庫過程中,所述校驗(yàn)數(shù)據(jù)同時(shí)備份到備庫中;
[0008]獲取該校驗(yàn)數(shù)據(jù)插入主庫的時(shí)間,并將該時(shí)間作為完備時(shí)間點(diǎn);
[0009]將鏡像數(shù)據(jù)中早于該完備時(shí)間點(diǎn)之前的數(shù)據(jù)記錄刪除;
[0010]其中,所述鏡像數(shù)據(jù)為在向主庫中寫入數(shù)據(jù)時(shí),同步寫入到設(shè)定存儲(chǔ)空間的數(shù)據(jù)。
[0011]可選的,所述校驗(yàn)數(shù)據(jù)為在主庫中插入的數(shù)據(jù),相應(yīng)的,該校驗(yàn)數(shù)據(jù)插入主庫的步驟,采用下述方式:
[0012]周期性的檢測(cè)在預(yù)設(shè)的時(shí)間段內(nèi)是否有數(shù)據(jù)寫入主庫;
[0013]若是,則檢測(cè)主庫中是否存在所述校驗(yàn)數(shù)據(jù);
[0014]若存在,以替換主庫中存儲(chǔ)的校驗(yàn)數(shù)據(jù)的方式將該校驗(yàn)數(shù)據(jù)插入主庫;
[0015]若不存在,則將該校驗(yàn)數(shù)據(jù)插入主庫;
[0016]若否,則返回所述周期性的檢測(cè)在預(yù)設(shè)的時(shí)間段內(nèi)是否有數(shù)據(jù)寫入主庫的步驟。
[0017]可選的,所述寫入到主庫中的數(shù)據(jù)和校驗(yàn)數(shù)據(jù),通過日志方式備份至備庫,相應(yīng)的,所述數(shù)據(jù)和校驗(yàn)數(shù)據(jù)通過日志方式備份至備庫的步驟,采用下述方式:
[0018]將寫入主庫的數(shù)據(jù)和校驗(yàn)數(shù)據(jù)記錄到二進(jìn)制日志中;
[0019]將所述二進(jìn)制日志中記錄的數(shù)據(jù)事件復(fù)制到中繼日志中;
[0020]執(zhí)行所述中繼日志中記錄的數(shù)據(jù)事件,并以該中繼日志中記錄的數(shù)據(jù)和校驗(yàn)數(shù)據(jù)更新備庫。
[0021]可選的,所述將鏡像數(shù)據(jù)中早于該完備時(shí)間點(diǎn)之前的數(shù)據(jù)記錄刪除的步驟,包括:
[0022]獲取所述鏡像數(shù)據(jù)寫入所述存儲(chǔ)空間的時(shí)間;
[0023]將所述鏡像數(shù)據(jù)寫入所述存儲(chǔ)空間的時(shí)間與所述完備時(shí)間點(diǎn)進(jìn)行比較,獲得該鏡像數(shù)據(jù)中早于完備時(shí)間點(diǎn)之前的數(shù)據(jù)記錄;
[0024]將所述鏡像數(shù)據(jù)中早于完備時(shí)間點(diǎn)之前的數(shù)據(jù)記錄刪除。
[0025]可選的,所述獲取該校驗(yàn)數(shù)據(jù)插入主庫的時(shí)間的步驟,采用下述方式:
[0026]從所述校驗(yàn)數(shù)據(jù)中讀取該校驗(yàn)數(shù)據(jù)插入主庫的時(shí)間,并將該時(shí)間作為所述完備時(shí)間點(diǎn)。
[0027]可選的,所述獲取該校驗(yàn)數(shù)據(jù)插入主庫的時(shí)間的步驟,采用下述方式:
[0028]根據(jù)所述中繼日志中記錄的數(shù)據(jù)事件,從所述數(shù)據(jù)事件中讀取所述校驗(yàn)數(shù)據(jù)插入主庫的時(shí)間,并將該時(shí)間作為所述完備時(shí)間點(diǎn)。
[0029]可選的,所述鏡像數(shù)據(jù)為在向主庫中寫入數(shù)據(jù)時(shí),同步寫入到設(shè)定存儲(chǔ)空間的數(shù)據(jù),相應(yīng)的,所述數(shù)據(jù)同步寫入到設(shè)定存儲(chǔ)空間,采用下述任意一種方式:
[0030]將所述數(shù)據(jù)以本地存儲(chǔ)的方式同步寫入到設(shè)定存儲(chǔ)空間;
[0031]將所述數(shù)據(jù)以遠(yuǎn)端存儲(chǔ)的方式同步寫入到設(shè)定存儲(chǔ)空間。
[0032]可選的,所述存儲(chǔ)空間包括內(nèi)存和/或磁盤。
[0033]本申請(qǐng)另外提供一種用于檢測(cè)主備庫數(shù)據(jù)差異的方法,包括:
[0034]向備庫查詢校驗(yàn)數(shù)據(jù),其中,所述校驗(yàn)數(shù)據(jù)為在主庫中插入的數(shù)據(jù),且在將寫入到主庫中的數(shù)據(jù)通過日志方式備份至備庫過程中,所述校驗(yàn)數(shù)據(jù)同時(shí)備份到備庫中;
[0035]獲取該校驗(yàn)數(shù)據(jù)插入主庫的時(shí)間,并將該時(shí)間作為完備時(shí)間點(diǎn);
[0036]檢測(cè)主庫中是否存在寫入主庫的時(shí)間晚于所述完備時(shí)間點(diǎn)之后的數(shù)據(jù);
[0037]若是,將所述寫入主庫的時(shí)間晚于所述完備時(shí)間點(diǎn)的數(shù)據(jù)視為主庫和備庫之間存在差異的數(shù)據(jù)。
[0038]可選的,所述檢測(cè)主庫中是否存在寫入主庫的時(shí)間晚于所述完備時(shí)間點(diǎn)之后的數(shù)據(jù)的步驟,包括:
[0039]周期性的檢測(cè)主庫中是否存在寫入主庫的時(shí)間晚于所述完備時(shí)間點(diǎn)之后的數(shù)據(jù);
[0040]若是,則檢測(cè)該寫入主庫的時(shí)間晚于所述完備時(shí)間點(diǎn)之后的數(shù)據(jù)在備庫中是否存在;
[0041]若存在,則主庫和備庫之間沒有存在差異的數(shù)據(jù);
[0042]若不存在,則將所述寫入主庫的時(shí)間晚于所述完備時(shí)間點(diǎn)之后的數(shù)據(jù)視為主庫和備庫之間存在差異的數(shù)據(jù)。
[0043]本申請(qǐng)另外提供一種用于數(shù)據(jù)備份的裝置,包括:
[0044]校驗(yàn)數(shù)據(jù)查詢單元,用于向備庫查詢校驗(yàn)數(shù)據(jù),其中,所述校驗(yàn)數(shù)據(jù)為在主庫中插入的數(shù)據(jù),且在將寫入到主庫中的數(shù)據(jù)通過日志方式備份至備庫過程中,所述校驗(yàn)數(shù)據(jù)同時(shí)備份到備庫中;
[0045]完備時(shí)間點(diǎn)獲取單元,用于獲取該校驗(yàn)數(shù)據(jù)插入主庫的時(shí)間,并將該時(shí)間作為完備時(shí)間點(diǎn);
[0046]數(shù)據(jù)記錄刪除單元,用于將鏡像數(shù)據(jù)中早于該完備時(shí)間點(diǎn)之前的數(shù)據(jù)記錄刪除;
[0047]其中,所述鏡像數(shù)據(jù)為在向主庫中寫入數(shù)據(jù)時(shí),同步寫入到設(shè)定存儲(chǔ)空間的數(shù)據(jù)。
[0048]可選的,所述校驗(yàn)數(shù)據(jù)為在主庫中插入的數(shù)據(jù),相應(yīng)的,該校驗(yàn)數(shù)據(jù)通過下述單元插入主庫:
[0049]數(shù)據(jù)寫入檢測(cè)單元,用于周期性的檢測(cè)在預(yù)設(shè)的時(shí)間段內(nèi)是否有數(shù)據(jù)寫入主庫;
[0050]若是,則進(jìn)入校驗(yàn)數(shù)據(jù)檢測(cè)單元;
[0051]若否,則返回所述數(shù)據(jù)寫入檢測(cè)單元;
[0052]所述校驗(yàn)數(shù)據(jù)檢測(cè)單元,用于檢測(cè)主庫中是否存在所述校驗(yàn)數(shù)據(jù);
[0053]若存在,以替換主庫中存儲(chǔ)的校驗(yàn)數(shù)據(jù)的方式將該校驗(yàn)數(shù)據(jù)插入主庫;
[0054]若不存在,則將該校驗(yàn)數(shù)據(jù)插入主庫。
[0055]可選的,所述寫入到主庫中的數(shù)據(jù)和校驗(yàn)數(shù)據(jù),通過日志方式備份至備庫,相應(yīng)的,所述數(shù)據(jù)和校驗(yàn)數(shù)據(jù)通過下述單元備份至備庫:
[0056]數(shù)據(jù)寫入單元,用于將寫入主庫的數(shù)據(jù)和校驗(yàn)數(shù)據(jù)記錄到二進(jìn)制日志中;
[0057]數(shù)據(jù)復(fù)制單元,用于將所述二進(jìn)制日志中記錄的數(shù)據(jù)事件復(fù)制到中繼日志中;
[0058]數(shù)據(jù)更新單元,用于執(zhí)行所述中繼日志中記錄的數(shù)據(jù)事件,并以該中繼日志中記錄的數(shù)據(jù)和校驗(yàn)數(shù)據(jù)更新備庫。
[0059]可選的,所述數(shù)據(jù)記錄刪除單元,包括:
[0060]數(shù)據(jù)寫入時(shí)間獲取子單元,用于獲取所述鏡像數(shù)據(jù)寫入所述存儲(chǔ)空間的時(shí)間;
[0061]數(shù)據(jù)比較子單元,用于將所述鏡像數(shù)據(jù)寫入所述存儲(chǔ)空間的時(shí)間與所述完備時(shí)間點(diǎn)進(jìn)行比較,獲得該鏡像數(shù)據(jù)中早于完備時(shí)間點(diǎn)之前的數(shù)據(jù)記錄;
[0062]數(shù)據(jù)刪除子單元,用于將所述鏡像數(shù)據(jù)中早于完備時(shí)間點(diǎn)之前的數(shù)據(jù)記錄刪除。
[0063]本申請(qǐng)另外提供一種用于檢測(cè)主備庫數(shù)據(jù)差異的裝置,包括:
[0064]校驗(yàn)數(shù)據(jù)查詢單元,用于向備庫查詢校驗(yàn)數(shù)據(jù),其中,所述校驗(yàn)數(shù)據(jù)為在主庫中插入的數(shù)據(jù),且在將寫入到主庫中的數(shù)據(jù)通過日志方式備份至備庫過程中,所述校驗(yàn)數(shù)據(jù)同時(shí)備份到備庫中;
[0065]完備時(shí)間點(diǎn)獲取單元,用于獲取該校驗(yàn)數(shù)據(jù)插入主庫的時(shí)間,并將該時(shí)間作為完備時(shí)間點(diǎn);
[0066]數(shù)據(jù)檢測(cè)單元,用于檢測(cè)主庫中是否存在寫入主庫的時(shí)間晚于所述完備時(shí)間點(diǎn)之后的數(shù)據(jù);
[0067]若是,則進(jìn)入差異數(shù)據(jù)生成單元;
[0068]所述差異數(shù)據(jù)生成單元,用于將所述寫入主庫的時(shí)間晚于所述完備時(shí)間點(diǎn)的數(shù)據(jù)視為主庫和備庫之間存在差異的數(shù)據(jù)。
[0069]可選的,所述數(shù)據(jù)檢測(cè)單元,包括:
[0070]第一數(shù)據(jù)檢測(cè)子單元,用于周期性的檢測(cè)主庫中是否存在寫入主庫的時(shí)間晚于所述完備時(shí)間點(diǎn)之后的數(shù)據(jù);
[0071]若是,則進(jìn)入第二數(shù)據(jù)檢測(cè)子單元;
[0072]所述第二數(shù)據(jù)檢測(cè)子單元,用于檢測(cè)該寫入主庫的時(shí)間晚于所述完備時(shí)間點(diǎn)之后的數(shù)據(jù)在備庫中是否存在;
[0073]若存在,則主庫和備庫之間沒有存在差異的數(shù)據(jù);
[0074]若不存在,則將所述寫入主庫的時(shí)間晚于所述完備時(shí)間點(diǎn)之后的數(shù)據(jù)視為主庫和備庫之間存在差異的數(shù)據(jù)。
[0075]與現(xiàn)有技術(shù)相比,本申請(qǐng)具有以下優(yōu)點(diǎn):
[0076]本申請(qǐng)所述的用于數(shù)據(jù)備份的方法,包括:向備庫查詢校驗(yàn)數(shù)據(jù),其中,所述校驗(yàn)數(shù)據(jù)為在主庫中插入的數(shù)據(jù),且在將寫入到主庫中的數(shù)據(jù)通過日志方式備份至備庫過程中,所述校驗(yàn)數(shù)據(jù)同時(shí)備份到備庫中;獲取該校驗(yàn)數(shù)據(jù)插入主庫的時(shí)間,并將該時(shí)間作為完備時(shí)間點(diǎn);將鏡像數(shù)據(jù)中早于該完備時(shí)間點(diǎn)之前的數(shù)據(jù)記錄刪除;其中,所述鏡像數(shù)據(jù)為在向主庫中寫入數(shù)據(jù)時(shí),同步寫入到設(shè)定存儲(chǔ)空間的數(shù)據(jù)。
[0077]本申請(qǐng)所述的用于數(shù)據(jù)備份的方法,將數(shù)據(jù)備份到主庫,并同時(shí)將所述數(shù)據(jù)以完整鏡像的方式備份到獨(dú)立于主庫存儲(chǔ)之外的存儲(chǔ)空間,形成鏡像數(shù)據(jù),主庫的數(shù)據(jù)通過日志的方式備份到備庫,形成另外一個(gè)數(shù)據(jù)的備份,通過周期性的向主庫插入校驗(yàn)數(shù)據(jù),以及周期性的向備庫查詢所述校驗(yàn)數(shù)據(jù)在檢測(cè)主庫和備庫之間重復(fù)的數(shù)據(jù),將所述鏡像數(shù)據(jù)中所述主庫和備庫之間重復(fù)的數(shù)據(jù)刪除,使所述鏡像數(shù)據(jù)和所述備庫中的數(shù)據(jù)組成一個(gè)完整的數(shù)據(jù)備份,實(shí)現(xiàn)簡(jiǎn)單,成本較低,并且備份數(shù)據(jù)的安全性較高。
【附圖說明】
[0078]圖1是本申請(qǐng)實(shí)施例提供的一種用于數(shù)據(jù)備份的方法處理流程圖;
[0079]圖2是本申請(qǐng)實(shí)施例提供的一種用于檢測(cè)主備庫數(shù)據(jù)差異的方法處理流程圖;
[0080]圖3是本申請(qǐng)實(shí)施例提供的一種用于數(shù)據(jù)備份的裝置示意圖;
[0081]圖4是本申請(qǐng)實(shí)施例提供的一種用于檢測(cè)主備庫數(shù)據(jù)差異的裝置示意圖。
【具體實(shí)施方式】
[0082]在下面的描述中闡述了很多具體細(xì)節(jié)以便于充分理解本申請(qǐng)。但是本申請(qǐng)能夠以很多不同于在此描述的其他方式來實(shí)施,本領(lǐng)域技術(shù)人員可以在不違背本申請(qǐng)內(nèi)涵的情況下做類似推廣,因此本申請(qǐng)不受下面公開的具體實(shí)施的限制。
[0083]本申請(qǐng)?zhí)峁┮环N用于數(shù)據(jù)備份的方法,此外,本申請(qǐng)還提供一種用于檢測(cè)主備庫數(shù)據(jù)差異的方法,一種用于數(shù)據(jù)備份的裝置,以及一種用于檢測(cè)主備庫數(shù)據(jù)差異的裝置。
[0084]本申請(qǐng)?zhí)峁┑囊环N用于數(shù)據(jù)備份的方法實(shí)施例如下:
[0085]參照?qǐng)D1,其示出了本實(shí)施例提供的一種用于數(shù)據(jù)備份的方法處理流程圖。
[0086]以下結(jié)合圖1對(duì)本實(shí)施例提供的一種用于數(shù)據(jù)備份的方法進(jìn)行說明,并且對(duì)該方法的各個(gè)步驟進(jìn)行說明;此外,本實(shí)施例提供的一種用于數(shù)據(jù)備份的方法的具體步驟之間的順序關(guān)系請(qǐng)根據(jù)圖1確定。
[0087]步驟S101,向備庫查詢校驗(yàn)數(shù)據(jù)。
[0088]本實(shí)施例以一種基于MySQL數(shù)據(jù)庫的用于數(shù)據(jù)備份的方法為例,對(duì)本申請(qǐng)?zhí)峁┑乃鲇糜跀?shù)據(jù)備份的方法進(jìn)行說明;因此,本實(shí)施例中,所述主庫和備庫是指MySQL數(shù)據(jù)庫。
[0089]除此之外,還可以基于其他的數(shù)據(jù)庫平臺(tái)對(duì)本申請(qǐng)?zhí)峁┑挠糜跀?shù)據(jù)備份的方法進(jìn)行說明,在此不作限定。
[0090]所述校驗(yàn)數(shù)據(jù),是指在主庫中插入的數(shù)據(jù),其中包含有特定的信息,區(qū)別于所述數(shù)據(jù)(即:待備份的數(shù)據(jù))。
[0091]需要說明的是,在本步驟所述的向備庫查詢校驗(yàn)數(shù)據(jù)之前,包括將所述校驗(yàn)數(shù)據(jù)插入主庫的步驟,具體實(shí)現(xiàn)如下:
[0092]I)周期性的檢測(cè)在預(yù)設(shè)的時(shí)間段內(nèi)是否有數(shù)據(jù)寫入主庫;
[0093]所述數(shù)據(jù),是指待備份的數(shù)據(jù),是由應(yīng)用程序被業(yè)務(wù)系統(tǒng)調(diào)用后產(chǎn)生的有用數(shù)據(jù),例如用戶信息、交易信息等。
[0094]上述檢測(cè)過程中設(shè)置周期的目的是為了減少數(shù)據(jù)的處理量,比如在深夜或者凌晨時(shí),數(shù)據(jù)比較少,此時(shí),校驗(yàn)數(shù)據(jù)的插入主庫的頻率大大降低。通過設(shè)置檢測(cè)的周期,能夠避免特殊情形下頻繁將所述校驗(yàn)數(shù)據(jù)插入主庫造成的系統(tǒng)資源的浪費(fèi)。
[0095]若是,進(jìn)入下述步驟2),檢測(cè)主庫中是否存在所述校驗(yàn)數(shù)據(jù);
[0096]若否,則重復(fù)該步驟,返回所述周期性的檢測(cè)在預(yù)設(shè)的時(shí)間段內(nèi)是否有數(shù)據(jù)寫入主庫的步驟。
[0097]除此之外,上述周期性的檢測(cè)在預(yù)設(shè)的時(shí)間段內(nèi)是否有數(shù)據(jù)插入主庫的步驟還可以通過其他方法實(shí)現(xiàn),比如檢測(cè)在特定時(shí)間段內(nèi)是否有數(shù)據(jù)寫入主庫,在此不作限定。
[0098]2)檢測(cè)主庫中是否存在所述校驗(yàn)數(shù)據(jù);
[0099]若存在,以替換主庫中存儲(chǔ)的校驗(yàn)數(shù)據(jù)的方式將該校驗(yàn)數(shù)據(jù)插入主庫;
[0100]若不存在,則將該校驗(yàn)數(shù)據(jù)插入主庫;
[0101]本實(shí)施例是以覆蓋替換的方式在主庫中插入所述校驗(yàn)數(shù)據(jù);因此,在所述校驗(yàn)數(shù)據(jù)插入主庫之前,需要進(jìn)行檢測(cè),檢測(cè)主庫中是否存在所述校驗(yàn)數(shù)據(jù),如果檢測(cè)到主庫中存在校驗(yàn)數(shù)據(jù),則以替換主庫中存儲(chǔ)的校驗(yàn)數(shù)據(jù)的方式將該數(shù)據(jù)插入主庫即可;如果檢測(cè)到主庫中不存在校驗(yàn)數(shù)據(jù),則表明該校驗(yàn)數(shù)據(jù)是首次插入主庫中,或者主庫出現(xiàn)異常,則直接將該校驗(yàn)數(shù)據(jù)插入主庫即可。
[0102]此外,需要說明的是,在本步驟所述的向備庫查詢校驗(yàn)數(shù)據(jù)之前,還包括:基于MySQL數(shù)據(jù)庫的主備庫異步復(fù)制原理,將主庫中存儲(chǔ)的數(shù)據(jù)和校驗(yàn)數(shù)據(jù)通過日志方式備份至備庫,具體實(shí)現(xiàn)如下:
[0103]將寫入主庫的數(shù)據(jù)和校驗(yàn)數(shù)據(jù)記錄到binlog中;
[0104]將所述binlog中記錄的數(shù)據(jù)事件復(fù)制到relay log中;
[0105]執(zhí)行所述relay log中記錄的數(shù)據(jù)事件,并以該relay log中記錄的數(shù)據(jù)和校驗(yàn)數(shù)據(jù)更新備庫。
[0106]上述將主庫中存儲(chǔ)的數(shù)據(jù)和校驗(yàn)數(shù)據(jù)復(fù)制到備庫的過程中,需要花費(fèi)一定的時(shí)間,基于此,當(dāng)主庫突然出現(xiàn)異常時(shí),很可能造成主庫中的數(shù)據(jù)和/或校驗(yàn)數(shù)據(jù)并未全部復(fù)制到備庫中,導(dǎo)致備庫中的數(shù)據(jù)和/或校驗(yàn)數(shù)據(jù)缺失。
[0107]本發(fā)明正是為了解決這個(gè)缺陷,在將數(shù)據(jù)寫入到主庫的過程中,同時(shí)將該數(shù)據(jù)寫入到設(shè)定存儲(chǔ)空間中,生成該數(shù)據(jù)的一個(gè)鏡像數(shù)據(jù)。
[0108]具體的,本實(shí)施例中,將數(shù)據(jù)進(jìn)行序列化,序列化為可存儲(chǔ)的數(shù)據(jù)格式之后,將數(shù)據(jù)寫入到計(jì)算機(jī)本地的存儲(chǔ)空間中,生成該數(shù)據(jù)的一個(gè)鏡像數(shù)據(jù);其中,所述存儲(chǔ)空間包括內(nèi)存、磁盤,以及內(nèi)存與磁盤二者的組合。
[0109]除此之外,還可以將該據(jù)存儲(chǔ)到遠(yuǎn)端服務(wù)器的存儲(chǔ)空間中,或者存儲(chǔ)到云存儲(chǔ)空間中,在此不做限定。
[0110]步驟S102,獲取該校驗(yàn)數(shù)據(jù)插入主庫的時(shí)間,并將該時(shí)間作為完備時(shí)間點(diǎn)。
[0111]本步驟得以實(shí)施的前提是上述步驟SlOl中,在備庫中查詢到所述校驗(yàn)數(shù)據(jù)。
[0112]根據(jù)上述步驟SlOl在備庫中查詢到的所述校驗(yàn)數(shù)據(jù),獲取該校驗(yàn)數(shù)據(jù)插入主庫的時(shí)間,并將該時(shí)間作為完備時(shí)間點(diǎn),具體實(shí)現(xiàn)如下:
[0113]在備庫的數(shù)據(jù)表中找到包含有該校驗(yàn)數(shù)據(jù)的relay log,根據(jù)所述relay log中記錄的數(shù)據(jù)事件,從所述數(shù)據(jù)事件中讀該校驗(yàn)數(shù)據(jù)插入主庫的時(shí)間,并將該校驗(yàn)數(shù)據(jù)插入主庫的時(shí)間作為所述完備時(shí)間點(diǎn)。
[0114]除此之外,上述獲取該校驗(yàn)數(shù)據(jù)插入主庫的時(shí)間的步驟還可以采用其他方法實(shí)現(xiàn),比如從所述校驗(yàn)數(shù)據(jù)自身包含的時(shí)間信息中讀取該校驗(yàn)數(shù)據(jù)插入主庫的時(shí)間,并將該時(shí)間作為所述完備時(shí)間,在此不做限定。
[0115]步驟S103,將鏡像數(shù)據(jù)中早于該完備時(shí)間點(diǎn)之前的數(shù)據(jù)記錄刪除。
[0116]上述步驟S101,向備庫查詢校驗(yàn)數(shù)據(jù),上述步驟S102,獲取所述完備時(shí)間點(diǎn),本步驟中,將所述鏡像數(shù)據(jù)和備庫二者存儲(chǔ)的數(shù)據(jù)中相互重復(fù)的部分?jǐn)?shù)據(jù)刪除,即:將鏡像數(shù)據(jù)中早于該完備時(shí)間點(diǎn)之前的數(shù)據(jù)記錄刪除,具體實(shí)現(xiàn)如下:
[0117]I)獲取所述鏡像數(shù)據(jù)寫入所述存儲(chǔ)空間的時(shí)間;
[0118]所述鏡像數(shù)據(jù)寫入所述存儲(chǔ)空間的時(shí)間,是指所述數(shù)據(jù)寫入計(jì)算機(jī)本地的存儲(chǔ)空間時(shí)的時(shí)間。
[0119]2)將所述鏡像數(shù)據(jù)寫入所述存儲(chǔ)空間的時(shí)間與所述完備時(shí)間點(diǎn)進(jìn)行比較,獲得該鏡像數(shù)據(jù)中早于完備時(shí)間點(diǎn)之前的數(shù)據(jù)記錄;
[0120]3)將所述鏡像數(shù)據(jù)中早于完備時(shí)間點(diǎn)之前的數(shù)據(jù)記錄刪除。
[0121]此處,基于上述步驟I)、2)和3),存在兩種情況:
[0122]一是備庫中的日志數(shù)據(jù)與主庫中的日志數(shù)據(jù)相比,沒有缺失;由于數(shù)據(jù)寫入主庫和寫入所述存儲(chǔ)空間是同步的,此時(shí),所述完備時(shí)間點(diǎn)為插入主庫的時(shí)間最晚的一個(gè)校驗(yàn)數(shù)據(jù)插入主庫的時(shí)間,即:所述存儲(chǔ)空間中的鏡像數(shù)據(jù)全部都是完備時(shí)間點(diǎn)之前的數(shù)據(jù),則將所述鏡像數(shù)據(jù)中早于完備時(shí)間點(diǎn)之前的數(shù)據(jù)記錄刪除,即:刪除存儲(chǔ)空間中存儲(chǔ)的全部鏡像數(shù)據(jù);
[0123]二是備庫中的日志數(shù)據(jù)與主庫中的日志數(shù)據(jù)相比,有一定的缺失;此時(shí),存儲(chǔ)空間的鏡像數(shù)據(jù)中在完備時(shí)間點(diǎn)之前的數(shù)據(jù)為存儲(chǔ)空間和備庫二者之間重復(fù)的數(shù)據(jù),則將存儲(chǔ)空間中存儲(chǔ)的鏡像數(shù)據(jù)中在所述完備時(shí)間點(diǎn)之前的數(shù)據(jù)刪除即可。
[0124]除此之外,上述將鏡像數(shù)據(jù)中早于該完備時(shí)間點(diǎn)之前的數(shù)據(jù)記錄刪除的步驟還可以采用其他方法實(shí)現(xiàn),在此不作限定。
[0125]本申請(qǐng)?zhí)峁┑囊环N用于檢測(cè)主備庫數(shù)據(jù)差異的方法實(shí)施例如下:
[0126]參照?qǐng)D2,其示出了本實(shí)施例提供的一種用于檢測(cè)主備庫數(shù)據(jù)差異的方法處理流程圖。
[0127]以下結(jié)合圖2對(duì)本實(shí)施例提供的一種用于檢測(cè)主備庫數(shù)據(jù)差異的方法進(jìn)行說明,并且對(duì)該方法的各個(gè)步驟進(jìn)行說明;此外,本實(shí)施例提供的一種用于檢測(cè)主備庫數(shù)據(jù)差異的方法的具體步驟之間的順序關(guān)系請(qǐng)根據(jù)圖2確定。
[0128]步驟S201,向備庫查詢校驗(yàn)數(shù)據(jù)。
[0129]本實(shí)施例以一種基于MySQL數(shù)據(jù)庫的用于數(shù)據(jù)備份的方法為例,對(duì)本申請(qǐng)?zhí)峁┑乃鲇糜跀?shù)據(jù)備份的方法進(jìn)行說明;因此,本實(shí)施例中,所述主庫和備庫是指MySQL數(shù)據(jù)庫。
[0130]除此之外,還可以基于其他的數(shù)據(jù)庫平臺(tái)對(duì)本申請(qǐng)?zhí)峁┑挠糜跀?shù)據(jù)備份的方法進(jìn)行說明,在此不作限定。
[0131]所述校驗(yàn)數(shù)據(jù),是指在主庫中插入的數(shù)據(jù),其中包含有特定的信息,區(qū)別于所述數(shù)據(jù)(即:待備份的數(shù)據(jù))。
[0132]需要說明的是,在本步驟所述的向備庫查詢校驗(yàn)數(shù)據(jù)之前,包括將所述校驗(yàn)數(shù)據(jù)插入主庫的步驟,具體實(shí)現(xiàn)如下:
[0133]I)周期性的檢測(cè)主庫中是否存在寫入主庫的時(shí)間晚于所述完備時(shí)間點(diǎn)之后的數(shù)據(jù);
[0134]所述數(shù)據(jù),是指待備份的數(shù)據(jù),是由應(yīng)用程序被業(yè)務(wù)系統(tǒng)調(diào)用后產(chǎn)生的有用數(shù)據(jù),例如用戶信息、交易信息等。
[0135]若是,進(jìn)入下述步驟2),檢測(cè)該寫入主庫的時(shí)間晚于所述完備時(shí)間點(diǎn)之后的數(shù)據(jù)在備庫中是否存在;
[0136]若否,則重復(fù)該步驟,返回所述周期性的檢測(cè)主庫中是否存在寫入主庫的時(shí)間晚于所述完備時(shí)間點(diǎn)之后的數(shù)據(jù)的步驟。
[0137]除此之外,上述周期性的檢測(cè)主庫中是否存在寫入主庫的時(shí)間晚于所述完備時(shí)間點(diǎn)之后的數(shù)據(jù)的步驟還可以通過其他方法實(shí)現(xiàn),比如在特定時(shí)間段檢測(cè)主庫中是否存在寫入主庫的時(shí)間晚于所述完備時(shí)間點(diǎn)之后的數(shù)據(jù),在此不作限定。
[0138]2)檢測(cè)該寫入主庫的時(shí)間晚于所述完備時(shí)間點(diǎn)之后的數(shù)據(jù)在備庫中是否存在;
[0139]若存在,則表明主庫和備庫之間沒有存在差異的數(shù)據(jù);
[0140]若不存在,則將所述寫入主庫的時(shí)間晚于所述完備時(shí)間點(diǎn)之后的數(shù)據(jù)視為主庫和備庫之間存在差異的數(shù)據(jù)。
[0141]此外,需要說明的是,在本步驟所述的向備庫查詢校驗(yàn)數(shù)據(jù)之前,還包括:基于MySQL數(shù)據(jù)庫的主備庫異步復(fù)制原理,將主庫中存儲(chǔ)的將待備份的數(shù)據(jù)以及所述驗(yàn)證數(shù)據(jù)通過日志方式備份至備庫,具體實(shí)現(xiàn)如下:
[0142]將寫入主庫的數(shù)據(jù)和校驗(yàn)數(shù)據(jù)記錄到binlog中;
[0143]將所述binlog中記錄的數(shù)據(jù)事件復(fù)制到relay log中;
[0144]執(zhí)行所述relay log中記錄的數(shù)據(jù)事件,并以該relay log中記錄的數(shù)據(jù)和校驗(yàn)數(shù)據(jù)更新備庫。
[0145]此處,需要說明的是,上述將主庫中的數(shù)據(jù)和校驗(yàn)數(shù)據(jù)復(fù)制到備庫中,需要花費(fèi)一定的時(shí)間,基于此,當(dāng)主庫突然出現(xiàn)異常時(shí),很可能造成主庫中的數(shù)據(jù)和校驗(yàn)數(shù)據(jù)并未全部復(fù)制到備庫中,備庫中的數(shù)據(jù)和校驗(yàn)數(shù)據(jù)存在缺失,本發(fā)明正是基于此來檢測(cè)主庫和備庫之間的數(shù)據(jù)的差異。
[0146]步驟S202,獲取該校驗(yàn)數(shù)據(jù)插入主庫的時(shí)間,并將該時(shí)間作為完備時(shí)間點(diǎn)。
[0147]本步驟得以實(shí)施的前提是上述步驟S201中,在備庫中查詢到所述校驗(yàn)數(shù)據(jù);
[0148]根據(jù)上述步驟S201在備庫中查詢到的所述校驗(yàn)數(shù)據(jù),獲取該校驗(yàn)數(shù)據(jù)插入主庫的時(shí)間,并將該時(shí)間作為完備時(shí)間點(diǎn),具體實(shí)現(xiàn)如下:
[0149]在備庫的數(shù)據(jù)表中找到包含有該校驗(yàn)數(shù)據(jù)的relay log,根據(jù)所述relay log中記錄的數(shù)據(jù)事件,從所述數(shù)據(jù)事件中讀該校驗(yàn)數(shù)據(jù)插入主庫的時(shí)間,并將該校驗(yàn)數(shù)據(jù)插入主庫的時(shí)間作為所述完備時(shí)間點(diǎn)。
[0150]除此之外,上述獲取該校驗(yàn)數(shù)據(jù)插入主庫的時(shí)間的步驟還可以采用其他方法實(shí)現(xiàn),比如從所述校驗(yàn)數(shù)據(jù)中讀取該校驗(yàn)數(shù)據(jù)插入主庫的時(shí)間,并將該時(shí)間作為所述完備時(shí)間,在此不做限定。
[0151]步驟S203,檢測(cè)主庫中是否存在寫入主庫的時(shí)間晚于所述完備時(shí)間點(diǎn)之后的數(shù)據(jù)。
[0152]上述步驟S201,向備庫查詢校驗(yàn)數(shù)據(jù),上述步驟S202,獲取所述完備時(shí)間點(diǎn),本步驟中,檢測(cè)主庫中是否存在寫入主庫的時(shí)間晚于所述完備時(shí)間點(diǎn)之后的數(shù)據(jù),即:檢測(cè)主庫和備庫之間是否有存在差異的數(shù)據(jù)。
[0153]在上述步驟S201中所述周期的時(shí)間間隔足夠短的情況下,如果檢測(cè)到主庫中存在寫入主庫的時(shí)間晚于所述完備時(shí)間點(diǎn)之后的數(shù)據(jù),則表明主庫和備庫之間有存在差異的數(shù)據(jù),進(jìn)入下述步驟S204;
[0154]如果檢測(cè)到主庫中不存在寫入主庫的時(shí)間晚于所述完備時(shí)間點(diǎn)之后的數(shù)據(jù),則表明主庫和備庫之間的數(shù)據(jù)完全相同,主庫和備庫之間沒有存在差異的數(shù)據(jù)。
[0155]步驟S204,將所述寫入主庫的時(shí)間晚于所述完備時(shí)間點(diǎn)的數(shù)據(jù)視為主庫和備庫之間存在差異的數(shù)據(jù)。
[0156]本步驟得以實(shí)施的前提是,上述步驟S103中檢測(cè)到主庫中存在寫入主庫的時(shí)間晚于所述完備時(shí)間點(diǎn)之后的數(shù)據(jù)。
[0157]在上述步驟S201中所述周期的時(shí)間間隔足夠短的情況下,如果檢測(cè)到主庫中存在寫入主庫的時(shí)間晚于所述完備時(shí)間點(diǎn)之后的數(shù)據(jù),則表明由于主備庫異步復(fù)制的時(shí)間延時(shí),使主庫和備庫之間有一部分存在差異的數(shù)據(jù),該部分存在差異的數(shù)據(jù)在主庫中存在,但是還未來得及復(fù)制到備庫中,將該部分存在差異的數(shù)據(jù)作為主庫和備庫之間存在差異的數(shù)據(jù)。
[0158]本申請(qǐng)?zhí)峁┑囊环N用于數(shù)據(jù)備份的裝置實(shí)施例如下:
[0159]在上述的實(shí)施例中,提供了一種用于數(shù)據(jù)備份的方法,與之相對(duì)應(yīng)的,本申請(qǐng)?zhí)峁┝艘环N用于數(shù)據(jù)備份的裝置,由于裝置實(shí)施例基本相似于方法實(shí)施例,所以描述得比較簡(jiǎn)單,相關(guān)的部分請(qǐng)參見上述方法實(shí)施例對(duì)應(yīng)說明即可。下述描述的裝置實(shí)施例僅僅是示意性的。
[0160]參照?qǐng)D3,其示出了根據(jù)本實(shí)施例提供的一種用于數(shù)據(jù)備份的裝置示意圖。
[0161]本申請(qǐng)?zhí)峁┑囊环N用于數(shù)據(jù)備份的裝置,包括:
[0162]校驗(yàn)數(shù)據(jù)查詢單元301,用于向備庫查詢校驗(yàn)數(shù)據(jù),其中,所述校驗(yàn)數(shù)據(jù)為在主庫中插入的數(shù)據(jù),且在將寫入到主庫中的數(shù)據(jù)通過日志方式備份至備庫過程中,所述校驗(yàn)數(shù)據(jù)同時(shí)備份到備庫中;
[0163]完備時(shí)間點(diǎn)獲取單元302,用于獲取該校驗(yàn)數(shù)據(jù)插入主庫的時(shí)間,并將該時(shí)間作為完備時(shí)間點(diǎn);
[0164]數(shù)據(jù)記錄刪除單元303,用于將鏡像數(shù)據(jù)中早于該完備時(shí)間點(diǎn)之前的數(shù)據(jù)記錄刪除;
[0165]其中,所述鏡像數(shù)據(jù)為在向主庫中寫入數(shù)據(jù)時(shí),同步寫入到設(shè)定存儲(chǔ)空間的數(shù)據(jù)。
[0166]可選的,所述校驗(yàn)數(shù)據(jù)為在主庫中插入的數(shù)據(jù),相應(yīng)的,該校驗(yàn)數(shù)據(jù)通過下述單元插入主庫:
[0167]數(shù)據(jù)寫入檢測(cè)單元,用于周期性的檢測(cè)在預(yù)設(shè)的時(shí)間段內(nèi)是否有數(shù)據(jù)寫入主庫;
[0168]若是,則進(jìn)入校驗(yàn)數(shù)據(jù)檢測(cè)單元;
[0169]若否,則返回所述數(shù)據(jù)寫入檢測(cè)單元;
[0170]所述校驗(yàn)數(shù)據(jù)檢測(cè)單元,用于檢測(cè)主庫中是否存在所述校驗(yàn)數(shù)據(jù);
[0171]若存在,以替換主庫中存儲(chǔ)的校驗(yàn)數(shù)據(jù)的方式將該校驗(yàn)數(shù)據(jù)插入主庫;
[0172]若不存在,則將該校驗(yàn)數(shù)據(jù)插入主庫。
[0173]可選的,所述寫入到主庫中的數(shù)據(jù)和校驗(yàn)數(shù)據(jù),通過日志方式備份至備庫,相應(yīng)的,所述數(shù)據(jù)和校驗(yàn)數(shù)據(jù)通過下述單元備份至備庫:
[0174]數(shù)據(jù)寫入單元,用于將寫入主庫的數(shù)據(jù)和校驗(yàn)數(shù)據(jù)記錄到二進(jìn)制日志中;
[0175]數(shù)據(jù)復(fù)制單元,用于將所述二進(jìn)制日志中記錄的數(shù)據(jù)事件復(fù)制到中繼日志中;
[0176]數(shù)據(jù)更新單元,用于執(zhí)行所述中繼日志中記錄的數(shù)據(jù)事件,并以該中繼日志中記錄的數(shù)據(jù)和校驗(yàn)數(shù)據(jù)更新備庫。
[0177]可選的,所述數(shù)據(jù)記錄刪除單元303,包括:
[0178]數(shù)據(jù)寫入時(shí)間獲取子單元,用于獲取所述鏡像數(shù)據(jù)寫入所述存儲(chǔ)空間的時(shí)間;
[0179]數(shù)據(jù)比較子單元,用于將所述鏡像數(shù)據(jù)寫入所述存儲(chǔ)空間的時(shí)間與所述完備時(shí)間點(diǎn)進(jìn)行比較,獲得該鏡像數(shù)據(jù)中早于完備時(shí)間點(diǎn)之前的數(shù)據(jù)記錄;
[0180]數(shù)據(jù)刪除子單元,用于將所述鏡像數(shù)據(jù)中早于完備時(shí)間點(diǎn)之前的數(shù)據(jù)記錄刪除。
[0181]本申請(qǐng)?zhí)峁┑囊环N用于檢測(cè)主備庫數(shù)據(jù)差異的裝置實(shí)施例如下:
[0182]在上述的實(shí)施例中,提供了一種用于檢測(cè)主備庫數(shù)據(jù)差異的方法,與之相對(duì)應(yīng)的,本申請(qǐng)?zhí)峁┝艘环N用于檢測(cè)主備庫數(shù)據(jù)差異的裝置,由于裝置實(shí)施例基本相似于方法實(shí)施例,所以描述得比較簡(jiǎn)單,相關(guān)的部分請(qǐng)參見上述方法實(shí)施例對(duì)應(yīng)說明即可。下述描述的裝置實(shí)施例僅僅是示意性的。
[0183]參照?qǐng)D4,其示出了根據(jù)本實(shí)施例提供的一種用于檢測(cè)主備庫數(shù)據(jù)差異的裝置示意圖。
[0184]本申請(qǐng)?zhí)峁┑囊环N用于檢測(cè)主備庫數(shù)據(jù)差異的裝置,包括:
[0185]校驗(yàn)數(shù)據(jù)查詢單元401,用于向備庫查詢校驗(yàn)數(shù)據(jù),其中,所述校驗(yàn)數(shù)據(jù)為在主庫中插入的數(shù)據(jù),且在將寫入到主庫中的數(shù)據(jù)通過日志方式備份至備庫過程中,所述校驗(yàn)數(shù)據(jù)同時(shí)備份到備庫中;
[0186]完備時(shí)間點(diǎn)獲取單元402,用于獲取該校驗(yàn)數(shù)據(jù)插入主庫的時(shí)間,并將該時(shí)間作為完備時(shí)間點(diǎn);
[0187]數(shù)據(jù)檢測(cè)單元403,用于檢測(cè)主庫中是否存在寫入主庫的時(shí)間晚于所述完備時(shí)間點(diǎn)之后的數(shù)據(jù);
[0188]若是,則進(jìn)入差異數(shù)據(jù)生成單元;
[0189]所述差異數(shù)據(jù)生成單元404,用于將所述寫入主庫的時(shí)間晚于所述完備時(shí)間點(diǎn)的數(shù)據(jù)視為主庫和備庫之間存在差異的數(shù)據(jù)。
[0190]可選的,所述數(shù)據(jù)檢測(cè)單元403,包括:
[0191]第一數(shù)據(jù)檢測(cè)子單元,用于周期性的檢測(cè)主庫中是否存在寫入主庫的時(shí)間晚于所述完備時(shí)間點(diǎn)之后的數(shù)據(jù);
[0192]若是,則進(jìn)入第二數(shù)據(jù)檢測(cè)子單元;
[0193]所述第二數(shù)據(jù)檢測(cè)子單元,用于檢測(cè)該寫入主庫的時(shí)間晚于所述完備時(shí)間點(diǎn)之后的數(shù)據(jù)在備庫中是否存在;
[0194]若存在,則主庫和備庫之間沒有存在差異的數(shù)據(jù);
[0195]若不存在,則將所述寫入主庫的時(shí)間晚于所述完備時(shí)間點(diǎn)之后的數(shù)據(jù)視為主庫和備庫之間存在差異的數(shù)據(jù)。
[0196]本申請(qǐng)雖然以較佳實(shí)施例公開如上,但其并不是用來限定本申請(qǐng),任何本領(lǐng)域技術(shù)人員在不脫離本申請(qǐng)的精神和范圍內(nèi),都可以做出可能的變動(dòng)和修改,因此本申請(qǐng)的保護(hù)范圍應(yīng)當(dāng)以本申請(qǐng)權(quán)利要求所界定的范圍為準(zhǔn)。
[0197]在一個(gè)典型的配置中,計(jì)算設(shè)備包括一個(gè)或多個(gè)處理器(CPU)、輸入/輸出接口、網(wǎng)絡(luò)接口和內(nèi)存。
[0198]內(nèi)存可能包括計(jì)算機(jī)可讀介質(zhì)中的非永久性存儲(chǔ)器,隨機(jī)存取存儲(chǔ)器(RAM)和/或非易失性內(nèi)存等形式,如只讀存儲(chǔ)器(ROM)或閃存(flash RAM)。內(nèi)存是計(jì)算機(jī)可讀介質(zhì)的示例。
[0199]1、計(jì)算機(jī)可讀介質(zhì)包括永久性和非永久性、可移動(dòng)和非可移動(dòng)媒體可以由任何方法或技術(shù)來實(shí)現(xiàn)信息存儲(chǔ)。信息可以是計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序的模塊或其他數(shù)據(jù)。計(jì)算機(jī)的存儲(chǔ)介質(zhì)的例子包括,但不限于相變內(nèi)存(PRAM)、靜態(tài)隨機(jī)存取存儲(chǔ)器(SRAM)、動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(DRAM)、其他類型的隨機(jī)存取存儲(chǔ)器(RAM)、只讀存儲(chǔ)器(ROM)、電可擦除可編程只讀存儲(chǔ)器(EEPROM)、快閃記憶體或其他內(nèi)存技術(shù)、只讀光盤只讀存儲(chǔ)器(CD-ROM)、數(shù)字多功能光盤(DVD)或其他光學(xué)存儲(chǔ)、磁盒式磁帶,磁帶磁磁盤存儲(chǔ)或其他磁性存儲(chǔ)設(shè)備或任何其他非傳輸介質(zhì),可用于存儲(chǔ)可以被計(jì)算設(shè)備訪問的信息。按照本文中的界定,計(jì)算機(jī)可讀介質(zhì)不包括非暫存電腦可讀媒體(transitory media),如調(diào)制的數(shù)據(jù)信號(hào)和載波。
[0200]2、本領(lǐng)域技術(shù)人員應(yīng)明白,本申請(qǐng)的實(shí)施例可提供為方法、系統(tǒng)或計(jì)算機(jī)程序產(chǎn)品。因此,本申請(qǐng)可采用完全硬件實(shí)施例、完全軟件實(shí)施例或結(jié)合軟件和硬件方面的實(shí)施例的形式。而且,本申請(qǐng)可采用在一個(gè)或多個(gè)其中包含有計(jì)算機(jī)可用程序代碼的計(jì)算機(jī)可用存儲(chǔ)介質(zhì)(包括但不限于磁盤存儲(chǔ)器、CD-ROM、光學(xué)存儲(chǔ)器等)上實(shí)施的計(jì)算機(jī)程序產(chǎn)品的形式。
【主權(quán)項(xiàng)】
1.一種用于數(shù)據(jù)備份的方法,其特征在于,包括: 向備庫查詢校驗(yàn)數(shù)據(jù),其中,所述校驗(yàn)數(shù)據(jù)為在主庫中插入的數(shù)據(jù),且在將寫入到主庫中的數(shù)據(jù)通過日志方式備份至備庫過程中,所述校驗(yàn)數(shù)據(jù)同時(shí)備份到備庫中; 獲取該校驗(yàn)數(shù)據(jù)插入主庫的時(shí)間,并將該時(shí)間作為完備時(shí)間點(diǎn); 將鏡像數(shù)據(jù)中早于該完備時(shí)間點(diǎn)之前的數(shù)據(jù)記錄刪除; 其中,所述鏡像數(shù)據(jù)為在向主庫中寫入數(shù)據(jù)時(shí),同步寫入到設(shè)定存儲(chǔ)空間的數(shù)據(jù)。2.根據(jù)權(quán)利要求1所述的用于數(shù)據(jù)備份的方法,其特征在于,所述校驗(yàn)數(shù)據(jù)為在主庫中插入的數(shù)據(jù),相應(yīng)的,該校驗(yàn)數(shù)據(jù)插入主庫的步驟,采用下述方式: 周期性的檢測(cè)在預(yù)設(shè)的時(shí)間段內(nèi)是否有數(shù)據(jù)寫入主庫; 若是,則檢測(cè)主庫中是否存在所述校驗(yàn)數(shù)據(jù); 若存在,以替換主庫中存儲(chǔ)的校驗(yàn)數(shù)據(jù)的方式將該校驗(yàn)數(shù)據(jù)插入主庫; 若不存在,則將該校驗(yàn)數(shù)據(jù)插入主庫; 若否,則返回所述周期性的檢測(cè)在預(yù)設(shè)的時(shí)間段內(nèi)是否有數(shù)據(jù)寫入主庫的步驟。3.根據(jù)權(quán)利要求1所述的用于數(shù)據(jù)備份的方法,其特征在于,所述寫入到主庫中的數(shù)據(jù)和校驗(yàn)數(shù)據(jù),通過日志方式備份至備庫,相應(yīng)的,所述數(shù)據(jù)和校驗(yàn)數(shù)據(jù)通過日志方式備份至備庫的步驟,采用下述方式: 將寫入主庫的數(shù)據(jù)和校驗(yàn)數(shù)據(jù)記錄到二進(jìn)制日志中; 將所述二進(jìn)制日志中記錄的數(shù)據(jù)事件復(fù)制到中繼日志中; 執(zhí)行所述中繼日志中記錄的數(shù)據(jù)事件,并以該中繼日志中記錄的數(shù)據(jù)和校驗(yàn)數(shù)據(jù)更新備庫O4.根據(jù)權(quán)利要求1所述的用于數(shù)據(jù)備份的方法,其特征在于,所述將鏡像數(shù)據(jù)中早于該完備時(shí)間點(diǎn)之前的數(shù)據(jù)記錄刪除的步驟,包括: 獲取所述鏡像數(shù)據(jù)寫入所述存儲(chǔ)空間的時(shí)間; 將所述鏡像數(shù)據(jù)寫入所述存儲(chǔ)空間的時(shí)間與所述完備時(shí)間點(diǎn)進(jìn)行比較,獲得該鏡像數(shù)據(jù)中早于完備時(shí)間點(diǎn)之前的數(shù)據(jù)記錄; 將所述鏡像數(shù)據(jù)中早于完備時(shí)間點(diǎn)之前的數(shù)據(jù)記錄刪除。5.根據(jù)權(quán)利要求1所述的用于數(shù)據(jù)備份的方法,其特征在于,所述獲取該校驗(yàn)數(shù)據(jù)插入主庫的時(shí)間的步驟,采用下述方式: 從所述校驗(yàn)數(shù)據(jù)中讀取該校驗(yàn)數(shù)據(jù)插入主庫的時(shí)間,并將該時(shí)間作為所述完備時(shí)間點(diǎn)。6.根據(jù)權(quán)利要求3所述的用于數(shù)據(jù)備份的方法,其特征在于,所述獲取該校驗(yàn)數(shù)據(jù)插入主庫的時(shí)間的步驟,采用下述方式: 根據(jù)所述中繼日志中記錄的數(shù)據(jù)事件,從所述數(shù)據(jù)事件中讀取所述校驗(yàn)數(shù)據(jù)插入主庫的時(shí)間,并將該時(shí)間作為所述完備時(shí)間點(diǎn)。7.根據(jù)權(quán)利要求1所述的用于數(shù)據(jù)備份的方法,其特征在于,所述鏡像數(shù)據(jù)為在向主庫中寫入數(shù)據(jù)時(shí),同步寫入到設(shè)定存儲(chǔ)空間的數(shù)據(jù),相應(yīng)的,所述數(shù)據(jù)同步寫入到設(shè)定存儲(chǔ)空間,采用下述任意一種方式: 將所述數(shù)據(jù)以本地存儲(chǔ)的方式同步寫入到設(shè)定存儲(chǔ)空間; 將所述數(shù)據(jù)以遠(yuǎn)端存儲(chǔ)的方式同步寫入到設(shè)定存儲(chǔ)空間。8.根據(jù)權(quán)利要求7所述的用于數(shù)據(jù)備份的方法,其特征在于,所述存儲(chǔ)空間包括內(nèi)存和/或磁盤。9.一種用于檢測(cè)主備庫數(shù)據(jù)差異的方法,其特征在于,包括: 向備庫查詢校驗(yàn)數(shù)據(jù),其中,所述校驗(yàn)數(shù)據(jù)為在主庫中插入的數(shù)據(jù),且在將寫入到主庫中的數(shù)據(jù)通過日志方式備份至備庫過程中,所述校驗(yàn)數(shù)據(jù)同時(shí)備份到備庫中; 獲取該校驗(yàn)數(shù)據(jù)插入主庫的時(shí)間,并將該時(shí)間作為完備時(shí)間點(diǎn); 檢測(cè)主庫中是否存在寫入主庫的時(shí)間晚于所述完備時(shí)間點(diǎn)之后的數(shù)據(jù); 若是,將所述寫入主庫的時(shí)間晚于所述完備時(shí)間點(diǎn)的數(shù)據(jù)視為主庫和備庫之間存在差異的數(shù)據(jù)。10.根據(jù)權(quán)利要求9所述的用于檢測(cè)主備庫數(shù)據(jù)差異的方法,其特征在于,所述檢測(cè)主庫中是否存在寫入主庫的時(shí)間晚于所述完備時(shí)間點(diǎn)之后的數(shù)據(jù)的步驟,包括: 周期性的檢測(cè)主庫中是否存在寫入主庫的時(shí)間晚于所述完備時(shí)間點(diǎn)之后的數(shù)據(jù); 若是,則檢測(cè)該寫入主庫的時(shí)間晚于所述完備時(shí)間點(diǎn)之后的數(shù)據(jù)在備庫中是否存在; 若存在,則主庫和備庫之間沒有存在差異的數(shù)據(jù); 若不存在,則將所述寫入主庫的時(shí)間晚于所述完備時(shí)間點(diǎn)之后的數(shù)據(jù)視為主庫和備庫之間存在差異的數(shù)據(jù)。11.一種用于數(shù)據(jù)備份的裝置,其特征在于,包括: 校驗(yàn)數(shù)據(jù)查詢單元,用于向備庫查詢校驗(yàn)數(shù)據(jù),其中,所述校驗(yàn)數(shù)據(jù)為在主庫中插入的數(shù)據(jù),且在將寫入到主庫中的數(shù)據(jù)通過日志方式備份至備庫過程中,所述校驗(yàn)數(shù)據(jù)同時(shí)備份到備庫中; 完備時(shí)間點(diǎn)獲取單元,用于獲取該校驗(yàn)數(shù)據(jù)插入主庫的時(shí)間,并將該時(shí)間作為完備時(shí)間點(diǎn); 數(shù)據(jù)記錄刪除單元,用于將鏡像數(shù)據(jù)中早于該完備時(shí)間點(diǎn)之前的數(shù)據(jù)記錄刪除; 其中,所述鏡像數(shù)據(jù)為在向主庫中寫入數(shù)據(jù)時(shí),同步寫入到設(shè)定存儲(chǔ)空間的數(shù)據(jù)。12.根據(jù)權(quán)利要求11所述的用于數(shù)據(jù)備份的裝置,其特征在于,所述校驗(yàn)數(shù)據(jù)為在主庫中插入的數(shù)據(jù),相應(yīng)的,該校驗(yàn)數(shù)據(jù)通過下述單元插入主庫: 數(shù)據(jù)寫入檢測(cè)單元,用于周期性的檢測(cè)在預(yù)設(shè)的時(shí)間段內(nèi)是否有數(shù)據(jù)寫入主庫; 若是,則進(jìn)入校驗(yàn)數(shù)據(jù)檢測(cè)單元; 若否,則返回所述數(shù)據(jù)寫入檢測(cè)單元; 所述校驗(yàn)數(shù)據(jù)檢測(cè)單元,用于檢測(cè)主庫中是否存在所述校驗(yàn)數(shù)據(jù); 若存在,以替換主庫中存儲(chǔ)的校驗(yàn)數(shù)據(jù)的方式將該校驗(yàn)數(shù)據(jù)插入主庫; 若不存在,則將該校驗(yàn)數(shù)據(jù)插入主庫。13.根據(jù)權(quán)利要求11所述的用于數(shù)據(jù)備份的裝置,其特征在于,所述寫入到主庫中的數(shù)據(jù)和校驗(yàn)數(shù)據(jù),通過日志方式備份至備庫,相應(yīng)的,所述數(shù)據(jù)和校驗(yàn)數(shù)據(jù)通過下述單元備份至備庫: 數(shù)據(jù)寫入單元,用于將寫入主庫的數(shù)據(jù)和校驗(yàn)數(shù)據(jù)記錄到二進(jìn)制日志中; 數(shù)據(jù)復(fù)制單元,用于將所述二進(jìn)制日志中記錄的數(shù)據(jù)事件復(fù)制到中繼日志中; 數(shù)據(jù)更新單元,用于執(zhí)行所述中繼日志中記錄的數(shù)據(jù)事件,并以該中繼日志中記錄的數(shù)據(jù)和校驗(yàn)數(shù)據(jù)更新備庫。14.根據(jù)權(quán)利要求11所述的用于數(shù)據(jù)備份的裝置,其特征在于,所述數(shù)據(jù)記錄刪除單元,包括: 數(shù)據(jù)寫入時(shí)間獲取子單元,用于獲取所述鏡像數(shù)據(jù)寫入所述存儲(chǔ)空間的時(shí)間; 數(shù)據(jù)比較子單元,用于將所述鏡像數(shù)據(jù)寫入所述存儲(chǔ)空間的時(shí)間與所述完備時(shí)間點(diǎn)進(jìn)行比較,獲得該鏡像數(shù)據(jù)中早于完備時(shí)間點(diǎn)之前的數(shù)據(jù)記錄; 數(shù)據(jù)刪除子單元,用于將所述鏡像數(shù)據(jù)中早于完備時(shí)間點(diǎn)之前的數(shù)據(jù)記錄刪除。15.一種用于檢測(cè)主備庫數(shù)據(jù)差異的裝置,其特征在于,包括: 校驗(yàn)數(shù)據(jù)查詢單元,用于向備庫查詢校驗(yàn)數(shù)據(jù),其中,所述校驗(yàn)數(shù)據(jù)為在主庫中插入的數(shù)據(jù),且在將寫入到主庫中的數(shù)據(jù)通過日志方式備份至備庫過程中,所述校驗(yàn)數(shù)據(jù)同時(shí)備份到備庫中; 完備時(shí)間點(diǎn)獲取單元,用于獲取該校驗(yàn)數(shù)據(jù)插入主庫的時(shí)間,并將該時(shí)間作為完備時(shí)間點(diǎn); 數(shù)據(jù)檢測(cè)單元,用于檢測(cè)主庫中是否存在寫入主庫的時(shí)間晚于所述完備時(shí)間點(diǎn)之后的數(shù)據(jù); 若是,則進(jìn)入差異數(shù)據(jù)生成單元; 所述差異數(shù)據(jù)生成單元,用于將所述寫入主庫的時(shí)間晚于所述完備時(shí)間點(diǎn)的數(shù)據(jù)視為主庫和備庫之間存在差異的數(shù)據(jù)。16.根據(jù)權(quán)利要求15所述的用于檢測(cè)主備庫數(shù)據(jù)差異的裝置,其特征在于,所述數(shù)據(jù)檢測(cè)單元,包括: 第一數(shù)據(jù)檢測(cè)子單元,用于周期性的檢測(cè)主庫中是否存在寫入主庫的時(shí)間晚于所述完備時(shí)間點(diǎn)之后的數(shù)據(jù); 若是,則進(jìn)入第二數(shù)據(jù)檢測(cè)子單元; 所述第二數(shù)據(jù)檢測(cè)子單元,用于檢測(cè)該寫入主庫的時(shí)間晚于所述完備時(shí)間點(diǎn)之后的數(shù)據(jù)在備庫中是否存在; 若存在,則主庫和備庫之間沒有存在差異的數(shù)據(jù); 若不存在,則將所述寫入主庫的時(shí)間晚于所述完備時(shí)間點(diǎn)之后的數(shù)據(jù)視為主庫和備庫之間存在差異的數(shù)據(jù)。
【文檔編號(hào)】G06F11/14GK105843702SQ201510019142
【公開日】2016年8月10日
【申請(qǐng)日】2015年1月14日
【發(fā)明人】施云亮, 杜華兵
【申請(qǐng)人】阿里巴巴集團(tuán)控股有限公司