數(shù)據(jù)備份的方法及內(nèi)存數(shù)據(jù)庫(kù)存儲(chǔ)引擎的制作方法
【專(zhuān)利摘要】本發(fā)明公開(kāi)了一種數(shù)據(jù)備份的方法及內(nèi)存數(shù)據(jù)庫(kù)存儲(chǔ)引擎,涉及數(shù)據(jù)處理領(lǐng)域。本發(fā)明通過(guò)為待備份頁(yè)設(shè)置用于存儲(chǔ)原始數(shù)據(jù)的快照頁(yè),來(lái)保證即使在數(shù)據(jù)備份進(jìn)程中進(jìn)行數(shù)據(jù)修改也可以保證能夠備份到原始數(shù)據(jù),從而保證備份結(jié)束時(shí)得到的備份數(shù)據(jù)與備份開(kāi)始時(shí)的數(shù)據(jù)保持一致。本發(fā)明提供的方法可以應(yīng)用于數(shù)據(jù)備份和數(shù)據(jù)修改流程中。
【專(zhuān)利說(shuō)明】數(shù)據(jù)備份的方法及內(nèi)存數(shù)據(jù)庫(kù)存儲(chǔ)引擎
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及數(shù)據(jù)處理領(lǐng)域,尤其涉及一種數(shù)據(jù)備份的方法及內(nèi)存數(shù)據(jù)庫(kù)存儲(chǔ)引 擎。
【背景技術(shù)】
[0002] 在目前的內(nèi)存數(shù)據(jù)庫(kù)系統(tǒng)中,所有數(shù)據(jù)都存放在內(nèi)存中,以便提供高性能數(shù)據(jù)庫(kù) 服務(wù)。為了進(jìn)一步保證內(nèi)存數(shù)據(jù)庫(kù)的可用性,還提供內(nèi)存數(shù)據(jù)庫(kù)的備份和恢復(fù)功能:用戶首 先對(duì)內(nèi)存中的數(shù)據(jù)進(jìn)行備份,將數(shù)據(jù)備份到磁盤(pán)文件中,當(dāng)內(nèi)存數(shù)據(jù)庫(kù)出現(xiàn)故障后,再將備 份的數(shù)據(jù)用于數(shù)據(jù)恢復(fù)。
[0003] 在已有實(shí)現(xiàn)方法中,對(duì)內(nèi)存數(shù)據(jù)庫(kù)進(jìn)行備份時(shí),一般按頁(yè)的方式進(jìn)行備份,也就是 說(shuō),將內(nèi)存數(shù)據(jù)以頁(yè)為單位進(jìn)行分割,形成內(nèi)存頁(yè),然后依次按頁(yè)將內(nèi)存數(shù)據(jù)備份到磁盤(pán)文 件。并且,特別在備份過(guò)程中待備份內(nèi)存頁(yè)中的數(shù)據(jù)被修改的時(shí)候,一般都優(yōu)先進(jìn)行修改然 后再進(jìn)行備份,而且,為了保證數(shù)據(jù)的一致性,還需要備份用于記錄這些修改的重做日志文 件到磁盤(pán)文件中。
[0004] 在實(shí)現(xiàn)本發(fā)明的過(guò)程中,發(fā)明人發(fā)現(xiàn)現(xiàn)有技術(shù)中至少存在如下問(wèn)題:一般而言,當(dāng) 對(duì)某個(gè)對(duì)象進(jìn)行備份時(shí),用戶希望得到的備份數(shù)據(jù)是備份發(fā)生時(shí)的數(shù)據(jù)。但是從上述現(xiàn)有 技術(shù)的描述中可以得知,通過(guò)現(xiàn)有技術(shù)備份用戶最終備份得到的內(nèi)存數(shù)據(jù)庫(kù)的數(shù)據(jù)是備份 結(jié)束時(shí)的數(shù)據(jù),而不是備份開(kāi)始時(shí)的數(shù)據(jù)。尤其隨著內(nèi)存數(shù)據(jù)庫(kù)容量的增大,備份時(shí)間隨之 變長(zhǎng),備份結(jié)束時(shí)和備份開(kāi)始時(shí)的數(shù)據(jù)出現(xiàn)差異的情況會(huì)越來(lái)越明顯,從而很難保證數(shù)據(jù) 備份的時(shí)效性。
【發(fā)明內(nèi)容】
[0005] 本發(fā)明的實(shí)施例提供一種數(shù)據(jù)備份的方法及內(nèi)存數(shù)據(jù)庫(kù)存儲(chǔ)引擎,能夠保證數(shù)據(jù) 備份的時(shí)效性。
[0006] 為達(dá)到上述目的,本發(fā)明的實(shí)施例采用如下技術(shù)方案:
[0007] 第一方面,本發(fā)明實(shí)施例提供了一種數(shù)據(jù)備份的方法,包括:
[0008] 獲取當(dāng)前待備份頁(yè)的標(biāo)識(shí);
[0009] 根據(jù)所述當(dāng)前待備份頁(yè)的標(biāo)識(shí),從快照頁(yè)存儲(chǔ)空間中查找與所述當(dāng)前待備份頁(yè)對(duì) 應(yīng)的快照頁(yè),從與所述當(dāng)前待備份頁(yè)對(duì)應(yīng)的快照頁(yè)中獲取所述當(dāng)前待備份頁(yè)對(duì)應(yīng)的原始數(shù) 據(jù),并對(duì)所述當(dāng)前待備份頁(yè)對(duì)應(yīng)的原始數(shù)據(jù)進(jìn)行備份,其中,所述當(dāng)前待備份頁(yè)對(duì)應(yīng)的快照 頁(yè)存儲(chǔ)了所述當(dāng)前待備份頁(yè)在備份進(jìn)程啟動(dòng)時(shí)存儲(chǔ)的原始數(shù)據(jù);
[0010] 釋放與所述當(dāng)前待備份頁(yè)對(duì)應(yīng)的快照頁(yè)所占用的存儲(chǔ)空間。
[0011] 結(jié)合第一方面,在第一方面的第一種可能的實(shí)現(xiàn)方式中,在釋放所述當(dāng)前待備份 頁(yè)對(duì)應(yīng)的快照頁(yè)所占用的存儲(chǔ)空間之后,還包括:
[0012] 獲取其余待備份頁(yè)的標(biāo)識(shí),其中所述其余待備份頁(yè)為除了當(dāng)前待備份頁(yè)之外的待 備份頁(yè);
[0013] 根據(jù)所述其余待備份頁(yè)的標(biāo)識(shí),從快照頁(yè)存儲(chǔ)空間中查找與所述其余待備份頁(yè)各 自對(duì)應(yīng)的快照頁(yè);
[0014] 當(dāng)查找到所述其余待備份頁(yè)中的至少一個(gè)存在對(duì)應(yīng)的快照頁(yè),則優(yōu)先從每個(gè)已查 找到的快照頁(yè)中獲取待備份頁(yè)的原始數(shù)據(jù)進(jìn)行備份,并釋放已備份的快照頁(yè)所占用的存儲(chǔ) 空間;
[0015] 在對(duì)每個(gè)已查找到的快照頁(yè)內(nèi)存儲(chǔ)的原始數(shù)據(jù)完成備份之后,直接從不存在對(duì)應(yīng) 快照頁(yè)的其余待備份頁(yè)中獲取數(shù)據(jù)進(jìn)行備份。
[0016] 結(jié)合第一方面的第一種可能的實(shí)現(xiàn)方式,在第二種可能的實(shí)現(xiàn)方式中,所述從與 所述當(dāng)前待備份頁(yè)對(duì)應(yīng)的快照頁(yè)中獲取所述當(dāng)前待備份頁(yè)對(duì)應(yīng)的原始數(shù)據(jù),并對(duì)所述當(dāng)前 待備份頁(yè)對(duì)應(yīng)的原始數(shù)據(jù)進(jìn)行備份包括:
[0017] 從所述快照頁(yè)存儲(chǔ)空間中檢測(cè)在所述其余備份頁(yè)中,是否存在所述其余待備份頁(yè) 相應(yīng)的快照頁(yè)所占用的存儲(chǔ)空間與所述當(dāng)前待備份頁(yè)相應(yīng)的快照頁(yè)所占用的存儲(chǔ)空間是 連續(xù)的;
[0018] 若存在所述其余待備份頁(yè)相應(yīng)的快照頁(yè)所占用的存儲(chǔ)空間與所述當(dāng)前待備份頁(yè) 相應(yīng)的快照頁(yè)所占用的存儲(chǔ)空間是連續(xù)的,則優(yōu)先從與所述當(dāng)前待備份頁(yè)相應(yīng)的快照頁(yè)所 占用的存儲(chǔ)空間連續(xù)的快照頁(yè)中獲取待備份頁(yè)的原始數(shù)據(jù)進(jìn)行備份,然后從與所述當(dāng)前待 備份頁(yè)相應(yīng)的快照頁(yè)所占用的存儲(chǔ)空間不連續(xù)的快照頁(yè)中獲取待備份頁(yè)的原始數(shù)據(jù)進(jìn)行 備份。
[0019] 結(jié)合第一方面或第一方面的前兩種可能的實(shí)現(xiàn)方式之一,在第三種可能的實(shí)現(xiàn)方 式中,在獲取當(dāng)前待備份頁(yè)的標(biāo)識(shí)之前,還包括:
[0020] 接收數(shù)據(jù)修改請(qǐng)求,所述數(shù)據(jù)修改請(qǐng)求攜帶有待修改數(shù)據(jù)所在頁(yè)的標(biāo)識(shí);
[0021] 根據(jù)所述待修改數(shù)據(jù)所在頁(yè)的標(biāo)識(shí),確定當(dāng)前待修改數(shù)據(jù)在待備份頁(yè)中,根據(jù)所 述待修改數(shù)據(jù)所在待備份頁(yè)存儲(chǔ)的原始數(shù)據(jù),在快照頁(yè)存儲(chǔ)空間為所述待修改數(shù)據(jù)所在待 備份頁(yè)分配一個(gè)快照頁(yè),并使用所述待修改數(shù)據(jù)所在待備份頁(yè)的標(biāo)識(shí)進(jìn)行標(biāo)記;
[0022] 將所述待備份頁(yè)存儲(chǔ)的原始數(shù)據(jù)復(fù)制到分配好的快照頁(yè)進(jìn)行存儲(chǔ);
[0023] 對(duì)所述待備份頁(yè)內(nèi)的待修改數(shù)據(jù)進(jìn)行修改。
[0024] 結(jié)合第一方面的第三種可能的實(shí)現(xiàn)方式,在第四種可能的實(shí)現(xiàn)方式中,當(dāng)快照頁(yè) 存儲(chǔ)空間的剩余空間小于為所述待修改數(shù)據(jù)所在待備份頁(yè)分配一個(gè)快照頁(yè)所占用的存儲(chǔ) 空間時(shí),對(duì)所述待備份頁(yè)存儲(chǔ)的原始數(shù)據(jù)進(jìn)行備份;
[0025] 對(duì)所述待備份頁(yè)內(nèi)的待修改數(shù)據(jù)進(jìn)行修改。
[0026] 第二方面,本發(fā)明實(shí)施例提供了一種內(nèi)存數(shù)據(jù)庫(kù)存儲(chǔ)引擎,包括:
[0027] 獲取單元,用于獲取當(dāng)前待備份頁(yè)的標(biāo)識(shí);
[0028] 查找單元,用于根據(jù)所述獲取單元獲取的當(dāng)前待備份頁(yè)的標(biāo)識(shí),從快照頁(yè)存儲(chǔ)空 間中查找與所述當(dāng)前待備份頁(yè)對(duì)應(yīng)的快照頁(yè);其中,所述當(dāng)前待備份頁(yè)對(duì)應(yīng)的快照頁(yè)存儲(chǔ) 了所述當(dāng)前待備份頁(yè)在備份進(jìn)程啟動(dòng)時(shí)存儲(chǔ)的原始數(shù)據(jù);
[0029] 備份單元,用于從所述查找單元查找到的與所述當(dāng)前待備份頁(yè)對(duì)應(yīng)的快照頁(yè)中獲 取所述當(dāng)前待備份頁(yè)對(duì)應(yīng)的原始數(shù)據(jù),并對(duì)所述當(dāng)前待備份頁(yè)對(duì)應(yīng)的原始數(shù)據(jù)進(jìn)行備份;
[0030] 資源釋放單元,用于釋放所述備份單元已備份的與所述當(dāng)前待備份頁(yè)對(duì)應(yīng)的快照 頁(yè)所占用的存儲(chǔ)空間。
[0031] 結(jié)合第二方面,在第二方面的第一種可能的實(shí)現(xiàn)方式中,所述獲取單元還用于獲 取其余待備份頁(yè)的標(biāo)識(shí),其中所述其余待備份頁(yè)為除了當(dāng)前待備份頁(yè)之外的待備份頁(yè);
[0032] 所述查找單元,還用于根據(jù)所述獲取單元獲取的所述其余待備份頁(yè)的標(biāo)識(shí),從快 照頁(yè)存儲(chǔ)空間中查找與其余待備份頁(yè)各自對(duì)應(yīng)的快照頁(yè);
[0033] 所述備份單元,用于當(dāng)所述查找單元查找到所述其余待備份頁(yè)中的至少一個(gè)存在 對(duì)應(yīng)的快照頁(yè),則優(yōu)先從每個(gè)已查找到的快照頁(yè)中獲取待備份頁(yè)的原始數(shù)據(jù)進(jìn)行備份;以 及,直接從不存在對(duì)應(yīng)快照頁(yè)的其余待備份頁(yè)中獲取數(shù)據(jù)進(jìn)行備份;
[0034] 所述資源釋放單元,用于釋放所述備份單元已備份的快照頁(yè)所占用的存儲(chǔ)空間。
[0035] 結(jié)合第二方面的第一種可能的實(shí)現(xiàn)方式,在第二種可能的實(shí)現(xiàn)方式中,所述備份 單元包括:
[0036] 檢測(cè)模塊,用于從所述快照頁(yè)存儲(chǔ)空間中檢測(cè)在所述其余備份頁(yè)中,是否存在所 述其余待備份頁(yè)相應(yīng)的快照頁(yè)所占用的存儲(chǔ)空間與所述當(dāng)前待備份頁(yè)相應(yīng)的快照頁(yè)所占 用的存儲(chǔ)空間是連續(xù)的;
[0037] 備份模塊,用于在所述檢測(cè)模塊存在所述其余待備份頁(yè)相應(yīng)的快照頁(yè)所占用的存 儲(chǔ)空間與所述當(dāng)前待備份頁(yè)相應(yīng)的快照頁(yè)所占用的存儲(chǔ)空間是連續(xù)的時(shí),則優(yōu)先從與所述 當(dāng)前待備份頁(yè)相應(yīng)的快照頁(yè)所占用的存儲(chǔ)空間連續(xù)的快照頁(yè)中獲取待備份頁(yè)的原始數(shù)據(jù) 進(jìn)行備份,然后從與所述當(dāng)前待備份頁(yè)相應(yīng)的快照頁(yè)所占用的存儲(chǔ)空間不連續(xù)的快照頁(yè)中 獲取待備份頁(yè)的原始數(shù)據(jù)進(jìn)行備份。
[0038] 結(jié)合第二方面或第二方面的前兩種可能的實(shí)現(xiàn)方式之一,在第三種可能的實(shí)現(xiàn)方 式中,還包括:
[0039] 接收單元,用于接收數(shù)據(jù)修改請(qǐng)求,所述數(shù)據(jù)修改請(qǐng)求攜帶有待修改數(shù)據(jù)所在頁(yè) 的標(biāo)識(shí);
[0040] 確定單元,用于根據(jù)所述待修改數(shù)據(jù)所在頁(yè)的標(biāo)識(shí),確定當(dāng)前待修改數(shù)據(jù)在待備 份頁(yè)中;
[0041] 分配單元,用于根據(jù)所述確定單元確定的待修改數(shù)據(jù)所在待備份頁(yè)存儲(chǔ)的原始數(shù) 據(jù),在快照頁(yè)存儲(chǔ)空間為所述待修改數(shù)據(jù)所在待備份頁(yè)分配一個(gè)快照頁(yè),并使用所述待修 改數(shù)據(jù)所在待備份頁(yè)的標(biāo)識(shí)進(jìn)行標(biāo)記;
[0042] 復(fù)制單元,用于將所述待備份頁(yè)存儲(chǔ)的原始數(shù)據(jù)復(fù)制到分配好的快照頁(yè)進(jìn)行存 儲(chǔ);
[0043] 修改單元,用于對(duì)所述待備份頁(yè)內(nèi)的待修改數(shù)據(jù)進(jìn)行修改。
[0044] 結(jié)合第二方面的第三種可能的實(shí)現(xiàn)方式,在第四種可能的實(shí)現(xiàn)方式中,所述備份 單元用于當(dāng)在快照頁(yè)存儲(chǔ)空間的剩余空間小于為所述待修改數(shù)據(jù)所在待備份頁(yè)分配一個(gè) 快照頁(yè)所占用的存儲(chǔ)空間時(shí),對(duì)所述待備份頁(yè)存儲(chǔ)的原始數(shù)據(jù)進(jìn)行備份;
[0045] 所述修改單元,用于對(duì)所述待備份頁(yè)內(nèi)的待修改數(shù)據(jù)進(jìn)行修改。
[0046] 本發(fā)明實(shí)施例提供的數(shù)據(jù)備份的方法及內(nèi)存數(shù)據(jù)庫(kù)存儲(chǔ)引擎,通過(guò)將為待備份頁(yè) 中的數(shù)據(jù)提供快照頁(yè)進(jìn)行存儲(chǔ),以保證即使在備份進(jìn)程中存在數(shù)據(jù)被修改,也可以保證修 改前的數(shù)據(jù)可以被保存下來(lái),使得備份進(jìn)程得到的數(shù)據(jù)都是備份進(jìn)程開(kāi)始時(shí)的數(shù)據(jù),相比 于現(xiàn)有技術(shù)中若發(fā)生數(shù)據(jù)修改則只能存儲(chǔ)修改后的數(shù)據(jù)相比,可以保證所有備份數(shù)據(jù)存儲(chǔ) 的都是備份開(kāi)始時(shí)的數(shù)據(jù),使進(jìn)而有效保證數(shù)據(jù)備份的時(shí)效性。
【專(zhuān)利附圖】
【附圖說(shuō)明】
[0047] 為了更清楚地說(shuō)明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn) 有技術(shù)描述中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見(jiàn)地,下面描述中的附圖僅僅是本 發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以 根據(jù)這些附圖獲得其他的附圖。
[0048] 圖1為本發(fā)明實(shí)施例提供的一種內(nèi)存數(shù)據(jù)庫(kù)系統(tǒng)的組成架構(gòu)圖;
[0049] 圖2為本發(fā)明實(shí)施例提供的一種數(shù)據(jù)備份的方法流程圖;
[0050] 圖3為本發(fā)明實(shí)施例提供的另一種數(shù)據(jù)備份的方法流程圖;
[0051] 圖4為本發(fā)明實(shí)施例提供的另一種數(shù)據(jù)備份的方法流程圖;
[0052] 圖5為本發(fā)明實(shí)施例提供的一種數(shù)據(jù)修改的方法流程圖;
[0053] 圖6為本發(fā)明實(shí)施例提供的另一種數(shù)據(jù)修改的方法流程圖;
[0054] 圖7為本發(fā)明實(shí)施例提供的一種內(nèi)存數(shù)據(jù)庫(kù)存儲(chǔ)引擎的裝置結(jié)構(gòu)圖;
[0055] 圖8為本發(fā)明實(shí)施例提供的另一種內(nèi)存數(shù)據(jù)庫(kù)存儲(chǔ)引擎的裝置結(jié)構(gòu)圖;
[0056] 圖9為本發(fā)明實(shí)施例提供的另一種內(nèi)存數(shù)據(jù)庫(kù)存儲(chǔ)引擎的裝置結(jié)構(gòu)圖;
[0057] 圖10為本發(fā)明實(shí)施例提供的另一種內(nèi)存數(shù)據(jù)庫(kù)存儲(chǔ)引擎的裝置結(jié)構(gòu)圖。
【具體實(shí)施方式】
[0058] 下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完 整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;?本發(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒(méi)有作出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他 實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
[0059] 本發(fā)明實(shí)施例提供了一種數(shù)據(jù)備份和修改的方法,均可以應(yīng)用于如圖1所示的內(nèi) 存數(shù)據(jù)庫(kù)系統(tǒng),該系統(tǒng)可包括SQL會(huì)話模塊、內(nèi)存數(shù)據(jù)庫(kù)SQL引擎、內(nèi)存數(shù)據(jù)庫(kù)存儲(chǔ)引擎、備 份數(shù)據(jù)文件模塊。
[0060] 其中,SQL會(huì)話模塊用于為各個(gè)SQL客戶端建立會(huì)話,以處理客戶端對(duì)內(nèi)存數(shù)據(jù)的 備份和修改的請(qǐng)求。
[0061] 內(nèi)存數(shù)據(jù)庫(kù)SQL引擎用于調(diào)用內(nèi)存數(shù)據(jù)庫(kù)存儲(chǔ)引擎的數(shù)據(jù)讀寫(xiě)接口來(lái)對(duì)內(nèi)存數(shù) 據(jù)庫(kù)存儲(chǔ)引擎內(nèi)部存儲(chǔ)的數(shù)據(jù)進(jìn)行備份和修改。
[0062]內(nèi)存數(shù)據(jù)庫(kù)存儲(chǔ)引擎用于存儲(chǔ)所有內(nèi)存數(shù)據(jù)和作為部分內(nèi)存數(shù)據(jù)的鏡像副本的 快照頁(yè)數(shù)據(jù);并且,快照頁(yè)的數(shù)據(jù)擁有獨(dú)立的存儲(chǔ)空間,且不能被修改,是在內(nèi)存數(shù)據(jù)被修 改時(shí)保留的修改前的數(shù)據(jù)。
[0063] 備份數(shù)據(jù)文件模塊用于存儲(chǔ)所有備份數(shù)據(jù)。
[0064] 基于上述內(nèi)存數(shù)據(jù)庫(kù)系統(tǒng)架構(gòu),本發(fā)明提供的數(shù)據(jù)備份方法如圖2所示,一般由 內(nèi)存數(shù)據(jù)庫(kù)存儲(chǔ)引擎實(shí)現(xiàn),包括:
[0065] 101、獲取當(dāng)前待備份頁(yè)的標(biāo)識(shí)。
[0066] 其中,內(nèi)存數(shù)據(jù)庫(kù)中的每個(gè)數(shù)據(jù)頁(yè)均有各自的標(biāo)識(shí),用以與其它數(shù)據(jù)頁(yè)進(jìn)行區(qū)分。 通??梢允褂镁幪?hào)、哈希值等實(shí)現(xiàn)。而本發(fā)明涉及的待備份頁(yè)是指在備份進(jìn)程啟動(dòng)時(shí)需要 進(jìn)行備份的數(shù)據(jù)頁(yè)的統(tǒng)稱(chēng)。
[0067] 102、根據(jù)當(dāng)前待備份頁(yè)的標(biāo)識(shí),從快照頁(yè)存儲(chǔ)空間中查找與所述當(dāng)前待備份頁(yè)對(duì) 應(yīng)的快照頁(yè),所述與所述當(dāng)前待備份頁(yè)對(duì)應(yīng)的快照頁(yè)存儲(chǔ)了所述當(dāng)前待備份頁(yè)在備份進(jìn)程 啟動(dòng)時(shí)存儲(chǔ)的原始數(shù)據(jù)。
[0068] 其中,需要說(shuō)明的是,快照頁(yè)就是備份頁(yè)的鏡像,優(yōu)先存儲(chǔ)在內(nèi)存空間中,以便可 以被快速寫(xiě)入和讀取,其本身存儲(chǔ)架構(gòu)和相關(guān)的寫(xiě)入讀取方法均可以參照內(nèi)存頁(yè)的相關(guān)實(shí) 現(xiàn)方式。并且,為了查找方便,快照頁(yè)的生成過(guò)程中會(huì)使待備份頁(yè)的標(biāo)識(shí)進(jìn)行標(biāo)記,以保證 快照頁(yè)與待備份頁(yè)一一對(duì)應(yīng)。
[0069] 103、從與所述當(dāng)前待備份頁(yè)對(duì)應(yīng)的快照頁(yè)中獲取所述當(dāng)前待備份頁(yè)對(duì)應(yīng)的原始 數(shù)據(jù),并對(duì)所述當(dāng)前待備份頁(yè)對(duì)應(yīng)的原始數(shù)據(jù)進(jìn)行備份。
[0070] 值得說(shuō)明的是,當(dāng)待備份的數(shù)據(jù)存儲(chǔ)在多個(gè)備份頁(yè)時(shí),則需要依次對(duì)每個(gè)備份頁(yè) 進(jìn)行備份,每個(gè)待備份頁(yè)的備份過(guò)程均參照步驟101至103的流程步驟。
[0071] 在此補(bǔ)充說(shuō)明,若確定當(dāng)前待備份頁(yè)不存在相應(yīng)的快照頁(yè),則直接從所述當(dāng)前待 備份頁(yè)中獲取數(shù)據(jù)進(jìn)行備份即可。
[0072] 104、釋放所述當(dāng)前待備份頁(yè)對(duì)應(yīng)的快照頁(yè)所占用的存儲(chǔ)空間。
[0073] 本發(fā)明實(shí)施例提供的數(shù)據(jù)備份的方法,通過(guò)將為待備份頁(yè)中的數(shù)據(jù)提供快照頁(yè)進(jìn) 行存儲(chǔ),以保證即使在備份進(jìn)程中存在數(shù)據(jù)被修改,也可以保證修改前的數(shù)據(jù)可以被保存 下來(lái),使得備份進(jìn)程得到的數(shù)據(jù)都是備份進(jìn)程開(kāi)始時(shí)的數(shù)據(jù),相比于現(xiàn)有技術(shù)中若發(fā)生數(shù) 據(jù)修改則只能存儲(chǔ)修改后的數(shù)據(jù)相比,可以保證所有備份數(shù)據(jù)存儲(chǔ)的都是備份開(kāi)始時(shí)的數(shù) 據(jù),使進(jìn)而有效保證數(shù)據(jù)備份的時(shí)效性。
[0074] 并且,在完成對(duì)部分被修改的內(nèi)存數(shù)據(jù)備份之后,就直接刪除用于保存修改前的 內(nèi)存數(shù)據(jù)的快照頁(yè),來(lái)釋放不必要的存儲(chǔ)空間資源,從而為其它待備份數(shù)據(jù)的快照頁(yè)提供 足夠的存儲(chǔ)空間,進(jìn)而保證每個(gè)被修改的內(nèi)存數(shù)據(jù)在備份前都能夠有快照頁(yè)來(lái)保存修改前 的數(shù)據(jù)信息,用以保證所有備份數(shù)據(jù)存儲(chǔ)的都是備份開(kāi)始時(shí)的數(shù)據(jù)。
[0075] 在備份進(jìn)程啟動(dòng)后,為了盡可能讓所有被修改的數(shù)據(jù)都能夠有足夠的存儲(chǔ)空間, 因此,在執(zhí)行步驟101至104的基礎(chǔ)上,在執(zhí)行步驟104之后,如圖3所示,本發(fā)明實(shí)施例提 供的數(shù)據(jù)備份的方法的另一種實(shí)施方式中還包括:
[0076] 105、獲取其余待備份頁(yè)的標(biāo)識(shí)。
[0077] 其中,所述其余待備份頁(yè)為除了當(dāng)前待備份頁(yè)之外的待備份頁(yè),并且,此處描述的 標(biāo)識(shí)與步驟101的有關(guān)描述相同。
[0078] 106、根據(jù)所述其余待備份頁(yè)的標(biāo)識(shí),從快照頁(yè)存儲(chǔ)空間中查找與其余待備份頁(yè)各 自對(duì)應(yīng)的快照頁(yè)。當(dāng)查找到所述其余待備份頁(yè)中的至少一個(gè)存在對(duì)應(yīng)的快照頁(yè),則先執(zhí)行 107,再執(zhí)行108 ;否則直接執(zhí)行108。
[0079] 107、從每個(gè)已查找到的快照頁(yè)中獲取待備份頁(yè)的原始數(shù)據(jù)進(jìn)行備份,并釋放已備 份的快照頁(yè)所占用的存儲(chǔ)空間。
[0080] 108、直接從不存在對(duì)應(yīng)快照頁(yè)的其余待備份頁(yè)中獲取數(shù)據(jù)進(jìn)行備份。
[0081] 在本實(shí)施方式中,在優(yōu)先對(duì)存在快照頁(yè)的待備份頁(yè)進(jìn)行備份,并在備份后釋放所 有快照頁(yè)的存儲(chǔ)空間,來(lái)釋放不必要的存儲(chǔ)空間資源,從而為其它待備份數(shù)據(jù)的快照頁(yè)提 供足夠的存儲(chǔ)空間,進(jìn)而保證每個(gè)被修改的內(nèi)存數(shù)據(jù)在備份前都能夠有快照頁(yè)來(lái)保存修改 前的數(shù)據(jù)信息,用以保證所有備份數(shù)據(jù)存儲(chǔ)的都是備份開(kāi)始時(shí)的數(shù)據(jù)。
[0082] 在執(zhí)行步驟101至108的基礎(chǔ)上,本發(fā)明實(shí)施例提供的數(shù)據(jù)備份的方法的另一種 實(shí)施方式中,對(duì)步驟107的實(shí)現(xiàn)提供了一種【具體實(shí)施方式】,如圖4所示,包括:
[0083] 1071、從所述快照頁(yè)存儲(chǔ)空間中檢測(cè)在所述其余備份頁(yè)中,是否存在所述其余待 備份頁(yè)相應(yīng)的快照頁(yè)所占用的存儲(chǔ)空間與所述當(dāng)前待備份頁(yè)相應(yīng)的快照頁(yè)所占用的存儲(chǔ) 空間是連續(xù)的。
[0084] 1072、若存在所述其余待備份頁(yè)相應(yīng)的快照頁(yè)所占用的存儲(chǔ)空間與所述當(dāng)前待備 份頁(yè)相應(yīng)的快照頁(yè)所占用的存儲(chǔ)空間是連續(xù)的,則優(yōu)先從與所述當(dāng)前待備份頁(yè)相應(yīng)的快照 頁(yè)所占用的存儲(chǔ)空間連續(xù)的快照頁(yè)中獲取待備份頁(yè)的原始數(shù)據(jù)進(jìn)行備份,然后從與所述當(dāng) 前待備份頁(yè)相應(yīng)的快照頁(yè)所占用的存儲(chǔ)空間不連續(xù)的快照頁(yè)中獲取待備份頁(yè)的原始數(shù)據(jù) 進(jìn)行備份。
[0085] 在此補(bǔ)充說(shuō)明,在執(zhí)行步驟1071之后,若不存在所述其余待備份頁(yè)相應(yīng)的快照頁(yè) 所占用的存儲(chǔ)空間與所述當(dāng)前待備份頁(yè)相應(yīng)的快照頁(yè)所占用的存儲(chǔ)空間是連續(xù)的,則從其 余存在快照頁(yè)的待備份頁(yè)中再選取一個(gè)進(jìn)行步驟101至104所示備份流程,或者,執(zhí)行步驟 101至108所示的備份流程即可。
[0086] 在本實(shí)施方式中,在優(yōu)先對(duì)存儲(chǔ)空間連續(xù)的快照頁(yè)中的數(shù)據(jù)信息進(jìn)行備份,以避 免出現(xiàn)離散的磁盤(pán)輸入輸出進(jìn)程,提高備份速度。
[0087] 基于如圖1所示的內(nèi)存數(shù)據(jù)庫(kù)系統(tǒng),本發(fā)明實(shí)施例還提供了用于數(shù)據(jù)修改的方法 流程,需要在備份流程已經(jīng)啟動(dòng)時(shí)執(zhí)行與步驟101之前,如圖5所示,包括:
[0088] 201、接收數(shù)據(jù)修改請(qǐng)求,所述數(shù)據(jù)修改請(qǐng)求攜帶有待修改數(shù)據(jù)所在頁(yè)的標(biāo)識(shí)。
[0089] 其中,此處描述的標(biāo)識(shí)與步驟101的有關(guān)描述相同。
[0090] 202、根據(jù)所述待修改數(shù)據(jù)所在頁(yè)的標(biāo)識(shí),確定當(dāng)前待修改數(shù)據(jù)在待備份頁(yè)中。
[0091] 其中,步驟202的具體實(shí)現(xiàn)方法就是使用所述待修改數(shù)據(jù)所在頁(yè)的標(biāo)識(shí)與所有待 備份頁(yè)的標(biāo)識(shí)一一進(jìn)行比對(duì),一樣則確定待修改數(shù)據(jù)在待備份頁(yè)中,否則認(rèn)為待修改數(shù)據(jù) 不在待備份頁(yè)中。
[0092] 203、根據(jù)所述待修改數(shù)據(jù)所在待備份頁(yè)存儲(chǔ)的原始數(shù)據(jù),在快照頁(yè)存儲(chǔ)空間為所 述待修改數(shù)據(jù)所在待備份頁(yè)分配一個(gè)快照頁(yè),并使用所述待修改數(shù)據(jù)所在待備份頁(yè)的標(biāo)識(shí) 進(jìn)行標(biāo)記。
[0093] 其中,為所述待備份頁(yè)分配一個(gè)快照頁(yè)的流程就是在快照頁(yè)存儲(chǔ)空間為待備份頁(yè) 分配一塊存儲(chǔ)空間,并將該塊存儲(chǔ)空間設(shè)置為頁(yè)的存儲(chǔ)形式。
[0094] 204、將所述待備份頁(yè)存儲(chǔ)的原始數(shù)據(jù)復(fù)制到分配好的快照頁(yè)進(jìn)行存儲(chǔ)。
[0095] 205、對(duì)所述待備份頁(yè)內(nèi)的待修改數(shù)據(jù)進(jìn)行修改。
[0096] 另外,執(zhí)行步驟202之后,當(dāng)確定待修改數(shù)據(jù)不在待備份頁(yè)中時(shí),則直接對(duì)待備份 頁(yè)存儲(chǔ)的原始數(shù)據(jù)進(jìn)行修改。
[0097] 本發(fā)明實(shí)施例提供的數(shù)據(jù)修改流程,通過(guò)在修改前將原始數(shù)據(jù)保存至快照頁(yè),然 后只對(duì)所述待備份頁(yè)存儲(chǔ)的原始數(shù)據(jù)進(jìn)行修改,而不對(duì)快照頁(yè)中的原始數(shù)據(jù)進(jìn)行修改,使 得在備份過(guò)程中可以獲取到備份開(kāi)始時(shí)各個(gè)待備份頁(yè)的原始數(shù)據(jù),從而保證所有備份數(shù)據(jù) 存儲(chǔ)的都是備份開(kāi)始時(shí)的數(shù)據(jù),使進(jìn)而有效保證數(shù)據(jù)備份的時(shí)效性。
[0098] 本發(fā)明實(shí)施例還提供了數(shù)據(jù)修改的另一種實(shí)施方式,如圖6所示,在所述步驟203 無(wú)法執(zhí)行時(shí),即當(dāng)在快照頁(yè)存儲(chǔ)空間的剩余空間小于為所述待修改數(shù)據(jù)所在待備份頁(yè)分配 一個(gè)快照頁(yè)所占用的存儲(chǔ)空間時(shí),還包括:
[0099] 206、對(duì)所述待備份頁(yè)存儲(chǔ)的原始數(shù)據(jù)進(jìn)行備份。
[0100] 207、對(duì)所述待備份頁(yè)內(nèi)的待修改數(shù)據(jù)進(jìn)行修改。
[0101] 在本實(shí)施方式,當(dāng)無(wú)法為待備份頁(yè)分配快照頁(yè)時(shí),優(yōu)先進(jìn)行備份再進(jìn)行修改,以保 證所有備份數(shù)據(jù)存儲(chǔ)的都是備份開(kāi)始時(shí)的數(shù)據(jù),使進(jìn)而有效保證數(shù)據(jù)備份的時(shí)效性。
[0102] 本發(fā)明實(shí)施例還提供了一種內(nèi)存數(shù)據(jù)庫(kù)存儲(chǔ)引擎,可以用于實(shí)現(xiàn)如圖2至圖6所 示的方法流程,如圖7所示,該裝置包括:
[0103] 獲取單元31,用于獲取當(dāng)前待備份頁(yè)的標(biāo)識(shí)。
[0104] 查找單元32,用于根據(jù)所述獲取單元31獲取的當(dāng)前待備份頁(yè)的標(biāo)識(shí),從快照頁(yè)存 儲(chǔ)空間中查找與所述當(dāng)前待備份頁(yè)對(duì)應(yīng)的快照頁(yè),所述當(dāng)前待備份頁(yè)對(duì)應(yīng)的快照頁(yè)存儲(chǔ)了 所述當(dāng)前待備份頁(yè)在備份進(jìn)程啟動(dòng)時(shí)存儲(chǔ)的原始數(shù)據(jù)。
[0105] 備份單元33,用于從所述查找單元32查找到的與所述當(dāng)前待備份頁(yè)對(duì)應(yīng)的快照 頁(yè)中獲取所述當(dāng)前待備份頁(yè)對(duì)應(yīng)的原始數(shù)據(jù),并對(duì)所述當(dāng)前待備份頁(yè)對(duì)應(yīng)的原始數(shù)據(jù)進(jìn)行 備份。
[0106] 資源釋放單元34,用于釋放所述備份單元33已備份的與所述當(dāng)前待備份頁(yè)對(duì)應(yīng) 的快照頁(yè)所占用的存儲(chǔ)空間。
[0107] 可選的是,所述獲取單元31還用于獲取其余待備份頁(yè)的標(biāo)識(shí),其中所述其余待備 份頁(yè)為除了當(dāng)前待備份頁(yè)之外的待備份頁(yè)。
[0108] 所述查找單元32,還用于根據(jù)所述獲取單元31獲取的所述其余待備份頁(yè)的標(biāo)識(shí), 從快照頁(yè)存儲(chǔ)空間中查找與其余待備份頁(yè)各自對(duì)應(yīng)的快照頁(yè)。
[0109] 所述備份單元33,用于當(dāng)所述查找單元32查找到所述其余待備份頁(yè)中的至少一 個(gè)存在對(duì)應(yīng)的快照頁(yè),則優(yōu)先從每個(gè)已查找到的快照頁(yè)中獲取待備份頁(yè)的原始數(shù)據(jù)進(jìn)行備 份;以及,直接從不存在對(duì)應(yīng)快照頁(yè)的其余待備份頁(yè)中獲取數(shù)據(jù)進(jìn)行備份。
[0110] 所述資源釋放單元34,用于釋放所述備份單元33已備份的快照頁(yè)所占用的存儲(chǔ) 空間。
[0111] 可選的是,如圖8所示,所述備份單元33包括:
[0112] 檢測(cè)模塊331,用于從所述快照頁(yè)存儲(chǔ)空間中檢測(cè)在所述其余備份頁(yè)中,是否存在 所述其余待備份頁(yè)相應(yīng)的快照頁(yè)所占用的存儲(chǔ)空間與所述當(dāng)前待備份頁(yè)相應(yīng)的快照頁(yè)所 占用的存儲(chǔ)空間是連續(xù)的。
[0113] 備份模塊332,用于在所述檢測(cè)模塊331存在所述其余待備份頁(yè)相應(yīng)的快照頁(yè)所 占用的存儲(chǔ)空間與所述當(dāng)前待備份頁(yè)相應(yīng)的快照頁(yè)所占用的存儲(chǔ)空間是連續(xù)的時(shí),則優(yōu)先 從與所述當(dāng)前待備份頁(yè)相應(yīng)的快照頁(yè)所占用的存儲(chǔ)空間連續(xù)的快照頁(yè)中獲取待備份頁(yè)的 原始數(shù)據(jù)進(jìn)行備份,然后從與所述當(dāng)前待備份頁(yè)相應(yīng)的快照頁(yè)所占用的存儲(chǔ)空間不連續(xù)的 快照頁(yè)中獲取待備份頁(yè)的原始數(shù)據(jù)進(jìn)行備份。
[0114] 可選的是,如圖9所示,還包括:
[0115] 接收單元41,用于接收數(shù)據(jù)修改請(qǐng)求,所述數(shù)據(jù)修改請(qǐng)求攜帶有待修改數(shù)據(jù)所在 頁(yè)的標(biāo)識(shí)。
[0116] 確定單元42,用于根據(jù)所述待修改數(shù)據(jù)所在頁(yè)的標(biāo)識(shí),確定當(dāng)前待修改數(shù)據(jù)在待 備份頁(yè)中。
[0117] 分配單元43,用于根據(jù)所述確定單元42確定的待修改數(shù)據(jù)所在待備份頁(yè)存儲(chǔ)的 原始數(shù)據(jù),在快照頁(yè)存儲(chǔ)空間為所述待修改數(shù)據(jù)所在待備份頁(yè)分配一個(gè)快照頁(yè),并使用所 述待修改數(shù)據(jù)所在待備份頁(yè)的標(biāo)識(shí)進(jìn)行標(biāo)記。
[0118] 復(fù)制單元44,用于將所述待備份頁(yè)存儲(chǔ)的原始數(shù)據(jù)復(fù)制到分配好的快照頁(yè)進(jìn)行存 儲(chǔ)。
[0119] 修改單元45,用于對(duì)所述待備份頁(yè)內(nèi)的待修改數(shù)據(jù)進(jìn)行修改。
[0120] 可選的是,所述備份單元44用于當(dāng)在快照頁(yè)存儲(chǔ)空間的剩余空間小于為所述待 修改數(shù)據(jù)所在待備份頁(yè)分配一個(gè)快照頁(yè)所占用的存儲(chǔ)空間時(shí),對(duì)所述待備份頁(yè)存儲(chǔ)的原始 數(shù)據(jù)進(jìn)行備份。
[0121] 所述修改單元45,用于對(duì)所述待備份頁(yè)內(nèi)的待修改數(shù)據(jù)進(jìn)行修改。
[0122] 本發(fā)明實(shí)施例提供的內(nèi)存數(shù)據(jù)庫(kù)存儲(chǔ)引擎,通過(guò)將為待備份頁(yè)中的數(shù)據(jù)提供快照 頁(yè)進(jìn)行存儲(chǔ),以保證即使在備份進(jìn)程中存在數(shù)據(jù)被修改,也可以保證修改前的數(shù)據(jù)可以被 保存下來(lái),使得備份進(jìn)程得到的數(shù)據(jù)都是備份進(jìn)程開(kāi)始時(shí)的數(shù)據(jù),相比于現(xiàn)有技術(shù)中若發(fā) 生數(shù)據(jù)修改則只能存儲(chǔ)修改后的數(shù)據(jù)相比,可以保證所有備份數(shù)據(jù)存儲(chǔ)的都是備份開(kāi)始時(shí) 的數(shù)據(jù),使進(jìn)而有效保證數(shù)據(jù)備份的時(shí)效性。
[0123] 本發(fā)明實(shí)施例還提供了一種內(nèi)存數(shù)據(jù)庫(kù)存儲(chǔ)引擎,如圖10所示,包括處理器51和 輸入輸出接口 52,所述輸入輸出接口 52用于處理器51與外部器件進(jìn)行通信。
[0124] 其中,所述處理器51用于獲取當(dāng)前待備份頁(yè)的標(biāo)識(shí);根據(jù)所述當(dāng)前待備份頁(yè)的標(biāo) 識(shí),從快照頁(yè)存儲(chǔ)空間中查找與所述當(dāng)前待備份頁(yè)對(duì)應(yīng)的快照頁(yè),從與所述當(dāng)前待備份頁(yè) 對(duì)應(yīng)的快照頁(yè)中獲取所述當(dāng)前待備份頁(yè)對(duì)應(yīng)的原始數(shù)據(jù),并對(duì)所述當(dāng)前待備份頁(yè)對(duì)應(yīng)的原 始數(shù)據(jù)進(jìn)行備份,其中,所述當(dāng)前待備份頁(yè)對(duì)應(yīng)的快照頁(yè)存儲(chǔ)了所述當(dāng)前待備份頁(yè)在備份 進(jìn)程啟動(dòng)時(shí)存儲(chǔ)的原始數(shù)據(jù);釋放與所述當(dāng)前待備份頁(yè)對(duì)應(yīng)的快照頁(yè)所占用的存儲(chǔ)空間。
[0125] 可選的是,所述處理器51還用于獲取其余待備份頁(yè)的標(biāo)識(shí),其中所述其余待備份 頁(yè)為除了當(dāng)前待備份頁(yè)之外的待備份頁(yè);根據(jù)所述其余待備份頁(yè)的標(biāo)識(shí),從快照頁(yè)存儲(chǔ)空 間中查找與所述其余待備份頁(yè)各自對(duì)應(yīng)的快照頁(yè);當(dāng)查找到所述其余待備份頁(yè)中的至少一 個(gè)存在對(duì)應(yīng)的快照頁(yè),則優(yōu)先從每個(gè)已查找到的快照頁(yè)中獲取待備份頁(yè)的原始數(shù)據(jù)進(jìn)行備 份,并釋放已備份的快照頁(yè)所占用的存儲(chǔ)空間;在對(duì)每個(gè)已查找到的快照頁(yè)內(nèi)存儲(chǔ)的原始 數(shù)據(jù)完成備份之后,直接從不存在對(duì)應(yīng)快照頁(yè)的其余待備份頁(yè)中獲取數(shù)據(jù)進(jìn)行備份。
[0126] 可選的是,所述處理器51還具體用于從所述快照頁(yè)存儲(chǔ)空間中檢測(cè)在所述其余 備份頁(yè)中,是否存在所述其余待備份頁(yè)相應(yīng)的快照頁(yè)所占用的存儲(chǔ)空間與所述當(dāng)前待備份 頁(yè)相應(yīng)的快照頁(yè)所占用的存儲(chǔ)空間是連續(xù)的;若存在所述其余待備份頁(yè)相應(yīng)的快照頁(yè)所占 用的存儲(chǔ)空間與所述當(dāng)前待備份頁(yè)相應(yīng)的快照頁(yè)所占用的存儲(chǔ)空間是連續(xù)的,則優(yōu)先從與 所述當(dāng)前待備份頁(yè)相應(yīng)的快照頁(yè)所占用的存儲(chǔ)空間連續(xù)的快照頁(yè)中獲取待備份頁(yè)的原始 數(shù)據(jù)進(jìn)行備份,然后從與所述當(dāng)前待備份頁(yè)相應(yīng)的快照頁(yè)所占用的存儲(chǔ)空間不連續(xù)的快照 頁(yè)中獲取待備份頁(yè)的原始數(shù)據(jù)進(jìn)行備份。
[0127] 可選的是,所述處理器51還用于通過(guò)所述輸入輸出接口 52接收數(shù)據(jù)修改請(qǐng)求,所 述數(shù)據(jù)修改請(qǐng)求攜帶有待修改數(shù)據(jù)所在頁(yè)的標(biāo)識(shí);根據(jù)所述待修改數(shù)據(jù)所在頁(yè)的標(biāo)識(shí),確 定當(dāng)前待修改數(shù)據(jù)在待備份頁(yè)中,根據(jù)所述待修改數(shù)據(jù)所在待備份頁(yè)存儲(chǔ)的原始數(shù)據(jù),在 快照頁(yè)存儲(chǔ)空間為所述待修改數(shù)據(jù)所在待備份頁(yè)分配一個(gè)快照頁(yè),并使用所述待修改數(shù)據(jù) 所在待備份頁(yè)的標(biāo)識(shí)進(jìn)行標(biāo)記;將所述待備份頁(yè)存儲(chǔ)的原始數(shù)據(jù)復(fù)制到分配好的快照頁(yè)進(jìn) 行存儲(chǔ);對(duì)所述待備份頁(yè)內(nèi)的待修改數(shù)據(jù)進(jìn)行修改。
[0128] 可選的是,所述處理器51還用于當(dāng)在快照頁(yè)存儲(chǔ)空間的剩余空間小于為所述待 修改數(shù)據(jù)所在待備份頁(yè)分配一個(gè)快照頁(yè)所占用的存儲(chǔ)空間時(shí),對(duì)所述待備份頁(yè)存儲(chǔ)的原始 數(shù)據(jù)進(jìn)行備份;對(duì)所述待備份頁(yè)內(nèi)的待修改數(shù)據(jù)進(jìn)行修改。
[0129] 本發(fā)明實(shí)施例提供的內(nèi)存數(shù)據(jù)庫(kù)存儲(chǔ)引擎,通過(guò)將為待備份頁(yè)中的數(shù)據(jù)提供快照 頁(yè)進(jìn)行存儲(chǔ),以保證即使在備份進(jìn)程中存在數(shù)據(jù)被修改,也可以保證修改前的數(shù)據(jù)可以被 保存下來(lái),使得備份進(jìn)程得到的數(shù)據(jù)都是備份進(jìn)程開(kāi)始時(shí)的數(shù)據(jù),相比于現(xiàn)有技術(shù)中若發(fā) 生數(shù)據(jù)修改則只能存儲(chǔ)修改后的數(shù)據(jù)相比,可以保證所有備份數(shù)據(jù)存儲(chǔ)的都是備份開(kāi)始時(shí) 的數(shù)據(jù),使進(jìn)而有效保證數(shù)據(jù)備份的時(shí)效性。
[0130] 通過(guò)以上的實(shí)施方式的描述,所屬領(lǐng)域的技術(shù)人員可以清楚地了解到本發(fā)明可借 助軟件加必需的通用硬件的方式來(lái)實(shí)現(xiàn),當(dāng)然也可以通過(guò)硬件,但很多情況下前者是更佳 的實(shí)施方式?;谶@樣的理解,本發(fā)明的技術(shù)方案本質(zhì)上或者說(shuō)對(duì)現(xiàn)有技術(shù)做出貢獻(xiàn)的部 分可以以軟件產(chǎn)品的形式體現(xiàn)出來(lái),該計(jì)算機(jī)軟件產(chǎn)品存儲(chǔ)在可讀取的存儲(chǔ)介質(zhì)中,如計(jì) 算機(jī)的軟盤(pán),硬盤(pán)或光盤(pán)等,包括若干指令用以使得一臺(tái)計(jì)算機(jī)設(shè)備(可以是個(gè)人計(jì)算機(jī), 服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個(gè)實(shí)施例所述的方法。
[0131] 以上所述,僅為本發(fā)明的【具體實(shí)施方式】,但本發(fā)明的保護(hù)范圍并不局限于此,任何 熟悉本【技術(shù)領(lǐng)域】的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),可輕易想到變化或替換,都應(yīng)涵 蓋在本發(fā)明的保護(hù)范圍之內(nèi)。因此,本發(fā)明的保護(hù)范圍應(yīng)以所述權(quán)利要求的保護(hù)范圍為準(zhǔn)。
【權(quán)利要求】
1. 一種數(shù)據(jù)備份的方法,其特征在于,包括: 獲取當(dāng)前待備份頁(yè)的標(biāo)識(shí); 根據(jù)所述當(dāng)前待備份頁(yè)的標(biāo)識(shí),從快照頁(yè)存儲(chǔ)空間中查找與所述當(dāng)前待備份頁(yè)對(duì)應(yīng)的 快照頁(yè),從與所述當(dāng)前待備份頁(yè)對(duì)應(yīng)的快照頁(yè)中獲取所述當(dāng)前待備份頁(yè)對(duì)應(yīng)的原始數(shù)據(jù), 并對(duì)所述當(dāng)前待備份頁(yè)對(duì)應(yīng)的原始數(shù)據(jù)進(jìn)行備份,其中,所述當(dāng)前待備份頁(yè)對(duì)應(yīng)的快照頁(yè) 存儲(chǔ)了所述當(dāng)前待備份頁(yè)在備份進(jìn)程啟動(dòng)時(shí)存儲(chǔ)的原始數(shù)據(jù); 釋放與所述當(dāng)前待備份頁(yè)對(duì)應(yīng)的快照頁(yè)所占用的存儲(chǔ)空間。
2. 根據(jù)權(quán)利要求1所述的方法,其特征在于,在釋放所述當(dāng)前待備份頁(yè)對(duì)應(yīng)的快照頁(yè) 所占用的存儲(chǔ)空間之后,還包括: 獲取其余待備份頁(yè)的標(biāo)識(shí),其中所述其余待備份頁(yè)為除了當(dāng)前待備份頁(yè)之外的待備份 頁(yè); 根據(jù)所述其余待備份頁(yè)的標(biāo)識(shí),從快照頁(yè)存儲(chǔ)空間中查找與所述其余待備份頁(yè)各自對(duì) 應(yīng)的快照頁(yè); 當(dāng)查找到所述其余待備份頁(yè)中的至少一個(gè)存在對(duì)應(yīng)的快照頁(yè),則優(yōu)先從每個(gè)已查找 到的快照頁(yè)中獲取待備份頁(yè)的原始數(shù)據(jù)進(jìn)行備份,并釋放已備份的快照頁(yè)所占用的存儲(chǔ)空 間; 在對(duì)每個(gè)已查找到的快照頁(yè)內(nèi)存儲(chǔ)的原始數(shù)據(jù)完成備份之后,直接從不存在對(duì)應(yīng)快照 頁(yè)的其余待備份頁(yè)中獲取數(shù)據(jù)進(jìn)行備份。
3. 根據(jù)權(quán)利要求2所述的方法,其特征在于,所述從與所述當(dāng)前待備份頁(yè)對(duì)應(yīng)的快照 頁(yè)中獲取所述當(dāng)前待備份頁(yè)對(duì)應(yīng)的原始數(shù)據(jù),并對(duì)所述當(dāng)前待備份頁(yè)對(duì)應(yīng)的原始數(shù)據(jù)進(jìn)行 備份包括: 從所述快照頁(yè)存儲(chǔ)空間中檢測(cè)在所述其余備份頁(yè)中,是否存在所述其余待備份頁(yè)相應(yīng) 的快照頁(yè)所占用的存儲(chǔ)空間與所述當(dāng)前待備份頁(yè)相應(yīng)的快照頁(yè)所占用的存儲(chǔ)空間是連續(xù) 的; 若存在所述其余待備份頁(yè)相應(yīng)的快照頁(yè)所占用的存儲(chǔ)空間與所述當(dāng)前待備份頁(yè)相應(yīng) 的快照頁(yè)所占用的存儲(chǔ)空間是連續(xù)的,則優(yōu)先從與所述當(dāng)前待備份頁(yè)相應(yīng)的快照頁(yè)所占用 的存儲(chǔ)空間連續(xù)的快照頁(yè)中獲取待備份頁(yè)的原始數(shù)據(jù)進(jìn)行備份,然后從與所述當(dāng)前待備份 頁(yè)相應(yīng)的快照頁(yè)所占用的存儲(chǔ)空間不連續(xù)的快照頁(yè)中獲取待備份頁(yè)的原始數(shù)據(jù)進(jìn)行備份。
4. 根據(jù)權(quán)利要求1至3任意一項(xiàng)所述的方法,其特征在于,在獲取當(dāng)前待備份頁(yè)的標(biāo)識(shí) 之前,還包括: 接收數(shù)據(jù)修改請(qǐng)求,所述數(shù)據(jù)修改請(qǐng)求攜帶有待修改數(shù)據(jù)所在頁(yè)的標(biāo)識(shí); 根據(jù)所述待修改數(shù)據(jù)所在頁(yè)的標(biāo)識(shí),確定當(dāng)前待修改數(shù)據(jù)在待備份頁(yè)中,根據(jù)所述待 修改數(shù)據(jù)所在待備份頁(yè)存儲(chǔ)的原始數(shù)據(jù),在快照頁(yè)存儲(chǔ)空間為所述待修改數(shù)據(jù)所在待備份 頁(yè)分配一個(gè)快照頁(yè),并使用所述待修改數(shù)據(jù)所在待備份頁(yè)的標(biāo)識(shí)進(jìn)行標(biāo)記; 將所述待備份頁(yè)存儲(chǔ)的原始數(shù)據(jù)復(fù)制到分配好的快照頁(yè)進(jìn)行存儲(chǔ); 對(duì)所述待備份頁(yè)內(nèi)的待修改數(shù)據(jù)進(jìn)行修改。
5. 根據(jù)權(quán)利要求4所述的方法,其特征在于,還包括: 當(dāng)快照頁(yè)存儲(chǔ)空間的剩余空間小于為所述待修改數(shù)據(jù)所在待備份頁(yè)分配一個(gè)快照頁(yè) 所占用的存儲(chǔ)空間時(shí),對(duì)所述待備份頁(yè)存儲(chǔ)的原始數(shù)據(jù)進(jìn)行備份; 對(duì)所述待備份頁(yè)內(nèi)的待修改數(shù)據(jù)進(jìn)行修改。
6. -種內(nèi)存數(shù)據(jù)庫(kù)存儲(chǔ)引擎,其特征在于,包括: 獲取單元,用于獲取當(dāng)前待備份頁(yè)的標(biāo)識(shí); 查找單元,用于根據(jù)所述獲取單元獲取的當(dāng)前待備份頁(yè)的標(biāo)識(shí),從快照頁(yè)存儲(chǔ)空間中 查找與所述當(dāng)前待備份頁(yè)對(duì)應(yīng)的快照頁(yè);其中,所述當(dāng)前待備份頁(yè)對(duì)應(yīng)的快照頁(yè)存儲(chǔ)了所 述當(dāng)前待備份頁(yè)在備份進(jìn)程啟動(dòng)時(shí)存儲(chǔ)的原始數(shù)據(jù); 備份單元,用于從所述查找單元查找到的與所述當(dāng)前待備份頁(yè)對(duì)應(yīng)的快照頁(yè)中獲取所 述當(dāng)前待備份頁(yè)對(duì)應(yīng)的原始數(shù)據(jù),并對(duì)所述當(dāng)前待備份頁(yè)對(duì)應(yīng)的原始數(shù)據(jù)進(jìn)行備份; 資源釋放單元,用于釋放所述備份單元已備份的與所述當(dāng)前待備份頁(yè)對(duì)應(yīng)的快照頁(yè)所 占用的存儲(chǔ)空間。
7. 根據(jù)權(quán)利要求6所述的內(nèi)存數(shù)據(jù)庫(kù)存儲(chǔ)引擎,其特征在于,所述獲取單元還用于獲 取其余待備份頁(yè)的標(biāo)識(shí),其中所述其余待備份頁(yè)為除了當(dāng)前待備份頁(yè)之外的待備份頁(yè); 所述查找單元,還用于根據(jù)所述獲取單元獲取的所述其余待備份頁(yè)的標(biāo)識(shí),從快照頁(yè) 存儲(chǔ)空間中查找與其余待備份頁(yè)各自對(duì)應(yīng)的快照頁(yè); 所述備份單元,用于當(dāng)所述查找單元查找到所述其余待備份頁(yè)中的至少一個(gè)存在對(duì)應(yīng) 的快照頁(yè),則優(yōu)先從每個(gè)已查找到的快照頁(yè)中獲取待備份頁(yè)的原始數(shù)據(jù)進(jìn)行備份;以及,直 接從不存在對(duì)應(yīng)快照頁(yè)的其余待備份頁(yè)中獲取數(shù)據(jù)進(jìn)行備份; 所述資源釋放單元,用于釋放所述備份單元已備份的快照頁(yè)所占用的存儲(chǔ)空間。
8. 根據(jù)權(quán)利要求7所述的內(nèi)存數(shù)據(jù)庫(kù)存儲(chǔ)引擎,其特征在于,所述備份單元包括: 檢測(cè)模塊,用于從所述快照頁(yè)存儲(chǔ)空間中檢測(cè)在所述其余備份頁(yè)中,是否存在所述其 余待備份頁(yè)相應(yīng)的快照頁(yè)所占用的存儲(chǔ)空間與所述當(dāng)前待備份頁(yè)相應(yīng)的快照頁(yè)所占用的 存儲(chǔ)空間是連續(xù)的; 備份模塊,用于在所述檢測(cè)模塊存在所述其余待備份頁(yè)相應(yīng)的快照頁(yè)所占用的存儲(chǔ)空 間與所述當(dāng)前待備份頁(yè)相應(yīng)的快照頁(yè)所占用的存儲(chǔ)空間是連續(xù)的時(shí),則優(yōu)先從與所述當(dāng)前 待備份頁(yè)相應(yīng)的快照頁(yè)所占用的存儲(chǔ)空間連續(xù)的快照頁(yè)中獲取待備份頁(yè)的原始數(shù)據(jù)進(jìn)行 備份,然后從與所述當(dāng)前待備份頁(yè)相應(yīng)的快照頁(yè)所占用的存儲(chǔ)空間不連續(xù)的快照頁(yè)中獲取 待備份頁(yè)的原始數(shù)據(jù)進(jìn)行備份。
9. 根據(jù)權(quán)利要求6至8任意一項(xiàng)所述的內(nèi)存數(shù)據(jù)庫(kù)存儲(chǔ)引擎,其特征在于,還包括: 接收單元,用于接收數(shù)據(jù)修改請(qǐng)求,所述數(shù)據(jù)修改請(qǐng)求攜帶有待修改數(shù)據(jù)所在頁(yè)的標(biāo) 識(shí); 確定單元,用于根據(jù)所述待修改數(shù)據(jù)所在頁(yè)的標(biāo)識(shí),確定當(dāng)前待修改數(shù)據(jù)在待備份頁(yè) 中; 分配單元,用于根據(jù)所述確定單元確定的待修改數(shù)據(jù)所在待備份頁(yè)存儲(chǔ)的原始數(shù)據(jù), 在快照頁(yè)存儲(chǔ)空間為所述待修改數(shù)據(jù)所在待備份頁(yè)分配一個(gè)快照頁(yè),并使用所述待修改數(shù) 據(jù)所在待備份頁(yè)的標(biāo)識(shí)進(jìn)行標(biāo)記; 復(fù)制單元,用于將所述待備份頁(yè)存儲(chǔ)的原始數(shù)據(jù)復(fù)制到分配好的快照頁(yè)進(jìn)行存儲(chǔ); 修改單元,用于對(duì)所述待備份頁(yè)內(nèi)的待修改數(shù)據(jù)進(jìn)行修改。
10. 根據(jù)權(quán)利要求9所述的內(nèi)存數(shù)據(jù)庫(kù)存儲(chǔ)引擎,其特征在于,所述備份單元用于當(dāng)在 快照頁(yè)存儲(chǔ)空間的剩余空間小于為所述待修改數(shù)據(jù)所在待備份頁(yè)分配一個(gè)快照頁(yè)所占用 的存儲(chǔ)空間時(shí),對(duì)所述待備份頁(yè)存儲(chǔ)的原始數(shù)據(jù)進(jìn)行備份; 所述修改單元,用于對(duì)所述待備份頁(yè)內(nèi)的待修改數(shù)據(jù)進(jìn)行修改。
【文檔編號(hào)】G06F17/30GK104216792SQ201310208187
【公開(kāi)日】2014年12月17日 申請(qǐng)日期:2013年5月29日 優(yōu)先權(quán)日:2013年5月29日
【發(fā)明者】梁遠(yuǎn)勝 申請(qǐng)人:華為軟件技術(shù)有限公司