本技術(shù)涉及存儲(chǔ),尤其涉及一種數(shù)據(jù)恢復(fù)方法、裝置及系統(tǒng)。
背景技術(shù):
1、在存儲(chǔ)技術(shù)領(lǐng)域中,數(shù)據(jù)庫中的數(shù)據(jù)的可靠性直接影響業(yè)務(wù)質(zhì)量,為保證數(shù)據(jù)庫中的數(shù)據(jù)的可靠性,通常會(huì)對數(shù)據(jù)庫中的數(shù)據(jù)進(jìn)行備份,以備數(shù)據(jù)庫發(fā)生故障時(shí)根據(jù)備份數(shù)據(jù)對數(shù)據(jù)庫中的數(shù)據(jù)進(jìn)行恢復(fù)。
2、一種數(shù)據(jù)恢復(fù)的方式是時(shí)間點(diǎn)恢復(fù)(point-in-time-recovery,pitr),即將數(shù)據(jù)庫中的數(shù)據(jù)恢復(fù)至指定時(shí)間點(diǎn)的數(shù)據(jù)。指定時(shí)間點(diǎn)恢復(fù)的過程中,由部署在計(jì)算節(jié)點(diǎn)中的用于數(shù)據(jù)庫管理的數(shù)據(jù)庫應(yīng)用從備份存儲(chǔ)系統(tǒng)中讀取備份數(shù)據(jù)以及歸檔的數(shù)據(jù)庫日志,并根據(jù)備份數(shù)據(jù)以及數(shù)據(jù)庫日志進(jìn)行將數(shù)據(jù)恢復(fù)到指定時(shí)間點(diǎn)。
3、上述數(shù)據(jù)恢復(fù)的方法中,數(shù)據(jù)庫應(yīng)用讀取備份數(shù)據(jù)和數(shù)據(jù)庫日志,待恢復(fù)出指定時(shí)間點(diǎn)數(shù)據(jù)之后,將恢復(fù)的數(shù)據(jù)存儲(chǔ)至存儲(chǔ)節(jié)點(diǎn)中的數(shù)據(jù)庫,該過程會(huì)耗費(fèi)計(jì)算節(jié)點(diǎn)的算力,并占用計(jì)算節(jié)點(diǎn)和存儲(chǔ)節(jié)點(diǎn)之間的帶寬,可能會(huì)影響數(shù)據(jù)庫業(yè)務(wù)的正常運(yùn)行。
技術(shù)實(shí)現(xiàn)思路
1、本技術(shù)提供一種數(shù)據(jù)恢復(fù)方法、裝置及系統(tǒng),能夠在數(shù)據(jù)恢復(fù)的過程中節(jié)省資源,保證數(shù)據(jù)庫業(yè)務(wù)順利運(yùn)行。
2、本技術(shù)采用如下技術(shù)方案:
3、第一方面,本技術(shù)提供一種數(shù)據(jù)恢復(fù)方法,應(yīng)用于存儲(chǔ)系統(tǒng)中的主存儲(chǔ)設(shè)備,該存儲(chǔ)系統(tǒng)包括計(jì)算設(shè)備、主存儲(chǔ)設(shè)備以及備份存儲(chǔ)設(shè)備,其中,計(jì)算設(shè)備上運(yùn)行有數(shù)據(jù)庫的管理系統(tǒng),主存儲(chǔ)設(shè)備用于存儲(chǔ)數(shù)據(jù)庫的數(shù)據(jù)和日志,備份存儲(chǔ)設(shè)備用于存儲(chǔ)數(shù)據(jù)庫的備份數(shù)據(jù)以及歸檔日志。該方法包括:接收數(shù)據(jù)恢復(fù)指令,該數(shù)據(jù)恢復(fù)指令用于指示將數(shù)據(jù)庫的數(shù)據(jù)恢復(fù)至指定時(shí)間點(diǎn);并基于備份存儲(chǔ)設(shè)備中的備份數(shù)據(jù),獲得備份時(shí)間早于指定時(shí)間點(diǎn)的全量備份數(shù)據(jù);以及基于備份存儲(chǔ)設(shè)備中存儲(chǔ)的數(shù)據(jù)庫的歸檔日志,獲得歸檔日志,該歸檔日志包括在指定時(shí)間點(diǎn)之前,且在全量備份數(shù)據(jù)的備份時(shí)間之后生成的多條日志,多條日志的序列號連續(xù);再根據(jù)獲取的全量備份數(shù)據(jù)和歸檔日志,對數(shù)據(jù)庫進(jìn)行數(shù)據(jù)恢復(fù),得到數(shù)據(jù)庫在指定時(shí)間點(diǎn)的數(shù)據(jù);并存儲(chǔ)指定時(shí)間點(diǎn)的數(shù)據(jù)。
4、本技術(shù)中,由存儲(chǔ)設(shè)備基于備份數(shù)據(jù)和歸檔日志執(zhí)行數(shù)據(jù)恢復(fù)過程,以及由存儲(chǔ)設(shè)備所管理的存儲(chǔ)空間對恢復(fù)出的數(shù)據(jù)進(jìn)行存儲(chǔ)。相對于由計(jì)算設(shè)備根據(jù)從備份存儲(chǔ)設(shè)備獲得的備份數(shù)據(jù)和歸檔日志進(jìn)行數(shù)據(jù)恢復(fù),然后把恢復(fù)獲得數(shù)據(jù)發(fā)送給主存儲(chǔ)設(shè)備進(jìn)行存儲(chǔ)的方案而言,本技術(shù)的方案無需計(jì)算設(shè)備參與數(shù)據(jù)恢復(fù),如此,能夠節(jié)省計(jì)算設(shè)備的資源。并且由存儲(chǔ)設(shè)備執(zhí)行數(shù)據(jù)恢復(fù)過程,數(shù)據(jù)恢復(fù)過程無需存儲(chǔ)設(shè)備與計(jì)算設(shè)備交互進(jìn)行數(shù)據(jù)傳輸,這樣可以節(jié)省計(jì)算設(shè)備的帶寬,確保計(jì)算設(shè)備有足夠的資源來運(yùn)行數(shù)據(jù)庫業(yè)務(wù),從而保證數(shù)據(jù)庫業(yè)務(wù)順利運(yùn)行。
5、進(jìn)一步的,相對于歸檔日志序列號不連續(xù)的情況下,對于被遺漏的日志,無法恢復(fù)出被遺漏的日志所對應(yīng)的數(shù)據(jù),從而導(dǎo)致無法將數(shù)據(jù)恢復(fù)至指定時(shí)間點(diǎn)的方案而言,本技術(shù)的方案中,由于用于數(shù)據(jù)恢復(fù)的歸檔日志的序列號是連續(xù)的(即日志未遺漏),因此,存儲(chǔ)設(shè)備根據(jù)早于指定時(shí)間點(diǎn)的全量備份數(shù)據(jù)和完整的日志,可以將數(shù)據(jù)恢復(fù)至指定時(shí)間點(diǎn),能夠保證數(shù)據(jù)恢復(fù)的準(zhǔn)確性。
6、一種可能的實(shí)現(xiàn)方式中,上述數(shù)據(jù)庫的備份數(shù)據(jù)為數(shù)據(jù)快照,本技術(shù)提供的數(shù)據(jù)恢復(fù)方法還包括:接收數(shù)據(jù)備份指令,該數(shù)據(jù)備份指令用于指示對數(shù)據(jù)庫的數(shù)據(jù)進(jìn)行備份;并生成數(shù)據(jù)庫的數(shù)據(jù)快照;以及將數(shù)據(jù)快照以全量備份或增量備份的方式寫入備份存儲(chǔ)設(shè)備。
7、本技術(shù)中,數(shù)據(jù)備份過程由主存儲(chǔ)設(shè)備完成,無需計(jì)算設(shè)備中的數(shù)據(jù)庫管理系統(tǒng)參與數(shù)據(jù)備份,這樣可以節(jié)省計(jì)算設(shè)備的資源,并且數(shù)據(jù)備份過程無需存儲(chǔ)設(shè)備與計(jì)算設(shè)備交互進(jìn)行數(shù)據(jù)傳輸,能夠節(jié)省計(jì)算設(shè)備的帶寬。
8、一種可能的實(shí)現(xiàn)方式中,上述歸檔日志為日志快照,本技術(shù)提供的數(shù)據(jù)恢復(fù)方法還包括:接收日志歸檔指令,所該日志歸檔指令用于指示對數(shù)據(jù)庫的日志進(jìn)行歸檔;并按照指定時(shí)間間隔生成數(shù)據(jù)庫的日志快照,其中,連續(xù)的兩個(gè)日志快照包含的多條日志的序列號連續(xù);以及將日志快照以全量備份或增量備份的方式寫入備份存儲(chǔ)設(shè)備。
9、由于日志回收機(jī)制,會(huì)造成計(jì)算設(shè)備所生成的部分序列號的日志在歸檔到備份存儲(chǔ)設(shè)備之前就被回收,以至于這部分序列號的日志未能歸檔到備份存儲(chǔ)設(shè)備,后續(xù)在數(shù)據(jù)恢復(fù)的過程中,基于備份存儲(chǔ)設(shè)備中的歸檔日志得到的(用于數(shù)據(jù)恢復(fù)的)日志的序列號不連續(xù)。本技術(shù)中,在通過快照對日志所保護(hù)的數(shù)據(jù)進(jìn)行備份之前,不對日志進(jìn)行回收。本技術(shù)中,在日志歸檔的過程中,將數(shù)據(jù)庫的日志以日志快照的方式進(jìn)行歸檔,并確保連續(xù)的快照所包含的日志是完整的日志,即確保日志不遺漏,從而基于歸檔日志進(jìn)行數(shù)據(jù)恢復(fù)時(shí),有助于順利實(shí)現(xiàn)指定時(shí)間點(diǎn)恢復(fù)(pitr)。
10、一種可能的實(shí)現(xiàn)方式中,上述按照指定時(shí)間間隔生成所述數(shù)據(jù)庫的日志快照之前,本技術(shù)提供的數(shù)據(jù)恢復(fù)方法還包括:回收數(shù)據(jù)庫的日志;并且當(dāng)接收到日志歸檔指令時(shí),停止回收數(shù)據(jù)庫的日志。通常數(shù)據(jù)庫具有日志回收機(jī)制,如定期進(jìn)行日志回收,當(dāng)?shù)竭_(dá)日志回收周期時(shí),主存儲(chǔ)設(shè)備會(huì)對其存儲(chǔ)的數(shù)據(jù)庫的日志進(jìn)行回收。
11、本技術(shù)中,在接收到日志回收指令時(shí),主存儲(chǔ)設(shè)備停止回收日志,這樣可以保證連續(xù)的日志快照所包含的日志的序列號連續(xù),如此使得日志不遺漏,從而有助于順利實(shí)現(xiàn)pitr。
12、一種可能的實(shí)現(xiàn)方式中,本技術(shù)提供的數(shù)據(jù)恢復(fù)方法還包括:當(dāng)接收到日志歸檔指令時(shí),對指定時(shí)間間隔內(nèi)生成的日志進(jìn)行標(biāo)記;在生成日志快照之后,回收被標(biāo)記的日志。對日志打標(biāo)記,便于根據(jù)標(biāo)記及時(shí)地回收主存儲(chǔ)設(shè)備中已經(jīng)被打了快照的日志,能夠節(jié)省存儲(chǔ)設(shè)備的存儲(chǔ)空間。
13、一種可能的實(shí)現(xiàn)方式中,本技術(shù)提供的數(shù)據(jù)恢復(fù)方法還包括:根據(jù)數(shù)據(jù)庫的日志格式,從主存儲(chǔ)設(shè)備中獲取數(shù)據(jù)庫的日志,以對日志進(jìn)行標(biāo)記和/或生成日志快照。本技術(shù)中的主存儲(chǔ)設(shè)備可以感知數(shù)據(jù)庫的日志的格式,進(jìn)而根據(jù)日志格式準(zhǔn)確并順利地獲取日志,便于對日志進(jìn)行歸檔。
14、一種可能的實(shí)現(xiàn)方式中,當(dāng)歸檔日志為日志流時(shí),本技術(shù)提供的數(shù)據(jù)恢復(fù)方法還包括:根據(jù)數(shù)據(jù)庫的日志格式,獲取數(shù)據(jù)庫的日志流;并將數(shù)據(jù)庫的日志流寫入備份存儲(chǔ)設(shè)備。對數(shù)據(jù)庫的日志流進(jìn)行流式歸檔,由于日志流中的日志的序列號是連續(xù)的,因此能夠保證數(shù)據(jù)庫的日志不遺漏,有利于實(shí)現(xiàn)數(shù)據(jù)的指定時(shí)間點(diǎn)恢復(fù)(pitr)。
15、一種可能的實(shí)現(xiàn)方式中,上述根據(jù)全量備份數(shù)據(jù)和歸檔日志,對數(shù)據(jù)庫進(jìn)行數(shù)據(jù)恢復(fù),得到數(shù)據(jù)庫在指定時(shí)間點(diǎn)的數(shù)據(jù),包括:以全量備份數(shù)據(jù)為起點(diǎn),按照歸檔日志中的日志的序列號的排列順序,對數(shù)據(jù)庫進(jìn)行數(shù)據(jù)恢復(fù),得到數(shù)據(jù)庫在指定時(shí)間點(diǎn)的數(shù)據(jù)。
16、第二方面,本技術(shù)提供一種存儲(chǔ)設(shè)備,該存儲(chǔ)設(shè)備是存儲(chǔ)系統(tǒng)中的主存儲(chǔ)設(shè)備,存儲(chǔ)系統(tǒng)還包括計(jì)算設(shè)備以及備份存儲(chǔ)設(shè)備,計(jì)算設(shè)備上運(yùn)行有數(shù)據(jù)庫的管理系統(tǒng),主存儲(chǔ)設(shè)備用于存儲(chǔ)數(shù)據(jù)庫的數(shù)據(jù)和日志,備份存儲(chǔ)設(shè)備用于存儲(chǔ)數(shù)據(jù)庫的備份數(shù)據(jù)以及歸檔日志。該存儲(chǔ)設(shè)備包括用于實(shí)現(xiàn)第一方面及其可能的實(shí)現(xiàn)方式中之一所述的方法的各個(gè)模塊,例如接收模塊、獲取模塊以、數(shù)據(jù)恢復(fù)模塊、存儲(chǔ)模塊、生成模塊、寫入模塊、日志回收模塊、控制模塊以及標(biāo)記模塊等。
17、該存儲(chǔ)設(shè)備具有實(shí)現(xiàn)上述第一方面及其可能的實(shí)現(xiàn)方式中任意之一的方法實(shí)例中行為的功能。所述功能可以通過硬件實(shí)現(xiàn),也可以通過硬件執(zhí)行相應(yīng)的軟件實(shí)現(xiàn)。所述硬件或軟件包括一個(gè)或多個(gè)與上述功能相對應(yīng)的模塊。
18、第三方面,本技術(shù)一種存儲(chǔ)設(shè)備,包括存儲(chǔ)器和與存儲(chǔ)器連接的至少一個(gè)處理器,存儲(chǔ)器用于存儲(chǔ)計(jì)算機(jī)程序代碼,計(jì)算機(jī)程序代碼包括計(jì)算機(jī)指令,當(dāng)計(jì)算機(jī)指令被至少一個(gè)處理器執(zhí)行時(shí),使得存儲(chǔ)設(shè)備執(zhí)行第一方面及其可能的實(shí)現(xiàn)方式中任意之一的方法。
19、第四方面,本技術(shù)提供一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),存儲(chǔ)有計(jì)算機(jī)指令,計(jì)算機(jī)指令在計(jì)算機(jī)上運(yùn)行時(shí),執(zhí)行第一方面及其可能的實(shí)現(xiàn)方式中任意之一的方法。
20、第五方面,本技術(shù)提供一種計(jì)算機(jī)程序產(chǎn)品,該計(jì)算機(jī)程序產(chǎn)品包含計(jì)算機(jī)指令,當(dāng)計(jì)算機(jī)指令在計(jì)算機(jī)上運(yùn)行時(shí),執(zhí)行第一方面及其可能的實(shí)現(xiàn)方式中任意之一的方法。
21、第六方面,本技術(shù)提供一種芯片系統(tǒng),包括:處理器,用于從存儲(chǔ)器中調(diào)用并運(yùn)行計(jì)算機(jī)程序,使得安裝有芯片系統(tǒng)的存儲(chǔ)設(shè)備執(zhí)行第一方面及其可能的實(shí)現(xiàn)方式中任意之一的方法。
22、第七方面,本技術(shù)提供一種存儲(chǔ)系統(tǒng),包括計(jì)算設(shè)備、主存儲(chǔ)設(shè)備以及輔存儲(chǔ)設(shè)備;計(jì)算設(shè)備上運(yùn)行有數(shù)據(jù)庫的管理系統(tǒng),主存儲(chǔ)設(shè)備用于存儲(chǔ)數(shù)據(jù)庫的數(shù)據(jù)和日志,備份存儲(chǔ)設(shè)備用于存儲(chǔ)數(shù)據(jù)庫的備份數(shù)據(jù)以及歸檔日志;主存儲(chǔ)設(shè)備用于執(zhí)行第一方面及其可能的實(shí)現(xiàn)方式中任意之一的方法。
23、應(yīng)當(dāng)理解的是,本技術(shù)的第二方面至第七方面技術(shù)方案及對應(yīng)的可能的實(shí)施方式所取得的有益效果可以參見上述對第一方面及其對應(yīng)的可能的實(shí)施方式的技術(shù)效果,此處不再贅述。