一種數(shù)據(jù)恢復(fù)方法、裝置和系統(tǒng)的制作方法
【專利摘要】本發(fā)明實(shí)施例公開(kāi)了一種數(shù)據(jù)恢復(fù)方法,所述數(shù)據(jù)恢復(fù)方法包括:當(dāng)檢測(cè)到主寫(xiě)點(diǎn)故障時(shí),根據(jù)所述主寫(xiě)點(diǎn)對(duì)應(yīng)的偽主寫(xiě)點(diǎn)中保存的流水操作日志和偽配置信息,將所述主寫(xiě)點(diǎn)對(duì)應(yīng)的從讀點(diǎn)中的數(shù)據(jù)更新到最新;將數(shù)據(jù)已更新到最新的所述主寫(xiě)點(diǎn)對(duì)應(yīng)的從讀點(diǎn)提升為新的主寫(xiě)點(diǎn)。本發(fā)明實(shí)施例還公開(kāi)了一種數(shù)據(jù)恢復(fù)裝置和系統(tǒng)。采用本發(fā)明,可以確保將從讀點(diǎn)提升為主寫(xiě)點(diǎn)時(shí)從讀點(diǎn)的數(shù)據(jù)與故障前的主寫(xiě)點(diǎn)是一致的,有效的避免了數(shù)據(jù)丟失的發(fā)生。
【專利說(shuō)明】一種數(shù)據(jù)恢復(fù)方法、裝置和系統(tǒng)
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計(jì)算機(jī)【技術(shù)領(lǐng)域】,尤其涉及一種數(shù)據(jù)恢復(fù)方法、裝置和系統(tǒng)。
【背景技術(shù)】
[0002]UGC (User Generated Content,也有稱 User Created Content,用戶原創(chuàng)內(nèi)容)是一種新興的互聯(lián)網(wǎng)使用方式,即由原來(lái)的以下載為主變成下載和上傳并重。社區(qū)網(wǎng)絡(luò)、視頻分享和博客等都是UGC的主要應(yīng)用形式,隨著智能終端的多樣化和全球互聯(lián)網(wǎng)業(yè)務(wù)的不斷發(fā)展,UGC業(yè)務(wù)正在日漸崛起,引起了業(yè)界的廣泛關(guān)注。用戶產(chǎn)生的UGC類數(shù)據(jù),是現(xiàn)今社交網(wǎng)絡(luò)等互聯(lián)網(wǎng)應(yīng)用的重要內(nèi)容。如何保障用戶寫(xiě)操作的可靠性,是衡量系統(tǒng)可用性的關(guān)鍵指標(biāo)。由于機(jī)器硬件故障及網(wǎng)絡(luò)通訊質(zhì)量等各種因素,支撐用戶寫(xiě)操作的主寫(xiě)點(diǎn)系統(tǒng)發(fā)生故障,在現(xiàn)實(shí)中是不可避免的。在這種情況下,如何快速的恢復(fù)系統(tǒng)寫(xiě)服務(wù),同時(shí)將用戶數(shù)據(jù)完整地還原到故障前的最新?tīng)顟B(tài),是互聯(lián)網(wǎng)系統(tǒng)應(yīng)該具有的基礎(chǔ)能力。
[0003]對(duì)支持熱拷貝的內(nèi)存類存儲(chǔ)系統(tǒng),主寫(xiě)點(diǎn)故障的一種處理方案:是將原主寫(xiě)點(diǎn)的機(jī)器設(shè)置為不可用,從讀點(diǎn)提升為新主寫(xiě)點(diǎn)。該處理方案的缺陷在于:由于主寫(xiě)點(diǎn)和從讀點(diǎn)間的數(shù)據(jù)同步存在一定的時(shí)間延遲,因此可能會(huì)出現(xiàn)當(dāng)因主寫(xiě)點(diǎn)故障需要將從讀點(diǎn)提升為新的主寫(xiě)點(diǎn)時(shí),從讀點(diǎn)的數(shù)據(jù)還沒(méi)能同步到最新的情況,從而導(dǎo)致故障前最后更新的部分?jǐn)?shù)據(jù)丟失。
【發(fā)明內(nèi)容】
[0004]本發(fā)明實(shí)施例所要解決的技術(shù)問(wèn)題在于,提供一種數(shù)據(jù)恢復(fù)方法、裝置和系統(tǒng),可避免從讀點(diǎn)提升為主寫(xiě)點(diǎn)時(shí)數(shù)據(jù)丟失的情況發(fā)生。
[0005]為了解決上述技術(shù)問(wèn)題,本發(fā)明實(shí)施例提供了一種數(shù)據(jù)恢復(fù)方法,所述數(shù)據(jù)恢復(fù)方法包括:
[0006]當(dāng)檢測(cè)到主寫(xiě)點(diǎn)故障時(shí),根據(jù)所述主寫(xiě)點(diǎn)對(duì)應(yīng)的偽主寫(xiě)點(diǎn)中保存的流水操作日志和偽配置信息,將所述主寫(xiě)點(diǎn)對(duì)應(yīng)的從讀點(diǎn)中的數(shù)據(jù)更新到最新;
[0007]將數(shù)據(jù)已更新到最新的所述主寫(xiě)點(diǎn)對(duì)應(yīng)的從讀點(diǎn)提升為新的主寫(xiě)點(diǎn)。
[0008]相應(yīng)地,本發(fā)明實(shí)施例還提供了一種數(shù)據(jù)恢復(fù)裝置,所述數(shù)據(jù)恢復(fù)裝置包括:
[0009]從讀點(diǎn)更新模塊,用于當(dāng)檢測(cè)到主寫(xiě)點(diǎn)故障時(shí),根據(jù)所述主寫(xiě)點(diǎn)對(duì)應(yīng)的偽主寫(xiě)點(diǎn)中保存的流水操作日志和偽配置信息,將所述主寫(xiě)點(diǎn)對(duì)應(yīng)的從讀點(diǎn)中的數(shù)據(jù)更新到最新;
[0010]從讀點(diǎn)提升模塊,用于將數(shù)據(jù)已更新到最新的所述主寫(xiě)點(diǎn)對(duì)應(yīng)的從讀點(diǎn)提升為新的主與點(diǎn)。
[0011]相應(yīng)的,本發(fā)明實(shí)施例還提供了一種數(shù)據(jù)恢復(fù)系統(tǒng),所述數(shù)據(jù)恢復(fù)系統(tǒng)包括偽主寫(xiě)點(diǎn)、主寫(xiě)點(diǎn)、從讀點(diǎn)以及如前文所述的數(shù)據(jù)恢復(fù)裝置,其中:
[0012]每個(gè)所述偽主寫(xiě)點(diǎn)對(duì)應(yīng)至少一個(gè)所述主寫(xiě)點(diǎn),每個(gè)所述主寫(xiě)點(diǎn)對(duì)應(yīng)至少一個(gè)所述從讀點(diǎn);
[0013]所述數(shù)據(jù)恢復(fù)裝置用于當(dāng)檢測(cè)到主寫(xiě)點(diǎn)裝置故障時(shí),根據(jù)所述主寫(xiě)點(diǎn)對(duì)應(yīng)的偽主寫(xiě)點(diǎn)中保存的流水操作日志和偽配置信息,將所述主寫(xiě)點(diǎn)對(duì)應(yīng)的從讀點(diǎn)中的數(shù)據(jù)更新到最新,并將數(shù)據(jù)已更新到最新的所述主寫(xiě)點(diǎn)對(duì)應(yīng)的從讀點(diǎn)提升為新的主寫(xiě)點(diǎn)。
[0014]相應(yīng)的,本發(fā)明實(shí)施例還提供了一種偽主寫(xiě)點(diǎn),所述偽主寫(xiě)點(diǎn)包括:
[0015]流水操作日志同步模塊,用于同步對(duì)應(yīng)主寫(xiě)點(diǎn)的流水操作日志;
[0016]偽配置信息維護(hù)模塊,用于同步對(duì)應(yīng)主寫(xiě)點(diǎn)的配置信息;
[0017]從讀點(diǎn)數(shù)據(jù)更新模塊,用于當(dāng)所述對(duì)應(yīng)主寫(xiě)點(diǎn)故障時(shí),根據(jù)所述流水操作日志和偽配置信息,將對(duì)應(yīng)主寫(xiě)點(diǎn)的從讀點(diǎn)中的數(shù)據(jù)更新到最新。
[0018]本發(fā)明實(shí)施例通過(guò)在偽主寫(xiě)點(diǎn)同步維護(hù)主寫(xiě)點(diǎn)的配置信息和流水操作日志,在主寫(xiě)點(diǎn)發(fā)生故障時(shí)對(duì)主寫(xiě)點(diǎn)對(duì)應(yīng)的從讀點(diǎn)進(jìn)行基于流水重做的數(shù)據(jù)更新,從而可以確保將從讀點(diǎn)提升為主寫(xiě)點(diǎn)時(shí)從讀點(diǎn)的數(shù)據(jù)與故障前的主寫(xiě)點(diǎn)是一致的,有效的避免了數(shù)據(jù)丟失的發(fā)生。
【專利附圖】
【附圖說(shuō)明】
[0019]為了更清楚地說(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ù)這些附圖獲得其他的附圖。
[0020]圖1是本發(fā)明實(shí)施例中的一種數(shù)據(jù)恢復(fù)方法的流程示意圖;
[0021]圖2是本發(fā)明另一實(shí)施例中的一種數(shù)據(jù)恢復(fù)方法的流程示意圖;
[0022]圖3是本發(fā)明實(shí)施例中的一種數(shù)據(jù)恢復(fù)裝置的結(jié)構(gòu)示意圖;
[0023]圖4是本發(fā)明實(shí)施例中的偽主寫(xiě)點(diǎn)、主寫(xiě)點(diǎn)以及從讀點(diǎn)之間的關(guān)系示意圖;
[0024]圖5是本發(fā)明實(shí)施例中一種偽主寫(xiě)點(diǎn)的結(jié)構(gòu)示意圖。
【具體實(shí)施方式】
[0025]下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒(méi)有作出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
[0026]本發(fā)明實(shí)施例中所提及的主寫(xiě)點(diǎn)是在支持熱拷貝的數(shù)據(jù)存儲(chǔ)系統(tǒng)中,直接支持用戶讀寫(xiě)操作的拷貝,其數(shù)據(jù)更新由用戶請(qǐng)求觸發(fā);從讀點(diǎn)是對(duì)應(yīng)在某一主寫(xiě)點(diǎn)下的只支持用戶讀操作的拷貝,其數(shù)據(jù)更新由其對(duì)應(yīng)的主寫(xiě)點(diǎn)同步所觸發(fā);而偽主寫(xiě)點(diǎn)可以對(duì)應(yīng)于一個(gè)或多個(gè)主寫(xiě)點(diǎn),其在系統(tǒng)正常工作時(shí)可以僅負(fù)責(zé)同步維護(hù)對(duì)應(yīng)主寫(xiě)點(diǎn)的配置信息以及可以同步存儲(chǔ)主寫(xiě)點(diǎn)的流水操作日志。
[0027]圖1是本發(fā)明實(shí)施例中的一種數(shù)據(jù)恢復(fù)方法的流程示意圖。如圖所示本實(shí)施例中的數(shù)據(jù)恢復(fù)方法包括:
[0028]S101,檢測(cè)到主寫(xiě)點(diǎn)故障。所述主寫(xiě)點(diǎn)故障可以為主寫(xiě)點(diǎn)所在的服務(wù)器或設(shè)備中的硬件或系統(tǒng)發(fā)生故障導(dǎo)致主寫(xiě)點(diǎn)不能繼續(xù)提供寫(xiě)服務(wù)。
[0029]S102,根據(jù)所述主寫(xiě)點(diǎn)對(duì)應(yīng)的偽主寫(xiě)點(diǎn)中保存的流水操作日志和偽配置信息,將所述主寫(xiě)點(diǎn)對(duì)應(yīng)的從讀點(diǎn)中的數(shù)據(jù)更新到最新。具體實(shí)現(xiàn)中,所述偽主寫(xiě)點(diǎn)中保存的流水操作日志可以包括流水序列號(hào)和對(duì)應(yīng)的流水操作,所述流水序列號(hào)可以為記錄數(shù)據(jù)變更順序的自增序號(hào),每當(dāng)主寫(xiě)點(diǎn)中的數(shù)據(jù)發(fā)生一次變化即用戶每進(jìn)行一次數(shù)據(jù)流水操作,所述流水序列號(hào)自增1,因此每一流水操作與一個(gè)流水序列號(hào)一一對(duì)應(yīng)。所述偽配置信息可以為根據(jù)主寫(xiě)點(diǎn)的配置信息生成并同步的,維護(hù)了包括所述主寫(xiě)點(diǎn)對(duì)應(yīng)的從寫(xiě)點(diǎn)的路由信息在內(nèi)的數(shù)據(jù)配置。在檢測(cè)到主寫(xiě)點(diǎn)故障時(shí),可以根據(jù)所述偽配置信息查找所述主寫(xiě)點(diǎn)對(duì)應(yīng)的從讀點(diǎn),進(jìn)而獲取所述從讀點(diǎn)當(dāng)前的流水序列號(hào),根據(jù)所述偽主寫(xiě)點(diǎn)的流水操作日志中的流水序列號(hào)大于所述從讀點(diǎn)當(dāng)前的流水序列號(hào)的流水操作,將所述從讀點(diǎn)的數(shù)據(jù)更新到最新,例如獲取到從讀點(diǎn)當(dāng)前的流水序列號(hào)為100,而偽主寫(xiě)點(diǎn)中保存的流水操作日志中最新的流水序列號(hào)已經(jīng)到106,那么可以根據(jù)偽主寫(xiě)點(diǎn)中保存的流水操作日志中流水序列號(hào)為IOf 106的流水操作在查找到的從寫(xiě)點(diǎn)中進(jìn)行流水重做,從而可以將從寫(xiě)點(diǎn)中的數(shù)據(jù)更新至與故障前的主寫(xiě)點(diǎn)一致。
[0030]S103,將數(shù)據(jù)已更新到最新的所述主寫(xiě)點(diǎn)對(duì)應(yīng)的從讀點(diǎn)提升為新的主寫(xiě)點(diǎn)。具體的,將數(shù)據(jù)已更新到最新的所述主寫(xiě)點(diǎn)對(duì)應(yīng)的從讀點(diǎn)提升為新的主寫(xiě)點(diǎn),繼續(xù)向外提供寫(xiě)服務(wù),所述將從讀點(diǎn)提升為新的主寫(xiě)點(diǎn)可以包括但不限于:數(shù)據(jù)恢復(fù)裝置通知提供數(shù)據(jù)存儲(chǔ)服務(wù)的服務(wù)器主寫(xiě)點(diǎn)和從寫(xiě)點(diǎn)發(fā)生改變的配置消息,以使所述提供數(shù)據(jù)存儲(chǔ)服務(wù)的服務(wù)器在向外提供寫(xiě)服務(wù)時(shí),將用戶提交的數(shù)據(jù)寫(xiě)入新的主寫(xiě)點(diǎn),數(shù)據(jù)恢復(fù)裝置還可以在從寫(xiě)點(diǎn)中的數(shù)據(jù)更新到最新后,向從寫(xiě)點(diǎn)發(fā)送其已被提成為主寫(xiě)點(diǎn)的配置消息,以使該新的主寫(xiě)點(diǎn)與所述提供數(shù)據(jù)存儲(chǔ)服務(wù)的服務(wù)器之間建立新的業(yè)務(wù)配置,從所述提供數(shù)據(jù)存儲(chǔ)服務(wù)的服務(wù)器獲取用戶提交的數(shù)據(jù)并進(jìn)行寫(xiě)入存儲(chǔ)。進(jìn)一步的,發(fā)生故障的原主寫(xiě)點(diǎn)可以作為新的主寫(xiě)點(diǎn)的從讀點(diǎn),而所述偽主寫(xiě)點(diǎn)可以繼續(xù)根據(jù)新的主寫(xiě)點(diǎn)進(jìn)行同步維護(hù)偽配置信息和同步流水操作日志。
[0031]圖2是本發(fā)明另一實(shí)施例中的一種數(shù)據(jù)恢復(fù)方法的流程示意圖。如圖所示本實(shí)施例中的數(shù)據(jù)恢復(fù)方法包括:
[0032]S201,將所述主寫(xiě)點(diǎn)中的流水操作日志和配置信息同步保存在所述主寫(xiě)點(diǎn)對(duì)應(yīng)的偽主寫(xiě)點(diǎn)中,得到所述偽主寫(xiě)點(diǎn)保存的流水操作日志和所述偽配置信息。具體實(shí)現(xiàn)中,所述偽主寫(xiě)點(diǎn)中保存的流水操作日志可以包括流水序列號(hào)和對(duì)應(yīng)的流水操作,所述流水序列號(hào)可以為記錄數(shù)據(jù)變更順序的自增序號(hào),每當(dāng)主寫(xiě)點(diǎn)中的數(shù)據(jù)發(fā)生一次變化即用戶每進(jìn)行一次數(shù)據(jù)流水操作,所述流水序列號(hào)自增1,因此每一流水操作與一個(gè)流水序列號(hào)一一對(duì)應(yīng)。所述配置信息以及偽配置信息維護(hù)了包括所述主寫(xiě)點(diǎn)對(duì)應(yīng)的從寫(xiě)點(diǎn)的路由信息在內(nèi)的數(shù)據(jù)配置。具體的,在數(shù)據(jù)存儲(chǔ)系統(tǒng)正常工作狀態(tài)下,所述偽主寫(xiě)點(diǎn)中的流水操作日志和所述偽配置信息可以為不可讀狀態(tài)。
[0033]S202,檢測(cè)主寫(xiě)點(diǎn)是否故障。所述主寫(xiě)點(diǎn)故障可以為主寫(xiě)點(diǎn)所在的服務(wù)器或設(shè)備中的硬件或系統(tǒng)發(fā)生故障導(dǎo)致主寫(xiě)點(diǎn)不能繼續(xù)提供寫(xiě)服務(wù)。若檢測(cè)到主寫(xiě)點(diǎn)故障,則執(zhí)行S203,。
[0034]S203,啟動(dòng)所述主寫(xiě)點(diǎn)對(duì)應(yīng)的偽主寫(xiě)點(diǎn)。具體實(shí)現(xiàn)中,可以為將所述主寫(xiě)點(diǎn)對(duì)應(yīng)的偽主寫(xiě)點(diǎn)中對(duì)應(yīng)所述主寫(xiě)點(diǎn)的偽配置信息和對(duì)應(yīng)改主寫(xiě)點(diǎn)同步保存的流水操作日志設(shè)置為可讀狀態(tài)。
[0035]S204,根據(jù)所述偽配置信息查找所述主寫(xiě)點(diǎn)對(duì)應(yīng)的從讀點(diǎn)。
[0036]S205,獲取所述從讀點(diǎn)當(dāng)前的流水序列號(hào)。[0037]S206,根據(jù)所述偽主寫(xiě)點(diǎn)的流水操作日志中的流水序列號(hào)大于所述從讀點(diǎn)當(dāng)前的流水序列號(hào)的流水操作,將所述從讀點(diǎn)的數(shù)據(jù)更新到最新。具體可以例如:S205獲取到從讀點(diǎn)當(dāng)前的流水序列號(hào)為100,而偽主寫(xiě)點(diǎn)中保存的流水操作日志中最新的流水序列號(hào)已經(jīng)到106,那么可以根據(jù)偽主寫(xiě)點(diǎn)中保存的流水操作日志中流水序列號(hào)為IOf 106的流水操作在查找到的從寫(xiě)點(diǎn)中進(jìn)行流水重做,從而可以將從寫(xiě)點(diǎn)中的數(shù)據(jù)更新至與故障前的主寫(xiě)點(diǎn)一致。
[0038]S207,將數(shù)據(jù)已更新到最新的所述主寫(xiě)點(diǎn)對(duì)應(yīng)的從讀點(diǎn)提升為新的主寫(xiě)點(diǎn)。具體實(shí)現(xiàn)中,可以將數(shù)據(jù)已更新到最新的所述主寫(xiě)點(diǎn)對(duì)應(yīng)的從讀點(diǎn)提升為新的主寫(xiě)點(diǎn),繼續(xù)向外提供寫(xiě)服務(wù),發(fā)生故障的原主寫(xiě)點(diǎn)可以作為新的主寫(xiě)點(diǎn)的從讀點(diǎn),而所述偽主寫(xiě)點(diǎn)可以繼續(xù)根據(jù)新的主寫(xiě)點(diǎn)進(jìn)行同步維護(hù)偽配置信息和同步流水操作日志,進(jìn)一步可以將所述偽主寫(xiě)點(diǎn)對(duì)應(yīng)新的主寫(xiě)點(diǎn)的偽配置信息和流水操作日志設(shè)為不可讀狀態(tài)。
[0039]圖3是本發(fā)明實(shí)施例中的一種數(shù)據(jù)恢復(fù)裝置的結(jié)構(gòu)示意圖。如圖所示本發(fā)明實(shí)施例中的數(shù)據(jù)恢復(fù)裝置至少可以包括:
[0040]從讀點(diǎn)更新模塊110,用于當(dāng)檢測(cè)到主寫(xiě)點(diǎn)故障時(shí),根據(jù)所述主寫(xiě)點(diǎn)對(duì)應(yīng)的偽主寫(xiě)點(diǎn)中保存的流水操作日志和偽配置信息,將所述主寫(xiě)點(diǎn)對(duì)應(yīng)的從讀點(diǎn)中的數(shù)據(jù)更新到最新。具體的,所述偽主寫(xiě)點(diǎn)中保存的流水操作日志包括流水序列號(hào)和對(duì)應(yīng)的流水操作。所述流水序列號(hào)可以為記錄數(shù)據(jù)變更順序的自增序號(hào),每當(dāng)主寫(xiě)點(diǎn)中的數(shù)據(jù)發(fā)生一次變化即用戶每進(jìn)行一次數(shù)據(jù)流水操作,所述流水序列號(hào)自增1,因此每一流水操作與一個(gè)流水序列號(hào)一一對(duì)應(yīng)。所述配置信息以及偽配置信息維護(hù)了包括所述主寫(xiě)點(diǎn)對(duì)應(yīng)的從寫(xiě)點(diǎn)的路由信息在內(nèi)的數(shù)據(jù)配置。進(jìn)一步的,本實(shí)施例中的從讀點(diǎn)更新模塊具體可以包括:
[0041]從讀點(diǎn)查找單元111,用于根據(jù)所述偽配置信息查找所述主寫(xiě)點(diǎn)對(duì)應(yīng)的從讀點(diǎn);
[0042]序列號(hào)獲取單元112,用于獲取所述從讀點(diǎn)當(dāng)前的流水序列號(hào);
[0043]從讀點(diǎn)更新單元113,用于根據(jù)所述偽主寫(xiě)點(diǎn)的流水操作日志中的流水序列號(hào)大于所述從讀點(diǎn)當(dāng)前的流水序列號(hào)的流水操作,將所述從讀點(diǎn)的數(shù)據(jù)更新到最新。
[0044]從讀點(diǎn)提升模塊120,用于將數(shù)據(jù)已更新到最新的所述主寫(xiě)點(diǎn)對(duì)應(yīng)的從讀點(diǎn)提升為新的主寫(xiě)點(diǎn)。具體實(shí)現(xiàn)中,所述將從讀點(diǎn)提升為新的主寫(xiě)點(diǎn)可以包括但不限于:從讀點(diǎn)提升模塊120通知提供數(shù)據(jù)存儲(chǔ)服務(wù)的服務(wù)器主寫(xiě)點(diǎn)和從寫(xiě)點(diǎn)發(fā)生改變的配置消息,以使所述提供數(shù)據(jù)存儲(chǔ)服務(wù)的服務(wù)器在向外提供寫(xiě)服務(wù)時(shí),將用戶提交的數(shù)據(jù)寫(xiě)入新的主寫(xiě)點(diǎn),從讀點(diǎn)提升模塊120還可以在從寫(xiě)點(diǎn)中的數(shù)據(jù)更新到最新后,向從寫(xiě)點(diǎn)發(fā)送其已被提成為主寫(xiě)點(diǎn)的配置消息,以使該新的主寫(xiě)點(diǎn)與所述提供數(shù)據(jù)存儲(chǔ)服務(wù)的服務(wù)器之間建立新的業(yè)務(wù)配置,從所述提供數(shù)據(jù)存儲(chǔ)服務(wù)的服務(wù)器獲取用戶提交的數(shù)據(jù)并進(jìn)行寫(xiě)入存儲(chǔ)。進(jìn)一步的,發(fā)生故障的原主寫(xiě)點(diǎn)可以作為新的主寫(xiě)點(diǎn)的從讀點(diǎn),而所述偽主寫(xiě)點(diǎn)可以繼續(xù)根據(jù)新的主寫(xiě)點(diǎn)進(jìn)行同步維護(hù)偽配置信息和同步流水操作日志。
[0045]進(jìn)一步的,本發(fā)明實(shí)施例中的數(shù)據(jù)恢復(fù)裝置還可以包括:
[0046]偽主寫(xiě)點(diǎn)維護(hù)模塊130,用于將所述主寫(xiě)點(diǎn)中的流水操作日志和配置信息同步保存在所述主寫(xiě)點(diǎn)對(duì)應(yīng)的偽主寫(xiě)點(diǎn)中,得到所述偽主寫(xiě)點(diǎn)保存的流水操作日志和所述偽配置信息??蛇x的,在數(shù)據(jù)存儲(chǔ)系統(tǒng)正常工作狀態(tài)下,偽主寫(xiě)點(diǎn)維護(hù)模塊130維護(hù)的所述偽主寫(xiě)點(diǎn)中的流水操作日志和所述偽配置信息可以為不可讀狀態(tài)。這時(shí)數(shù)據(jù)恢復(fù)裝置可以還包括:[0047]偽主寫(xiě)點(diǎn)啟動(dòng)模塊140,用于當(dāng)檢測(cè)到主寫(xiě)點(diǎn)裝置故障時(shí),啟動(dòng)所述主寫(xiě)點(diǎn)對(duì)應(yīng)的偽主寫(xiě)點(diǎn)。將所述主寫(xiě)點(diǎn)對(duì)應(yīng)的偽主寫(xiě)點(diǎn)中對(duì)應(yīng)所述主寫(xiě)點(diǎn)的偽配置信息和對(duì)應(yīng)改主寫(xiě)點(diǎn)同步保存的流水操作日志設(shè)置為可讀狀態(tài)。待從讀點(diǎn)更新模塊110完成了對(duì)所述主寫(xiě)點(diǎn)對(duì)應(yīng)的從讀點(diǎn)的數(shù)據(jù)更新,還可以自動(dòng)將所述偽主寫(xiě)點(diǎn)中保存的對(duì)應(yīng)的偽配置信息和流水操作日志設(shè)為不可讀狀態(tài)。
[0048]本發(fā)明實(shí)施例還提供了一種數(shù)據(jù)恢復(fù)系統(tǒng),其特征在于,所述數(shù)據(jù)恢復(fù)系統(tǒng)包括偽主寫(xiě)點(diǎn)、主寫(xiě)點(diǎn)、從讀點(diǎn)以及如前文結(jié)合圖3介紹的數(shù)據(jù)恢復(fù)裝置,其中:
[0049]每個(gè)所述偽主寫(xiě)點(diǎn)對(duì)應(yīng)至少一個(gè)所述主寫(xiě)點(diǎn),每個(gè)所述主寫(xiě)點(diǎn)對(duì)應(yīng)至少一個(gè)所述從讀點(diǎn)。偽主寫(xiě)點(diǎn)、主寫(xiě)點(diǎn)以及從讀點(diǎn)之間的關(guān)系可以參考圖4中所示的例子。
[0050]所述數(shù)據(jù)恢復(fù)裝置用于當(dāng)檢測(cè)到主寫(xiě)點(diǎn)裝置故障時(shí),根據(jù)所述主寫(xiě)點(diǎn)對(duì)應(yīng)的偽主寫(xiě)點(diǎn)中保存的流水操作日志和偽配置信息,將所述主寫(xiě)點(diǎn)對(duì)應(yīng)的從讀點(diǎn)中的數(shù)據(jù)更新到最新,并將數(shù)據(jù)已更新到最新的所述主寫(xiě)點(diǎn)對(duì)應(yīng)的從讀點(diǎn)提升為新的主寫(xiě)點(diǎn)。例如圖4中的偽主寫(xiě)點(diǎn)、主寫(xiě)點(diǎn)以及從讀點(diǎn)之間的關(guān)系中,當(dāng)數(shù)據(jù)恢復(fù)裝置檢測(cè)到主寫(xiě)點(diǎn)11發(fā)生故障,可以根據(jù)主寫(xiě)點(diǎn)11對(duì)應(yīng)的偽主寫(xiě)點(diǎn)I中保存的對(duì)應(yīng)主寫(xiě)點(diǎn)11的偽配置信息找到主寫(xiě)點(diǎn)11對(duì)應(yīng)的從讀點(diǎn)111和從讀點(diǎn)112,進(jìn)而根據(jù)偽主寫(xiě)點(diǎn)I中保存的流水操作日志將從讀點(diǎn)111和從讀點(diǎn)112進(jìn)行數(shù)據(jù)更新,將數(shù)據(jù)更新至主寫(xiě)點(diǎn)11故障前的最新?tīng)顟B(tài),進(jìn)而再將從讀點(diǎn)111和從讀點(diǎn)112中的任一個(gè)提升為新的主寫(xiě)點(diǎn),繼續(xù)向外提供寫(xiě)服務(wù)。
[0051]如圖5所示,本發(fā)明實(shí)施例還提供了一種偽主寫(xiě)點(diǎn)。如圖所示本發(fā)明實(shí)施例中的偽主寫(xiě)點(diǎn)包括:
[0052]流水操作日志同步模塊510,用于同步對(duì)應(yīng)主寫(xiě)點(diǎn)的流水操作日志。具體實(shí)現(xiàn)中,所述偽主寫(xiě)點(diǎn)中保存的流水操作日志可以包括流水序列號(hào)和對(duì)應(yīng)的流水操作,所述流水序列號(hào)可以為記錄數(shù)據(jù)變更順序的自增序號(hào),每當(dāng)主寫(xiě)點(diǎn)中的數(shù)據(jù)發(fā)生一次變化即用戶每進(jìn)行一次數(shù)據(jù)流水操作,所述流水序列號(hào)自增1,因此每一流水操作與一個(gè)流水序列號(hào)一一對(duì)應(yīng)。
[0053]偽配置信息維護(hù)模塊520,用于同步對(duì)應(yīng)主寫(xiě)點(diǎn)的配置信息。具體實(shí)現(xiàn)中,所述配置信息可以包括所述主寫(xiě)點(diǎn)對(duì)應(yīng)的從寫(xiě)點(diǎn)的路由信息在內(nèi)的數(shù)據(jù)配置。
[0054]從讀點(diǎn)數(shù)據(jù)更新模塊530,用于當(dāng)所述對(duì)應(yīng)主寫(xiě)點(diǎn)故障時(shí),根據(jù)所述流水操作日志和偽配置信息,將對(duì)應(yīng)主寫(xiě)點(diǎn)的從讀點(diǎn)中的數(shù)據(jù)更新到最新。具體實(shí)現(xiàn)中,當(dāng)發(fā)現(xiàn)主寫(xiě)點(diǎn)故障時(shí),從讀點(diǎn)數(shù)據(jù)更新模塊530可以根據(jù)所述偽配置信息維護(hù)模塊520同步的配置信息查找所述主寫(xiě)點(diǎn)對(duì)應(yīng)的從讀點(diǎn),進(jìn)而獲取所述從讀點(diǎn)當(dāng)前的流水序列號(hào),根據(jù)流水操作日志同步模塊510同步的流水操作日志中的流水序列號(hào)大于所述從讀點(diǎn)當(dāng)前的流水序列號(hào)的流水操作,將所述從讀點(diǎn)的數(shù)據(jù)更新到最新,例如獲取到從讀點(diǎn)當(dāng)前的流水序列號(hào)為100,而流水操作日志同步模塊510同步的流水操作日志中最新的流水序列號(hào)已經(jīng)到106,那么可以根據(jù)偽主寫(xiě)點(diǎn)中保存的流水操作日志中流水序列號(hào)為IOf 106的流水操作在查找到的從寫(xiě)點(diǎn)中進(jìn)行流水重做,從而可以將從寫(xiě)點(diǎn)中的數(shù)據(jù)更新至與故障前的主寫(xiě)點(diǎn)一致。
[0055]本發(fā)明實(shí)施例通過(guò)在偽主寫(xiě)點(diǎn)同步維護(hù)主寫(xiě)點(diǎn)的配置信息和流水操作日志,在主寫(xiě)點(diǎn)發(fā)生故障時(shí)對(duì)主寫(xiě)點(diǎn)對(duì)應(yīng)的從讀點(diǎn)進(jìn)行基于流水重做的數(shù)據(jù)更新,從而可以確保將從讀點(diǎn)提升為主寫(xiě)點(diǎn)時(shí)從讀點(diǎn)的數(shù)據(jù)與故障前的主寫(xiě)點(diǎn)是一致的,有效的避免了數(shù)據(jù)丟失的發(fā)生。[0056]本領(lǐng)域普通技術(shù)人員可以理解實(shí)現(xiàn)上述實(shí)施例方法中的全部或部分流程,是可以通過(guò)計(jì)算機(jī)程序來(lái)指令相關(guān)的硬件來(lái)完成,所述的程序可存儲(chǔ)于一計(jì)算機(jī)可讀取存儲(chǔ)介質(zhì)中,該程序在執(zhí)行時(shí),可包括如上述各方法的實(shí)施例的流程。其中,所述的存儲(chǔ)介質(zhì)可為磁碟、光盤(pán)、只讀存儲(chǔ)記憶體(Read-Only Memory, ROM)或隨機(jī)存儲(chǔ)記憶體(Random AccessMemory, RAM)等。
[0057]以上所揭露的僅為本發(fā)明較佳實(shí)施例而已,當(dāng)然不能以此來(lái)限定本發(fā)明之權(quán)利范圍,因此依本發(fā)明權(quán)利要求所作的等同變化,仍屬本發(fā)明所涵蓋的范圍。
【權(quán)利要求】
1.一種數(shù)據(jù)恢復(fù)方法,其特征在于,所述數(shù)據(jù)恢復(fù)方法包括: 當(dāng)檢測(cè)到主寫(xiě)點(diǎn)故障時(shí),根據(jù)所述主寫(xiě)點(diǎn)對(duì)應(yīng)的偽主寫(xiě)點(diǎn)中保存的流水操作日志和偽配置信息,將所述主寫(xiě)點(diǎn)對(duì)應(yīng)的從讀點(diǎn)中的數(shù)據(jù)更新到最新; 將數(shù)據(jù)已更新到最新的所述主寫(xiě)點(diǎn)對(duì)應(yīng)的從讀點(diǎn)提升為新的主寫(xiě)點(diǎn)。
2.如權(quán)利要求1所述的數(shù)據(jù)恢復(fù)方法,其特征在于,在檢測(cè)到主寫(xiě)點(diǎn)裝置故障之前,所述方法還包括: 將所述主寫(xiě)點(diǎn)中的流水操作日志和配置信息同步保存在所述主寫(xiě)點(diǎn)對(duì)應(yīng)的偽主寫(xiě)點(diǎn)中,得到所述偽主寫(xiě)點(diǎn)保存的流水操作日志和所述偽配置信息。
3.如權(quán)利要求1所述的數(shù)據(jù)恢復(fù)方法,其特征在于,所述根據(jù)所述主寫(xiě)點(diǎn)對(duì)應(yīng)的偽主寫(xiě)點(diǎn)中保存的流水操作日志和偽配置信息,將所述主寫(xiě)點(diǎn)對(duì)應(yīng)的從讀點(diǎn)中的數(shù)據(jù)更新到最新之前還包括: 當(dāng)檢測(cè)到主寫(xiě)點(diǎn)裝置故障時(shí),啟動(dòng)所述主寫(xiě)點(diǎn)對(duì)應(yīng)的偽主寫(xiě)點(diǎn)。
4.如權(quán)利要求1所述的數(shù)據(jù)恢復(fù)方法,其特征在于,所述偽主寫(xiě)點(diǎn)中保存的流水操作日志包括流水序列號(hào)和對(duì)應(yīng)的流水操作,所述根據(jù)所述主寫(xiě)點(diǎn)對(duì)應(yīng)的偽主寫(xiě)點(diǎn)中保存的流水操作日志和偽配置信息,將所述主寫(xiě)點(diǎn)對(duì)應(yīng)的從讀點(diǎn)中的數(shù)據(jù)更新到最新包括: 根據(jù)所述偽配置信息查找所述主寫(xiě)點(diǎn)對(duì)應(yīng)的從讀點(diǎn); 獲取所述從讀點(diǎn)當(dāng)前的流水序列號(hào); 根據(jù)所述偽主寫(xiě)點(diǎn)的流水操作日志中的流水序列號(hào)大于所述從讀點(diǎn)當(dāng)前的流水序列號(hào)的流水操作,將所述從讀點(diǎn)的數(shù)據(jù)更新到最新。
5.一種數(shù)據(jù)恢復(fù)裝置,其特征在于,所述數(shù)據(jù)恢復(fù)裝置包括: 從讀點(diǎn)更新模塊,用于當(dāng)檢測(cè)到主寫(xiě)點(diǎn)故障時(shí),根據(jù)所述主寫(xiě)點(diǎn)對(duì)應(yīng)的偽主寫(xiě)點(diǎn)中保存的流水操作日志和偽配置信息,將所述主寫(xiě)點(diǎn)對(duì)應(yīng)的從讀點(diǎn)中的數(shù)據(jù)更新到最新; 從讀點(diǎn)提升模塊,用于將數(shù)據(jù)已更新到最新的所述主寫(xiě)點(diǎn)對(duì)應(yīng)的從讀點(diǎn)提升為新的主寫(xiě)點(diǎn)。
6.如權(quán)利要求5所述的數(shù)據(jù)恢復(fù)裝置,其特征在于,所述數(shù)據(jù)恢復(fù)裝置還包括: 偽主寫(xiě)點(diǎn)維護(hù)模塊,用于將所述主寫(xiě)點(diǎn)中的流水操作日志和配置信息同步保存在所述主寫(xiě)點(diǎn)對(duì)應(yīng)的偽主寫(xiě)點(diǎn)中,得到所述偽主寫(xiě)點(diǎn)保存的流水操作日志和所述偽配置信息。
7.如權(quán)利要求5所述的數(shù)據(jù)恢復(fù)裝置,其特征在于,所述數(shù)據(jù)恢復(fù)裝置還包括: 偽主寫(xiě)點(diǎn)啟動(dòng)模塊,用于當(dāng)檢測(cè)到主寫(xiě)點(diǎn)裝置故障時(shí),啟動(dòng)所述主寫(xiě)點(diǎn)對(duì)應(yīng)的偽主寫(xiě)點(diǎn)。
8.如權(quán)利要求5所述的數(shù)據(jù)恢復(fù)裝置,其特征在于,所述偽主寫(xiě)點(diǎn)中保存的流水操作日志包括流水序列號(hào)和對(duì)應(yīng)的流水操作,所述從讀點(diǎn)更新模塊包括: 從讀點(diǎn)查找單元,用于根據(jù)所述偽配置信息查找所述主寫(xiě)點(diǎn)對(duì)應(yīng)的從讀點(diǎn); 序列號(hào)獲取單元,用于獲取所述從讀點(diǎn)當(dāng)前的流水序列號(hào); 從讀點(diǎn)更新單元,用于根據(jù)所述偽主寫(xiě)點(diǎn)的流水操作日志中的流水序列號(hào)大于所述從讀點(diǎn)當(dāng)前的流水序列號(hào)的流水操作,將所述從讀點(diǎn)的數(shù)據(jù)更新到最新。
9.一種數(shù)據(jù)恢復(fù)系統(tǒng),其特征在于,所述數(shù)據(jù)恢復(fù)系統(tǒng)包括偽主寫(xiě)點(diǎn)、主寫(xiě)點(diǎn)、從讀點(diǎn)以及如權(quán)利要求51中任一項(xiàng)所述的數(shù)據(jù)恢復(fù)裝置,其中: 每個(gè)所述偽主寫(xiě)點(diǎn)對(duì)應(yīng)至少一個(gè)所述主寫(xiě)點(diǎn),每個(gè)所述主寫(xiě)點(diǎn)對(duì)應(yīng)至少一個(gè)所述從讀點(diǎn)。 所述數(shù)據(jù)恢復(fù)裝置用于當(dāng)檢測(cè)到主寫(xiě)點(diǎn)裝置故障時(shí),根據(jù)所述主寫(xiě)點(diǎn)對(duì)應(yīng)的偽主寫(xiě)點(diǎn)中保存的流水操作日志和偽配置信息,將所述主寫(xiě)點(diǎn)對(duì)應(yīng)的從讀點(diǎn)中的數(shù)據(jù)更新到最新,并將數(shù)據(jù)已更新到最新的所述主寫(xiě)點(diǎn)對(duì)應(yīng)的從讀點(diǎn)提升為新的主寫(xiě)點(diǎn)。
10.一種偽主寫(xiě)點(diǎn),其特征在于,所述偽主寫(xiě)點(diǎn)包括: 流水操作日志同步模塊,用于同步對(duì)應(yīng)主寫(xiě)點(diǎn)的流水操作日志; 偽配置信息維護(hù)模塊,用于同步對(duì)應(yīng)主寫(xiě)點(diǎn)的配置信息; 從讀點(diǎn)數(shù)據(jù)更新模塊,用于當(dāng)所述對(duì)應(yīng)主寫(xiě)點(diǎn)故障時(shí),根據(jù)所述流水操作日志和偽配置信息,將對(duì)應(yīng)主寫(xiě)點(diǎn)的從讀點(diǎn)中的數(shù)據(jù)更新到最新。
【文檔編號(hào)】G06F11/34GK103838642SQ201210486975
【公開(kāi)日】2014年6月4日 申請(qǐng)日期:2012年11月26日 優(yōu)先權(quán)日:2012年11月26日
【發(fā)明者】李鐘偉, 田明 申請(qǐng)人:騰訊科技(深圳)有限公司