欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

數(shù)據(jù)遷移系統(tǒng)和方法

文檔序號:6380234閱讀:338來源:國知局
專利名稱:數(shù)據(jù)遷移系統(tǒng)和方法
技術(shù)領(lǐng)域
本發(fā)明涉及數(shù)據(jù)存儲技術(shù)領(lǐng)域,具體涉及一種數(shù)據(jù)遷移系統(tǒng)和方法。
背景技術(shù)
MongoDB (Data Base,數(shù)據(jù)庫)是一個(gè)介于關(guān)系數(shù)據(jù)庫和非關(guān)系數(shù)據(jù)庫之間的產(chǎn)品,是非關(guān)系數(shù)據(jù)庫當(dāng)中功能最豐富,最像關(guān)系數(shù)據(jù)庫的。他支持的數(shù)據(jù)結(jié)構(gòu)非常松散,因此可以存儲比較復(fù)雜的數(shù)據(jù)類型。由于MongoDB本身性能較好,因此在業(yè)務(wù)發(fā)展的早期,開發(fā)人員會將多個(gè)小的業(yè)務(wù)部署在一個(gè)少量服務(wù)器構(gòu)成的小的Mongodb集群上。當(dāng)業(yè)務(wù)逐漸發(fā)展,訪問量越來越大,比如原有的某個(gè)或某幾個(gè)業(yè)務(wù)的訪問量增長迅速,形成大規(guī)模的業(yè)務(wù),進(jìn)而導(dǎo)致少量服務(wù)器構(gòu)成的小集群已經(jīng)無法滿足業(yè)務(wù)需求了,此時(shí)就需要考慮如何增加系統(tǒng)容量,來解決性能問題。目前的第一種解決方案是,基于Mongodb本身支持的動(dòng)態(tài)擴(kuò)展,可以簡單的通過增加數(shù)據(jù)服務(wù)器來提高性能,因此可以通過直接向目前由少量數(shù)據(jù)服務(wù)器構(gòu)成的Mongodb集群中添加Mongod服務(wù)器,來解決性能問題。通過增加新的Mongod服務(wù)器,變?yōu)楦嗯_數(shù)據(jù)服務(wù)器的集群,mongodb的性能會基本線性提升。但是,這種解決方案也會帶來副作用。因?yàn)楝F(xiàn)有的數(shù)據(jù)服務(wù)器集群是為多個(gè)業(yè)務(wù)服務(wù)的,而且多個(gè)業(yè)務(wù)中可能既有小規(guī)模的業(yè)務(wù),也有快速增長起來的大規(guī)模的業(yè)務(wù),進(jìn)而在對Mongod服務(wù)器的訪問過程中,大規(guī)模的業(yè)務(wù)可能會長期占據(jù)對Mongod服務(wù)器的訪問資源,而小規(guī)模的業(yè)務(wù)勢必爭搶不過大規(guī)模的業(yè)務(wù),最終導(dǎo)致這些小規(guī)模的業(yè)務(wù)受到快速增長的大規(guī)模的業(yè)務(wù)的影響。為了避免上述第一種解決方案的副作用,逐漸出現(xiàn)了第二種解決方案。即考慮將業(yè)務(wù)規(guī)模擴(kuò)大了的業(yè)務(wù),從原有的mongodb集群遷移到一個(gè)全新的mongodb集群上。對于較大規(guī)模的業(yè)務(wù),使用單獨(dú)的新集群,而不再與其他業(yè)務(wù)共用Mongod服務(wù)器。這樣,原有的多個(gè)規(guī)模較小的業(yè)務(wù)還是在原有的數(shù)據(jù)服務(wù)器集群,而快速發(fā)展成較大規(guī)模的業(yè)務(wù)單獨(dú)使用全新的數(shù)據(jù)服務(wù)器集群,于是,較大規(guī)模的業(yè)務(wù)就不會再跟較小規(guī)模的業(yè)務(wù)搶占服務(wù)器的訪問資源了。在采取上述方案的遷移過程中,首先由該業(yè)務(wù)停掉所有對mongod服務(wù)器的寫入操作,然后將現(xiàn)有的mongodb數(shù)據(jù)庫信息備份出來,導(dǎo)入到新的數(shù)據(jù)服務(wù)器集群中。最后,在將業(yè)務(wù)的數(shù)據(jù)完全切換到新的數(shù)據(jù)服務(wù)器集群后,再開啟業(yè)務(wù)對mongod服務(wù)器的寫入操作。由于切換過程中需要停掉業(yè)務(wù)的所有寫入服務(wù),而且當(dāng)數(shù)據(jù)量較大的時(shí)候,停機(jī)備份遷移的過程可能會需要幾個(gè)小時(shí),因此在停機(jī)備份遷移的這段時(shí)間內(nèi)非常影響相關(guān)業(yè)務(wù)的正常運(yùn)行,影響為用戶提供正常的服務(wù)。同理,在其他非mongodb的數(shù)據(jù)服務(wù)器集群的應(yīng)用環(huán)境下,也同樣存在類似問題。

發(fā)明內(nèi)容
鑒于上述問題,提出了本發(fā)明以便提供一種克服上述問題或者至少部分地解決上述問題的數(shù)據(jù)遷移系統(tǒng)和方法。
依據(jù)本發(fā)明的一個(gè)方面,提供了一種數(shù)據(jù)遷移系統(tǒng),用于在數(shù)據(jù)服務(wù)器集群之間進(jìn)行數(shù)據(jù)遷移,該系統(tǒng)至少包括第一數(shù)據(jù)服務(wù)器集群和第二數(shù)據(jù)服務(wù)器集群以及遷移設(shè)備,數(shù)據(jù)為與要遷移的業(yè)務(wù)相關(guān)的目標(biāo)數(shù)據(jù),所述遷移設(shè)備包括初始數(shù)據(jù)導(dǎo)入模塊,被配置為將第一數(shù)據(jù)服務(wù)器集群中存儲的在第一時(shí)間點(diǎn)及該第一時(shí)間點(diǎn)之前寫入的目標(biāo)數(shù)據(jù)導(dǎo)入第二數(shù)據(jù)服務(wù)器集群;同步模塊,被配置為獲得與在第一時(shí)間點(diǎn)之后寫入第一數(shù)據(jù)服務(wù)器集群的目標(biāo)數(shù)據(jù)相關(guān)聯(lián)的操作日志,操作日志至少包括寫入第一數(shù)據(jù)服務(wù)器集群中的目標(biāo)數(shù)據(jù)的內(nèi)容;更新模塊,被配置為根據(jù)同步模塊獲得的操作日志更新第二數(shù)據(jù)服務(wù)器集群中的目標(biāo)數(shù)據(jù)??蛇x的,初始數(shù)據(jù)導(dǎo)入模塊包括第一初始數(shù)據(jù)導(dǎo)入子模塊,被配置為將第一數(shù)據(jù)服務(wù)器集群中存儲的第一時(shí)間點(diǎn)及該第一時(shí)間點(diǎn)之前寫入的目標(biāo)數(shù)據(jù)導(dǎo)入一存儲介質(zhì);第二初始數(shù)據(jù)導(dǎo)入子模塊,被配置為將導(dǎo)入至存儲介質(zhì)中的目標(biāo)數(shù)據(jù)導(dǎo)入第二數(shù)據(jù)服務(wù)器集群??蛇x的,其中第一初始數(shù)據(jù)導(dǎo)入子模塊被配置為通過mongodump將第一數(shù)據(jù)服務(wù)器集群中存儲的第一時(shí)間點(diǎn)及該第一時(shí)間點(diǎn)之前寫入的目標(biāo)數(shù)據(jù)備份至一存儲介質(zhì);以及第二初始數(shù)據(jù)導(dǎo)入子模塊被配置為通過mongorestore將備份至存儲介質(zhì)中的目標(biāo)數(shù)據(jù)導(dǎo)入第二數(shù)據(jù)服務(wù)器集群??蛇x的,第一數(shù)據(jù)服務(wù)器集群中包括主數(shù)據(jù)服務(wù)器和若干從數(shù)據(jù)服務(wù)器,遷移設(shè)備還包括停用處理模塊,被配置為在第一時(shí)間點(diǎn)之后停止第一數(shù)據(jù)服務(wù)器集群中的第一從數(shù)據(jù)服務(wù)器的寫入操作;以及初始數(shù)據(jù)導(dǎo)入模塊,被配置為將第一數(shù)據(jù)服務(wù)器集群的第一從數(shù)據(jù)服務(wù)器中存儲的第一時(shí)間點(diǎn)及該第一時(shí)間點(diǎn)之前寫入的目標(biāo)數(shù)據(jù)導(dǎo)入第二數(shù)據(jù)服務(wù)器集群。 可選的,還包括同步檢測模塊,被配置為檢測第一數(shù)據(jù)服務(wù)器集群和第二數(shù)據(jù)服務(wù)器集群的目標(biāo)數(shù)據(jù)是否已同步;地址更新模塊,被配置為在同步檢測模塊檢測到第一數(shù)據(jù)服務(wù)器集群和第二數(shù)據(jù)服務(wù)器集群的目標(biāo)數(shù)據(jù)已同步之后,將連接數(shù)據(jù)服務(wù)器的入口地址由第一數(shù)據(jù)服務(wù)器集群的入口地址變更為第二數(shù)據(jù)服務(wù)器集群的入口地址??蛇x的,操作日志還包括如下信息中的一種或多種寫入數(shù)據(jù)的時(shí)間戳;當(dāng)寫入的數(shù)據(jù)是對原有數(shù)據(jù)的更新時(shí),數(shù)據(jù)更新前的舊值??蛇x的,第一數(shù)據(jù)服務(wù)器集群為第一 MongoDB集群,第二數(shù)據(jù)服務(wù)器集群為第二MongoDB集群,操作日志為MongoDB中的oplog。根據(jù)本發(fā)明的另一個(gè)實(shí)施例,提供了 一種數(shù)據(jù)遷移方法,用于在數(shù)據(jù)服務(wù)器集群之間進(jìn)行數(shù)據(jù)遷移,數(shù)據(jù)為與要遷移的業(yè)務(wù)相關(guān)的目標(biāo)數(shù)據(jù),包括將第一數(shù)據(jù)服務(wù)器集群中存儲的在第一時(shí)間點(diǎn)及該第一時(shí)間點(diǎn)之前寫入的目標(biāo)數(shù)據(jù)導(dǎo)入第二數(shù)據(jù)服務(wù)器集群;獲得與在第一時(shí)間點(diǎn)之后寫入第一數(shù)據(jù)服務(wù)器集群的目標(biāo)數(shù)據(jù)相關(guān)聯(lián)的操作日志,操作日志至少包括寫入第一數(shù)據(jù)服務(wù)器集群中的目標(biāo)數(shù)據(jù)的內(nèi)容;根據(jù)獲得的操作日志更新第二數(shù)據(jù)服務(wù)器集群中的目標(biāo)數(shù)據(jù);檢測所述第一數(shù)據(jù)服務(wù)器集群和所述第二數(shù)據(jù)服務(wù)器集群的目標(biāo)數(shù)據(jù)是否已同步;以及,在所述第一數(shù)據(jù)服務(wù)器集群和所述第二數(shù)據(jù)服務(wù)器集群的目標(biāo)數(shù)據(jù)已同步之后,將連接數(shù)據(jù)服務(wù)器的入口地址由所述第一數(shù)據(jù)服務(wù)器集群的入口地址變更為所述第二數(shù)據(jù)服務(wù)器集群的入口地址。根據(jù)本發(fā)明的數(shù)據(jù)遷移系統(tǒng)和方法,一方面通過備份的方式將某個(gè)時(shí)間點(diǎn)之前的目標(biāo)數(shù)據(jù)直接備份至新的數(shù)據(jù)服務(wù)器集群,另一方面利用操作日志將第一時(shí)間點(diǎn)之后寫入舊數(shù)據(jù)服務(wù)器集群的目標(biāo)數(shù)據(jù)同步寫入到第二數(shù)據(jù)服務(wù)器集群,使得使新舊數(shù)據(jù)服務(wù)器集群基本實(shí)現(xiàn)了目標(biāo)數(shù)據(jù)的同步,進(jìn)而后續(xù)被遷移業(yè)務(wù)可以直接連接新數(shù)據(jù)服務(wù)器集群進(jìn)行數(shù)據(jù)的寫入和讀取即可,在此過程中不需要停止要遷移的業(yè)務(wù),由此解決了現(xiàn)有必須停機(jī)備份才能實(shí)現(xiàn)業(yè)務(wù)數(shù)據(jù)遷移的問題,取得了在不影響被遷移業(yè)務(wù)對外正常服務(wù)的情況下能夠完成業(yè)務(wù)數(shù)據(jù)遷移的有益效果。上述說明僅是本發(fā)明技術(shù)方案的概述,為了能夠更清楚了解本發(fā)明的技術(shù)手段,而可依照說明書的內(nèi)容予以實(shí)施,并且為了讓本發(fā)明的上述和其它目的、特征和優(yōu)點(diǎn)能夠更明顯易懂,以下特舉本發(fā)明的具體實(shí)施方式
。



通過閱讀下文優(yōu)選實(shí)施方式的詳細(xì)描述,各種其他的優(yōu)點(diǎn)和益處對于本領(lǐng)域普通技術(shù)人員將變得清楚明了。附圖僅用于示出優(yōu)選實(shí)施方式的目的,而并不認(rèn)為是對本發(fā)明的限制。而且在整個(gè)附圖中,用相同的參考符號表示相同的部件。在附圖中圖1示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的用于數(shù)據(jù)服務(wù)器集群之間進(jìn)行數(shù)據(jù)遷移的第一系統(tǒng)不意圖;圖2示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的用于數(shù)據(jù)服務(wù)器集群之間進(jìn)行數(shù)據(jù)遷移的弟~■系統(tǒng)不意圖;以及圖3示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的數(shù)據(jù)遷移方法的流程圖。
具體實(shí)施例方式下面將參照附圖更詳細(xì)地描述本公開的示例性實(shí)施例。雖然附圖中顯示了本公開的示例性實(shí)施例,然而應(yīng)當(dāng)理解,可以以各種形式實(shí)現(xiàn)本公開而不應(yīng)被這里闡述的實(shí)施例所限制。相反,提供這些實(shí)施例是為了能夠更透徹地理解本公開,并且能夠?qū)⒈竟_的范圍完整的傳達(dá)給本領(lǐng)域的技術(shù)人員。請參閱圖1,其為根據(jù)本發(fā)明一個(gè)實(shí)施例的用于數(shù)據(jù)服務(wù)器集群之間進(jìn)行數(shù)據(jù)遷移的第一系統(tǒng)示意圖。該系統(tǒng)包括用于數(shù)據(jù)服務(wù)器集群之間進(jìn)行數(shù)據(jù)遷移的遷移設(shè)備100、第一數(shù)據(jù)服務(wù)器集群200和第二數(shù)據(jù)服務(wù)器集群300。遷移設(shè)備100包括初始數(shù)據(jù)導(dǎo)入模塊102、同步模塊104和更新模塊106。第一數(shù)據(jù)服務(wù)器集群200包括多個(gè)數(shù)據(jù)服務(wù)器,在圖中只示意性的給出了其中的第一數(shù)據(jù)服務(wù)器202和第二數(shù)據(jù)服務(wù)器204,實(shí)際應(yīng)用中還可以根據(jù)需要包含更多的數(shù)據(jù)服務(wù)器,本發(fā)明對此并沒有限制。類似的,第二數(shù)據(jù)服務(wù)器集群300也包括多個(gè)數(shù)據(jù)服務(wù)器,在圖中示意性給出了第三數(shù)據(jù)服務(wù)器302、第四數(shù)據(jù)服務(wù)器304以及第五數(shù)據(jù)服務(wù)器306。通常而言,每個(gè)數(shù)據(jù)服務(wù)器集群中的各數(shù)據(jù)服務(wù)器之間互為數(shù)據(jù)備份,一般多個(gè)數(shù)據(jù)服務(wù)器中會有一個(gè)是主數(shù)據(jù)服務(wù)器,其余為從數(shù)據(jù)服務(wù)器,應(yīng)用服務(wù)器400多數(shù)情況下是直接向主數(shù)據(jù)服務(wù)器中寫入數(shù)據(jù),其余從數(shù)據(jù)服務(wù)器一般不直接接受應(yīng)用服務(wù)器400的數(shù)據(jù)寫入,而是從主數(shù)據(jù)服務(wù)器備份數(shù)據(jù)。下面結(jié)合各部件對數(shù)據(jù)的處理過程,以及各部件之間的關(guān)聯(lián)關(guān)系進(jìn)行詳細(xì)說明。為后續(xù)敘述方便,將需要從第一數(shù)據(jù)服務(wù)器集群200遷移至第二數(shù)據(jù)服務(wù)器集群300的業(yè)務(wù)數(shù)據(jù),稱為與要遷移的業(yè)務(wù)相關(guān)的目標(biāo)數(shù)據(jù)。
在一個(gè)實(shí)施例中,在目標(biāo)數(shù)據(jù)被遷移之前,應(yīng)用服務(wù)器400都是將要遷移業(yè)務(wù)的數(shù)據(jù),即目標(biāo)數(shù)據(jù),隨時(shí)寫入第一數(shù)據(jù)服務(wù)器集群200。比如第一數(shù)據(jù)服務(wù)器集群200中的第一數(shù)據(jù)服務(wù)器202和第二數(shù)據(jù)服務(wù)器204中都存儲有已經(jīng)寫入的目標(biāo)數(shù)據(jù)。進(jìn)而,在準(zhǔn)備進(jìn)行數(shù)據(jù)遷移時(shí),首先選擇一個(gè)已經(jīng)是過去時(shí)的時(shí)間點(diǎn),簡稱為第一時(shí)間點(diǎn),然后由初始數(shù)據(jù)導(dǎo)入模塊102將應(yīng)用服務(wù)器400在該第一時(shí)間點(diǎn)和第一時(shí)間之前寫入到第一數(shù)據(jù)服務(wù)器集群200中的目標(biāo)數(shù)據(jù),導(dǎo)入到第二數(shù)據(jù)服務(wù)器300中。后續(xù)為了更方便的說明,以第一數(shù)據(jù)服務(wù)器200中的第二數(shù)據(jù)服務(wù)器為主數(shù)據(jù)服務(wù)器、第一數(shù)據(jù)服務(wù)器為從數(shù)據(jù)服務(wù)器為例進(jìn)行說明。具體而言,首先,初始數(shù)據(jù)導(dǎo)出模塊102從第一數(shù)據(jù)服務(wù)器集群200中的多個(gè)數(shù)據(jù)服務(wù)器中選擇一個(gè)數(shù)據(jù)服務(wù)器進(jìn)行數(shù)據(jù)導(dǎo)出,通常,可以選擇一個(gè)從數(shù)據(jù)服務(wù)器進(jìn)行數(shù)據(jù)導(dǎo)出,以便在數(shù)據(jù)導(dǎo)出的過程中,不影響應(yīng)用服務(wù)器400后續(xù)向主數(shù)據(jù)服務(wù)器的寫入,例如,選擇作為從數(shù)據(jù)服務(wù)器的第一數(shù)據(jù)服務(wù)器202進(jìn)行數(shù)據(jù)導(dǎo)出。此外,由于應(yīng)用服務(wù)器400不直接向作為從數(shù)據(jù)服務(wù)器的第一數(shù)據(jù)服務(wù)器202寫入數(shù)據(jù),而是在應(yīng)用服務(wù)器400向作為主數(shù)據(jù)服務(wù)器的第二數(shù)據(jù)服務(wù)器204寫入數(shù)據(jù)之后,第一數(shù)據(jù)服務(wù)器202再從第二數(shù)據(jù)服務(wù)器204獲得數(shù)據(jù),而且由于從第一數(shù)據(jù)服務(wù)器202導(dǎo)出的第一時(shí)間點(diǎn)和第一時(shí)間點(diǎn)之前寫入第一數(shù)據(jù)服務(wù)器集群200的目標(biāo)數(shù)據(jù)的數(shù)據(jù)量可能比較大,因此,為了更好的避免在第一數(shù)據(jù)服務(wù)器202中同時(shí)進(jìn)行數(shù)據(jù)導(dǎo)出與數(shù)據(jù)寫入可能出現(xiàn)的各種意外情況,遷移設(shè)備100可以包括停用處理模塊,用于在第一時(shí)間點(diǎn)之后可以先停止第一數(shù)據(jù)服務(wù)器202的寫入操作,然后才開始進(jìn)行數(shù)據(jù)的導(dǎo)出操作。待初始數(shù)據(jù)導(dǎo)入模塊102從第一數(shù)據(jù)服務(wù)器202成功導(dǎo)出第一時(shí)間點(diǎn)和第一時(shí)間之前寫入第一數(shù)據(jù)服務(wù)器集群200的數(shù)據(jù)之后,可以再恢復(fù)第一數(shù)據(jù)服務(wù)器202的寫入操作。應(yīng)當(dāng)注意的是,上面有關(guān)在導(dǎo)出目標(biāo)數(shù)據(jù)之前先停止第一數(shù)據(jù)服務(wù)器202的寫入操作的示例僅僅是可選的,完全可以在導(dǎo)出目標(biāo)數(shù)據(jù)的同時(shí)不停止從第二數(shù)據(jù)服務(wù)器204同步數(shù)據(jù)到第一數(shù)據(jù)服務(wù)器202。然后,初始數(shù)據(jù)導(dǎo)入模塊102將第一數(shù)據(jù)服務(wù)器202中存儲的在第一時(shí)間點(diǎn)和第一時(shí)間點(diǎn)之前寫入的目標(biāo)數(shù)據(jù)導(dǎo)入到第二數(shù)據(jù)服務(wù)器集群300。例如,初始數(shù)據(jù)導(dǎo)入模塊102具體包括第一初始數(shù)據(jù)導(dǎo)入子模塊和第二初始數(shù)據(jù)導(dǎo)入子模塊,第一初始數(shù)據(jù)導(dǎo)入子模塊先從第一數(shù)據(jù)服務(wù)器202中取出在第一時(shí)間點(diǎn)和第一時(shí)間點(diǎn)之前寫入的目標(biāo)數(shù)據(jù),并將目標(biāo)數(shù)據(jù)導(dǎo)入一存儲介質(zhì),如磁盤中(例如,可以以文件形式)。隨后第二初始數(shù)據(jù)導(dǎo)入子模塊再將已導(dǎo)入該存儲介質(zhì)的目標(biāo)數(shù)據(jù)導(dǎo)入第二數(shù)據(jù)服務(wù)器集群300中的各數(shù)據(jù)服務(wù)器(302-306)。在初始數(shù)據(jù)導(dǎo)入模塊102將目標(biāo)數(shù)據(jù)導(dǎo)入第二數(shù)據(jù)服務(wù)器集群300的過程中,可以先將目標(biāo)數(shù)據(jù)導(dǎo)入第二數(shù)據(jù)服務(wù)器集群300中的主數(shù)據(jù)服務(wù)器,然后其他從數(shù)據(jù)服務(wù)器再從主數(shù)據(jù)服務(wù)器獲取目標(biāo)數(shù)據(jù),這樣第二數(shù)據(jù)服務(wù)器集群300中的主數(shù)據(jù)服務(wù)器和從數(shù)據(jù)服務(wù)器,即第三數(shù)據(jù)服務(wù)器302、第四數(shù)據(jù)服務(wù)器304和第五數(shù)據(jù)服務(wù)器306都成功獲得了第一時(shí)間點(diǎn)及第一時(shí)間點(diǎn)之前寫入第一數(shù)據(jù)服務(wù)器集群100的目標(biāo)數(shù)據(jù)。在初始數(shù)據(jù)導(dǎo)入模塊102將第一時(shí)間點(diǎn)和第一時(shí)間點(diǎn)之前寫入第一數(shù)據(jù)服務(wù)器集群200的目標(biāo)數(shù)據(jù)成功導(dǎo)入第二數(shù)據(jù)服務(wù)器集群300的過程中以及成功導(dǎo)入后,應(yīng)用服務(wù)器400并沒有停止向第一數(shù)據(jù)服務(wù)器集群200中的作為主數(shù)據(jù)服務(wù)器的第二數(shù)據(jù)服務(wù)器204寫入數(shù)據(jù),因此在第一時(shí)間點(diǎn)之后,仍然有目標(biāo)數(shù)據(jù)被寫入第一數(shù)據(jù)服務(wù)器集群200中。具體而言,第二數(shù)據(jù)服務(wù)器204先被應(yīng)用服務(wù)器400寫入第一時(shí)間點(diǎn)之后的目標(biāo)數(shù)據(jù),隨后第一數(shù)據(jù)服務(wù)器202可以再從第二數(shù)據(jù)服務(wù)器204同步獲得第一時(shí)間點(diǎn)之后寫入的目標(biāo)數(shù)據(jù)。而且,在應(yīng)用服務(wù)器400向第二數(shù)據(jù)服務(wù)器204每寫入一條目標(biāo)數(shù)據(jù)時(shí),基于數(shù)據(jù)服務(wù)器集群自身的特性,數(shù)據(jù)服務(wù)器集群都會同時(shí)產(chǎn)生一條與該目標(biāo)數(shù)據(jù)相關(guān)聯(lián)的操作日志(oplog, operation log),在該操作日志中記錄著每次寫入的具體數(shù)據(jù)的內(nèi)容。而且,一般操作日志中還記錄著每次寫入的數(shù)據(jù)的時(shí)間信息,即時(shí)間戳,如果寫入的數(shù)據(jù)是對以前數(shù)據(jù)的更新,則不但會記錄數(shù)據(jù)更新后的新值,而且還會記錄數(shù)據(jù)更新前的舊值。換而言之,根據(jù)操作日志,就可以知道應(yīng)用服務(wù)器400在哪個(gè)時(shí)間、具體寫入了哪些內(nèi)容的數(shù)據(jù)。進(jìn)而,遷移設(shè)備100中的同步模塊104可以獲得與在第一時(shí)間點(diǎn)之后寫入第一數(shù)據(jù)服務(wù)器集群200的目標(biāo)數(shù)據(jù)相關(guān)聯(lián)的操作日志。具體而言,由于應(yīng)用服務(wù)器400在向第一數(shù)據(jù)服務(wù)器集群200寫入目標(biāo)數(shù)據(jù)的過程中,多是逐條數(shù)據(jù)進(jìn)行寫入的,相應(yīng)的,也會逐條產(chǎn)生操作日志,而且操作日志中包括寫入數(shù)據(jù)的時(shí)間戳。因此可選的,同步模塊104可以實(shí)時(shí)去獲取與在第一時(shí)間點(diǎn)之后寫入第一數(shù)據(jù)服務(wù)器集群200的目標(biāo)數(shù)據(jù)相關(guān)聯(lián)的操作日志。當(dāng)然,也可以不必實(shí)時(shí)去獲取操作日志,而是每間隔一定時(shí)間去獲取一次操作日志,不過,為了盡快實(shí)現(xiàn)兩個(gè)數(shù)據(jù)服務(wù)器集群的盡快同步,同步模塊104獲取操作日志的時(shí)間間隔盡量短。然后,同步模塊104將獲得的與在第一時(shí)間點(diǎn)之后寫入第一數(shù)據(jù)服務(wù)器集群200的目標(biāo)數(shù)據(jù)相關(guān)聯(lián)的操作日志提供給更新模塊106。更新模塊106獲得與在第一時(shí)間點(diǎn)之后寫入第一數(shù)據(jù)服務(wù)器集群200的數(shù)據(jù)相關(guān)聯(lián)的操作日志之后,就可以根據(jù)所獲得的操作日志更新第二數(shù)據(jù)服務(wù)器集群300中的目標(biāo)數(shù)據(jù)。之前已經(jīng)提過,操作日志中至少包含應(yīng)用服務(wù)器400在第一時(shí)間點(diǎn)之后每次寫入第一數(shù)據(jù)服務(wù)器集群200的具體數(shù)據(jù)的內(nèi)容,因此更新模塊106可以根據(jù)每條操作日志更新第二數(shù)據(jù)服務(wù)器集群300中相應(yīng)的目標(biāo)數(shù)據(jù),使得第二數(shù)據(jù)服務(wù)器集群300也存儲了第一時(shí)間點(diǎn)之后寫入第一數(shù)據(jù)服務(wù)器集群200的目標(biāo)數(shù)據(jù)。由于單條操作日志涉及到的數(shù)據(jù)更新內(nèi)容很少,因此更新模塊106可以很及時(shí)的根據(jù)一條操作日志更新完畢第二數(shù)據(jù)服務(wù)器集群300中相關(guān)聯(lián)的目標(biāo)數(shù)據(jù),進(jìn)而,基本可以達(dá)到應(yīng)用服務(wù)器400在第一時(shí)間點(diǎn)之后每向第一數(shù)據(jù)服務(wù)器集群200寫入一條目標(biāo)數(shù)據(jù)或幾條目標(biāo)數(shù)據(jù),更新模塊106就可以相應(yīng)的將同樣的目標(biāo)數(shù)據(jù)寫入第二數(shù)據(jù)服務(wù)器集群300,所以,經(jīng)過很短暫的時(shí)間之后,第二數(shù)據(jù)服務(wù)器300就可以達(dá)到與第一數(shù)據(jù)服務(wù)器200中的目標(biāo)數(shù)據(jù)一致、同步的目的。至此,在第一數(shù)據(jù)服務(wù)器集群200中存儲的與要遷移業(yè)務(wù)相關(guān)的目標(biāo)數(shù)據(jù)已經(jīng)全部遷移到第二數(shù)據(jù)服務(wù)器集群300。在另一個(gè)實(shí)施例中,為了目標(biāo)數(shù)據(jù)遷移成功后,后續(xù)應(yīng)用服務(wù)器400可以直接向第二數(shù)據(jù)服務(wù)器集群300寫入與要遷移業(yè)務(wù)相關(guān)的數(shù)據(jù),在遷移設(shè)備100中還可以包括同步檢測模塊和地址更新模塊。具體而言,在更新模塊106根據(jù)同步模塊104獲得的與在第一時(shí)間點(diǎn)之后寫入第一數(shù)據(jù)服務(wù)器集群200的目標(biāo)數(shù)據(jù)相關(guān)聯(lián)的操作日志更新第二數(shù)據(jù)服務(wù)器集群300中的目標(biāo)數(shù)據(jù)之后,同步檢測模塊可以對第一數(shù)據(jù)服務(wù)器集群200和第二數(shù)據(jù)服務(wù)器集群300中的目標(biāo)數(shù)據(jù)進(jìn)行對比,從而檢測出兩個(gè)數(shù)據(jù)服務(wù)器集群中的目標(biāo)數(shù)據(jù)是否已經(jīng)同步成功。檢測是否同步成功,除了可以參考兩個(gè)數(shù)據(jù)服務(wù)器集群中的目標(biāo)數(shù)據(jù)的自身內(nèi)容,還可以參考與目標(biāo)數(shù)據(jù)相關(guān)聯(lián)的操作日志,因?yàn)椴僮魅罩局幸话阌袑懭肽繕?biāo)數(shù)據(jù)的時(shí)間戳和目標(biāo)數(shù)據(jù)更新前、后的值等輔助信息,因此,同步檢測模塊也可以參考這些輔助信息,更快速、準(zhǔn)確的檢測出兩個(gè)數(shù)據(jù)服務(wù)器集群是否已經(jīng)成功同步。在同步檢測模塊判定第一數(shù)據(jù)服務(wù)器集群200和第二數(shù)據(jù)服務(wù)器集群300已經(jīng)同步成功之后,可以通知地址更新模塊兩個(gè)數(shù)據(jù)服務(wù)器集群已經(jīng)同步成功,進(jìn)而地址更新模塊就可以將應(yīng)用服務(wù)器400連接數(shù)據(jù)服務(wù)器的入口地址由第一數(shù)據(jù)服務(wù)器集群200的入口地址變更為第二數(shù)據(jù)服務(wù)器集群300的入口地址。后續(xù)應(yīng)用服務(wù)器400如果需要再向數(shù)據(jù)服務(wù)器集群寫入與要遷移業(yè)務(wù)相關(guān)的數(shù)據(jù)或者讀取該業(yè)務(wù)相關(guān)的數(shù)據(jù),就會因?yàn)檫B接數(shù)據(jù)服務(wù)器的入口地址已變更為第二數(shù)據(jù)服務(wù)器集群的入口地址,直接向第二數(shù)據(jù)服務(wù)器集群300進(jìn)行數(shù)據(jù)的寫入和讀取。此時(shí),需要被遷移的業(yè)務(wù)已經(jīng)成功從第一數(shù)據(jù)服務(wù)器集群200遷移至第二數(shù)據(jù)服務(wù)器集群300。而后,第一數(shù)據(jù)服務(wù)器集群200中與被遷移業(yè)務(wù)相關(guān)的數(shù)據(jù)就可以刪除了。應(yīng)該注意的是,遷移設(shè)備100在具體實(shí)現(xiàn)過程中,可以獨(dú)立于第一數(shù)據(jù)服務(wù)器集群200和第二數(shù)據(jù)服務(wù)器集群300而單獨(dú)實(shí)現(xiàn),也可以置于某個(gè)數(shù)據(jù)服務(wù)器集群,比如第二數(shù)據(jù)服務(wù)器集群300的數(shù)據(jù)管理服務(wù)器中予以實(shí)現(xiàn)。該數(shù)據(jù)管理服務(wù)器可以是目前很多數(shù)據(jù)服務(wù)器集群中都具有的、擔(dān)當(dāng)該集群管理角色的服務(wù)器,比如MongoDB集群中的mangos。在一個(gè)實(shí)施例中,上面第一系統(tǒng)的第一數(shù)據(jù)服務(wù)器集群200是第一 MongoDB集群500,第二數(shù)據(jù)服務(wù)器集群300是第二 MongoDB集群600,其中的遷移設(shè)備100置于第二MongoDB集群的mangos中予以實(shí)現(xiàn)。具體請參閱圖2,其為根據(jù)本發(fā)明一個(gè)實(shí)施例的用于數(shù)據(jù)服務(wù)器集群之間進(jìn)行數(shù)據(jù)遷移的第二系統(tǒng)示意圖。該第二系統(tǒng)可以理解為是上面第一系統(tǒng)應(yīng)用于MongoDB這種類型的數(shù)據(jù)服務(wù)器集群的具體應(yīng)用實(shí)例,因此第二系統(tǒng)中的第一MongoDB集群500與第一系統(tǒng)中的第一數(shù)據(jù)服務(wù)器集群200雷同,類似的,第二系統(tǒng)中的第二 MongoDB集群600與第一系統(tǒng)中的第二數(shù)據(jù)服務(wù)器集群300雷同,第二系統(tǒng)中的初始數(shù)據(jù)導(dǎo)入模塊702與第一系統(tǒng)中的初始數(shù)據(jù)導(dǎo)入模塊102雷同,第二系統(tǒng)中的同步模塊704與第一系統(tǒng)中的同步模塊104雷同,以及第二系統(tǒng)中的更新模塊706與第一系統(tǒng)中的更新模塊106雷同,因此對第二系統(tǒng)中的各部件的具體實(shí)現(xiàn)基本不再贅述,可以參考第一系統(tǒng)中相關(guān)聯(lián)部件的具體實(shí)現(xiàn)方式。僅針對涉及到具體MongoDB集群特性的個(gè)別部件予以說明。比如,初始數(shù)據(jù)導(dǎo)入模塊702中的第一初始數(shù)據(jù)導(dǎo)入子模塊可以先通過調(diào)用mongo自帶的一種備份工具mongodump,將第一 mongod集群500中存儲的第一時(shí)間點(diǎn)及第一時(shí)間點(diǎn)之前寫入的目標(biāo)數(shù)據(jù)備份到磁盤上,生成一個(gè)數(shù)據(jù)文件。然后初始數(shù)據(jù)導(dǎo)入模塊702中的第二初始數(shù)據(jù)子模塊再使用mongo自帶的一種恢復(fù)工具mongorestore將該數(shù)據(jù)文件導(dǎo)入到第二 mongod集群600中。同步模塊704獲得的操作日志具體是MongoDB中的oplog,例如一條具體oplog實(shí)例內(nèi)容如下所示{" ts" : {" I" : 1339660240000, " i" :8}," h" :NumberLong(/7 -7936072258265513667" )," op" : " i"," ns" : " test. method"," o" : {" _id" :" testid"," v"其中,"ts"記錄的是該操作的時(shí)間戳;"op"記錄的是該操作的類型,比如類型“i”表明是插入操作;"h"記錄的是本條oplog的哈希值,"ns"記錄的是該操作的命名空間;“0”記錄的是文件內(nèi)容,即具體寫入的數(shù)據(jù)的內(nèi)容。從上述一條oplog實(shí)例可以看出,在MongoDB集群的oplog中不但包含寫入的目標(biāo)數(shù)據(jù)的內(nèi)容,而且還包括時(shí)間戳等其他輔助信息,因此更新模塊706可以根據(jù)同步模塊704獲得與在第一時(shí)間點(diǎn)之后寫入第一 MongoDB集群500的目標(biāo)數(shù)據(jù)相關(guān)聯(lián)的操作日志,更新第二 MongoDB集群600中的目標(biāo)數(shù)據(jù)的內(nèi)容。本領(lǐng)域技術(shù)人員可以理解,在其他非MongoDB集群的分布式數(shù)據(jù)存儲系統(tǒng),例如Cassandra等其他分布式數(shù)據(jù)存儲系統(tǒng)中,也存在數(shù)據(jù)服務(wù)器集群之間需要進(jìn)行數(shù)據(jù)遷移的類似問題,而且也具有與MongoDB集群的操作日志類似的操作日志,因此本發(fā)明的技術(shù)方案不僅適用于MongoDB集群之間的數(shù)據(jù)遷移,也同樣適用于其他類型的數(shù)據(jù)服務(wù)器集群之間的數(shù)據(jù)遷移。請參閱圖3,其為根據(jù)本發(fā)明一個(gè)實(shí)施例的數(shù)據(jù)遷移方法示意圖,該數(shù)據(jù)為與要遷移的業(yè)務(wù)相關(guān)的目標(biāo)數(shù)據(jù),進(jìn)行數(shù)據(jù)遷移的兩個(gè)數(shù)據(jù)服務(wù)器集群,其例如可以為上面圖1描述的第一數(shù)據(jù)服務(wù)器集群200和第二數(shù)據(jù)服務(wù)器集群300,也可以為上面圖2描述的第一MongoDB 集群 500 和第二 MongoDB 集群 600。該數(shù)據(jù)遷移方法始于步驟S310,在步驟S310中,將第一數(shù)據(jù)服務(wù)器集群中存儲的在第一時(shí)間點(diǎn)及該第一時(shí)間點(diǎn)之前寫入的目標(biāo)數(shù)據(jù)導(dǎo)入第二數(shù)據(jù)服務(wù)器集群。具體而言,在準(zhǔn)備進(jìn)行數(shù)據(jù)遷移時(shí),首先選擇一個(gè)已經(jīng)是過去時(shí)的第一時(shí)間點(diǎn),然后將第一數(shù)據(jù)服務(wù)器集群中存儲的第一時(shí)間點(diǎn)和第一時(shí)間點(diǎn)之前被寫入的目標(biāo)數(shù)據(jù)導(dǎo)入到第二數(shù)據(jù)服務(wù)器集群。例如,可以先將第一數(shù)據(jù)服務(wù)器集群中的目標(biāo)數(shù)據(jù)備份到類似磁盤的存儲介質(zhì),比如在MongoDB集群中可以使用mongodump這一備份工具進(jìn)行數(shù)據(jù)導(dǎo)入;然后再將存儲介質(zhì)中的目標(biāo)數(shù)據(jù)導(dǎo)入第二數(shù)據(jù)服務(wù)器集群,比如在MongoDB集群中可以使用mongorestore這一恢復(fù)工具??蛇x的,如果第一數(shù)據(jù)服務(wù)器集群中存在主數(shù)據(jù)服務(wù)器和從數(shù)據(jù)服務(wù)器,那么優(yōu)選在停掉一個(gè)從數(shù)據(jù)服務(wù)器的寫入操作之后,再從該從數(shù)據(jù)服務(wù)器中導(dǎo)出目標(biāo)數(shù)據(jù)。本步驟可以通過前述圖1中的初始數(shù)據(jù)導(dǎo)入模塊102或圖2中的初始數(shù)據(jù)導(dǎo)入模塊702執(zhí)行,相關(guān)的技術(shù)實(shí)現(xiàn)可以參考前述初始數(shù)據(jù)導(dǎo)入模塊在各實(shí)施例中的相關(guān)描述,此處不再贅述。在上面步驟S310中從第一數(shù)據(jù)服務(wù)器集群備份至第二數(shù)據(jù)服務(wù)器集群的目標(biāo)數(shù)據(jù),是在第一時(shí)間點(diǎn)及第一時(shí)間點(diǎn)之前寫入到第一數(shù)據(jù)服務(wù)器集群的,因此后續(xù)需要遷移的就是在第一時(shí)間之后寫入第一數(shù)據(jù)器集群的目標(biāo)數(shù)據(jù)。進(jìn)而,在步驟S320中,首選獲得與在該第一時(shí)間點(diǎn)之后寫入第一數(shù)據(jù)服務(wù)器集群的目標(biāo)數(shù)據(jù)相關(guān)聯(lián)的操作日志,操作日志是記錄每一次數(shù)據(jù)寫入這一操作具體內(nèi)容的信息記錄,其中包括每一次寫入第一數(shù)據(jù)服務(wù)器集群的目標(biāo)數(shù)據(jù)的內(nèi)容,通常還包括寫入的時(shí)間戳,如果該操作是對以前寫入過的數(shù)據(jù)內(nèi)容的更新,那么在操作日志中不但記錄更新后的新值,還記錄更新前的舊值。由此可見,根據(jù)操作日志就可以知道每次寫入數(shù)據(jù)的具體內(nèi)容。在獲得操作日志的過程中,由于數(shù)據(jù)是逐條被寫入的,進(jìn)而操作日志也是逐條產(chǎn)生的,因此可以實(shí)時(shí)獲取操作日志,即每寫入一條或幾條操作日志,就去獲取一次;也可以定期獲取操作日志。步驟S320可以通過前述圖1中的同步模塊104或圖2中的同步模塊704執(zhí)行,相關(guān)的技術(shù)實(shí)現(xiàn)可以參考前述同步模塊在各實(shí)施例中的相關(guān)描述,此處不再贅述。然后,在步驟S330中,根據(jù)步驟S320獲得的在第一時(shí)間點(diǎn)之后寫入第一數(shù)據(jù)服務(wù)器集群的操作日志,更新第二數(shù)據(jù)服務(wù)器集群中的目標(biāo)數(shù)據(jù)。具體而言,可以根據(jù)操作日志中記錄的每次寫入數(shù)據(jù)的具體內(nèi)容,將相應(yīng)的數(shù)據(jù)也寫入到第二數(shù)據(jù)服務(wù)器集群,從而使第二數(shù)據(jù)服務(wù)器集群中也成功存儲了在第一時(shí)間點(diǎn)之后寫入第一數(shù)據(jù)服務(wù)器集群的目標(biāo)數(shù)據(jù)。由于每條操作日志的內(nèi)容較少,因此步驟S330執(zhí)行完畢更新操作的速度也就很快,近乎可以達(dá)到每寫入第一數(shù)據(jù)服務(wù)器集群一條目標(biāo)數(shù)據(jù),隨之也被寫入第二數(shù)據(jù)服務(wù)器集群中。至此,第一數(shù)據(jù)服務(wù)器集群中的目標(biāo)數(shù)據(jù),已經(jīng)全部被遷移到了第二數(shù)據(jù)服務(wù)器集群,并且達(dá)到了兩個(gè)數(shù)據(jù)服務(wù)器集群中的目標(biāo)數(shù)據(jù)同步的目的。步驟S330可以通過前述圖1中的更新模塊106或圖2中的更新模塊706執(zhí)行,相關(guān)的技術(shù)實(shí)現(xiàn)可以參考前述更新模塊在各實(shí)施例中的相關(guān)描述,此處不再贅述。此后,還可以檢測兩個(gè)數(shù)據(jù)服務(wù)器集群中存儲的目標(biāo)數(shù)據(jù)是否一致,以及借助操作日志中的時(shí)間戳和更新前后的數(shù)值內(nèi)容等輔助信息,一并來判斷兩個(gè)數(shù)據(jù)服務(wù)器集群是否已經(jīng)同步成功。該步驟可以通過前文的遷移設(shè)備100中描述的同步檢測模塊執(zhí)行。如果檢測后確定已經(jīng)同步成功,那么就可以將連接數(shù)據(jù)服務(wù)器的入口地址由第一數(shù)據(jù)服務(wù)器集群的入口地址變更為第二數(shù)據(jù)服務(wù)器集群的入口地址。該步驟可以通過前文的遷移設(shè)備中的地址更新模塊執(zhí)行。此后,無論應(yīng)用服務(wù)器是需要對目標(biāo)數(shù)據(jù)進(jìn)行寫入,還是對目標(biāo)數(shù)據(jù)進(jìn)行讀取,都會由第二數(shù)據(jù)服務(wù)器集群執(zhí)行相應(yīng)的操作。在觀察一段時(shí)間兩個(gè)數(shù)據(jù)服務(wù)器的運(yùn)行完全穩(wěn)定之后,就可以將第一數(shù)據(jù)服務(wù)器集群中的目標(biāo)數(shù)據(jù)刪除了。應(yīng)當(dāng)注意的是,上述方法中的各步驟的順序是可以調(diào)整的,例如步驟S320可以不必等步驟S310完全執(zhí)行完之后才開始,可能出現(xiàn)這兩個(gè)步驟同時(shí)執(zhí)行或部分時(shí)段同時(shí)執(zhí)行的情況。由于操作日志是實(shí)時(shí)產(chǎn)生的,因此步驟S320和步驟S330也可以重復(fù)執(zhí)行,即每當(dāng)一條或幾條操作日志新產(chǎn)生后,就執(zhí)行一遍步驟S320和步驟S330,以便及時(shí)獲得最新的操作日志并根據(jù)操作日志及時(shí)更新第二數(shù)據(jù)服務(wù)器集群中的目標(biāo)數(shù)據(jù),從而可以使兩個(gè)數(shù)據(jù)服務(wù)器盡快達(dá)到目標(biāo)數(shù)據(jù)的同步寫入。再例如,前文提到的同步檢測步驟,也可以重復(fù)執(zhí)行,比如第一次執(zhí)行完畢之后發(fā)現(xiàn)沒有成功同步,那么間隔一段時(shí)間之后還可以再次檢測,直到檢測出兩個(gè)數(shù)據(jù)服務(wù)器集群同步為止。通過以上各實(shí)施例的描述可知,采用本發(fā)明實(shí)施例提供的技術(shù)方案,在遷移數(shù)據(jù)量可能較大的第一時(shí)間點(diǎn)和第一時(shí)間點(diǎn)之前的目標(biāo)數(shù)據(jù)的過程中,不需要停止要遷移業(yè)務(wù)的數(shù)據(jù)的正常寫入和讀取,比如應(yīng)用服務(wù)器仍然可以向舊數(shù)據(jù)服務(wù)器集群(如前文描述的第一數(shù)據(jù)服務(wù)器集群)中的一個(gè)數(shù)據(jù)服務(wù)器進(jìn)行數(shù)據(jù)寫入和讀取,同時(shí)從舊數(shù)據(jù)服務(wù)器集群中的另一個(gè)數(shù)據(jù)服務(wù)器導(dǎo)出第一時(shí)間點(diǎn)和第一時(shí)間點(diǎn)之前的目標(biāo)數(shù)據(jù)到新數(shù)據(jù)服務(wù)器集群(如前文描述的第二數(shù)據(jù)服務(wù)器集群);在遷移第一時(shí)間點(diǎn)之后寫入舊數(shù)據(jù)服務(wù)器集群的目標(biāo)數(shù)據(jù)過程中,是根據(jù)舊數(shù)據(jù)服務(wù)器集群的操作日志將第一時(shí)間之后的目標(biāo)數(shù)據(jù)同步寫入到新數(shù)據(jù)服務(wù)器中,在此過程中仍然不需要停止要遷移的業(yè)務(wù),在兩個(gè)新舊數(shù)據(jù)服務(wù)器集群完全同步之后,要遷移的業(yè)務(wù)就可以直接向新數(shù)據(jù)服務(wù)器集群正常寫入和讀取數(shù)據(jù)了。由此可見,采用本發(fā)明的技術(shù)方案,在整個(gè)業(yè)務(wù)的遷移過程中,都不需要停止要遷移的業(yè)務(wù),進(jìn)而就不會影響該業(yè)務(wù)對外的正常服務(wù)和運(yùn)行,從而實(shí)現(xiàn)了不需要停機(jī)備份即可實(shí)現(xiàn)數(shù)據(jù)遷移的有益效果。在此提供的算法和顯示不與任何特定計(jì)算機(jī)、虛擬系統(tǒng)或者其它設(shè)備固有相關(guān)。各種通用系統(tǒng)也可以與基于在此的示教一起使用。根據(jù)上面的描述,構(gòu)造這類系統(tǒng)所要求的結(jié)構(gòu)是顯而易見的。此外,本發(fā)明也不針對任何特定編程語言。應(yīng)當(dāng)明白,可以利用各種編程語言實(shí)現(xiàn)在此描述的本發(fā)明的內(nèi)容,并且上面對特定語言所做的描述是為了披露本發(fā)明的最佳實(shí)施方式。在此處所提供的說明書中,說明了大量具體細(xì)節(jié)。然而,能夠理解,本發(fā)明的實(shí)施例可以在沒有這些具體細(xì)節(jié)的情況下實(shí)踐。在一些實(shí)例中,并未詳細(xì)示出公知的方法、結(jié)構(gòu)和技術(shù),以便不模糊對本說明書的理解。類似地,應(yīng)當(dāng)理解,為了精簡本公開并幫助理解各個(gè)發(fā)明方面中的一個(gè)或多個(gè),在上面對本發(fā)明的示例性實(shí)施例的描述中,本發(fā)明的各個(gè)特征有時(shí)被一起分組到單個(gè)實(shí)施例、圖、或者對其的描述中。然而,并不應(yīng)將該公開的方法解釋成反映如下意圖即所要求保護(hù)的本發(fā)明要求比在每個(gè)權(quán)利要求中所明確記載的特征更多的特征。更確切地說,如下面的權(quán)利要求書所反映的那樣,發(fā)明方面在于少于前面公開的單個(gè)實(shí)施例的所有特征。因此,遵循具體實(shí)施方式
的權(quán)利要求書由此明確地并入該具體實(shí)施方式
,其中每個(gè)權(quán)利要求本身都作為本發(fā)明的單獨(dú)實(shí)施例。本領(lǐng)域那些技術(shù)人員可以理解,可以對實(shí)施例中的設(shè)備中的模塊進(jìn)行自適應(yīng)性地改變并且把它們設(shè)置在與該實(shí)施例不同的一個(gè)或多個(gè)設(shè)備中。可以把實(shí)施例中的模塊或單元或組件組合成一個(gè)模塊或單元或組件,以及此外可以把它們分成多個(gè)子模塊或子單元或子組件。除了這樣的特征和/或過程或者單元中的至少一些是相互排斥之外,可以采用任何組合對本說明書(包括伴隨的權(quán)利要求、摘要和附圖)中公開的所有特征以及如此公開的任何方法或者設(shè)備的所有過程或單元進(jìn)行組合。除非另外明確陳述,本說明書(包括伴隨的權(quán)利要求、摘要和附圖)中公開的每個(gè)特征可以由提供相同、等同或相似目的的替代特征來代替。此外,本領(lǐng)域的技術(shù)人員能夠理解,盡管在此的一些實(shí)施例包括其它實(shí)施例中所包括的某些特征而不是其它特征,但是不同實(shí)施例的特征的組合意味著處于本發(fā)明的范圍之內(nèi)并且形成不同的實(shí)施例。例如,在下面的權(quán)利要求書中,所要求保護(hù)的實(shí)施例的任意之一都可以以任意的組合方式來使用。本發(fā)明的各個(gè)部件實(shí)施例可以以硬件實(shí)現(xiàn),或者以在一個(gè)或者多個(gè)處理器上運(yùn)行的軟件模塊實(shí)現(xiàn),或者以它們的組合實(shí)現(xiàn)。本領(lǐng)域的技術(shù)人員應(yīng)當(dāng)理解,可以在實(shí)踐中使用微處理器或者數(shù)字信號處理器(DSP )來實(shí)現(xiàn)根據(jù)本發(fā)明實(shí)施例的用于數(shù)據(jù)服務(wù)器集群之間進(jìn)行數(shù)據(jù)遷移的遷移設(shè)備中的一些或者全部部件的一些或者全部功能。本發(fā)明還可以實(shí)現(xiàn)為用于執(zhí)行這里所描述的方法的一部分或者全部的設(shè)備或者設(shè)備程序(例如,計(jì)算機(jī)程序和計(jì)算機(jī)程序產(chǎn)品)。這樣的實(shí)現(xiàn)本發(fā)明的程序可以存儲在計(jì)算機(jī)可讀介質(zhì)上,或者可以具有一個(gè)或者多個(gè)信號的形式。這樣的信號可以從因特網(wǎng)網(wǎng)站上下載得到,或者在載體信號上提供,或者以任何其他形式提供。應(yīng)該注意的是上述實(shí)施例對本發(fā)明進(jìn)行說明而不是對本發(fā)明進(jìn)行限制,并且本領(lǐng)域技術(shù)人員在不脫離所附權(quán)利要求的范圍的情況下可設(shè)計(jì)出替換實(shí)施例。在權(quán)利要求中,不應(yīng)將位于括號之間的任何參考符號構(gòu)造成對權(quán)利要求的限制。單詞“包含”不排除存在未列在權(quán)利要求中的元件或步驟。位于元件之前的單詞“一”或“一個(gè)”不排除存在多個(gè)這樣的元件。本發(fā)明可以借助于包括有若干不同元件的硬件以及借助于適當(dāng)編程的計(jì)算機(jī)來實(shí)現(xiàn)。在列舉了若干設(shè)備的單元權(quán)利要求中,這些設(shè)備中的若干個(gè)可以是通過同一個(gè)硬件項(xiàng)來具體體現(xiàn)。單詞第一、第二、以及第三等的使用不表示任何順序??蓪⑦@些單詞解釋為名稱。
權(quán)利要求
1.一種數(shù)據(jù)遷移系統(tǒng),用于在數(shù)據(jù)服務(wù)器集群之間進(jìn)行數(shù)據(jù)遷移,所述系統(tǒng)至少包括所述第一數(shù)據(jù)服務(wù)器集群和所述第二數(shù)據(jù)服務(wù)器集群,以及遷移設(shè)備,其中, 所述數(shù)據(jù)為與要遷移的業(yè)務(wù)相關(guān)的目標(biāo)數(shù)據(jù); 所述遷移設(shè)備包括 初始數(shù)據(jù)導(dǎo)入模塊,被配置為將第一數(shù)據(jù)服務(wù)器集群中存儲的在第一時(shí)間點(diǎn)及該第一時(shí)間點(diǎn)之前寫入的目標(biāo)數(shù)據(jù)導(dǎo)入第二數(shù)據(jù)服務(wù)器集群; 同步模塊,被配置為獲得與在所述第一時(shí)間點(diǎn)之后寫入所述第一數(shù)據(jù)服務(wù)器集群的目標(biāo)數(shù)據(jù)相關(guān)聯(lián)的操作日志,所述操作日志至少包括寫入所述第一數(shù)據(jù)服務(wù)器集群中的目標(biāo)數(shù)據(jù)的內(nèi)容;以及 更新模塊,被配置為根據(jù)所述同步模塊獲得的操作日志更新所述第二數(shù)據(jù)服務(wù)器集群中的目標(biāo)數(shù)據(jù)。
2.根據(jù)權(quán)利要求I的數(shù)據(jù)遷移系統(tǒng),所述初始數(shù)據(jù)導(dǎo)入模塊包括 第一初始數(shù)據(jù)導(dǎo)入子模塊,被配置為將所述第一數(shù)據(jù)服務(wù)器集群中存儲的所述第一時(shí)間點(diǎn)及該第一時(shí)間點(diǎn)之前寫入的目標(biāo)數(shù)據(jù)導(dǎo)入一存儲介質(zhì); 第二初始數(shù)據(jù)導(dǎo)入子模塊,被配置為將所述導(dǎo)入至存儲介質(zhì)中的目標(biāo)數(shù)據(jù)導(dǎo)入所述第二數(shù)據(jù)服務(wù)器集群。
3.根據(jù)權(quán)利要求2的數(shù)據(jù)遷移系統(tǒng),其中,所述第一初始數(shù)據(jù)導(dǎo)入子模塊被配置為通過mongodump將所述第一數(shù)據(jù)服務(wù)器集群中存儲的所述第一時(shí)間點(diǎn)及該第一時(shí)間點(diǎn)之前寫入的目標(biāo)數(shù)據(jù)備份至一存儲介質(zhì);以及 第二初始數(shù)據(jù)導(dǎo)入子模塊被配置為通過mongorestore將備份至所述存儲介質(zhì)中的目標(biāo)數(shù)據(jù)導(dǎo)入所述第二數(shù)據(jù)服務(wù)器集群。
4.根據(jù)權(quán)利要求I至3中任一項(xiàng)的數(shù)據(jù)遷移系統(tǒng),所述第一數(shù)據(jù)服務(wù)器集群中包括主數(shù)據(jù)服務(wù)器和若干從數(shù)據(jù)服務(wù)器,所述遷移設(shè)備還包括 停用處理模塊,被配置為在第一時(shí)間點(diǎn)之后停止所述第一數(shù)據(jù)服務(wù)器集群中的第一從數(shù)據(jù)服務(wù)器的寫入操作;以及 所述初始數(shù)據(jù)導(dǎo)入模塊被配置為將所述第一數(shù)據(jù)服務(wù)器集群的所述第一從數(shù)據(jù)服務(wù)器中存儲的第一時(shí)間點(diǎn)及該第一時(shí)間點(diǎn)之前寫入的目標(biāo)數(shù)據(jù)導(dǎo)入所述第二數(shù)據(jù)服務(wù)器集群。
5.根據(jù)權(quán)利要求I至4中任一項(xiàng)的數(shù)據(jù)遷移系統(tǒng),其中所述遷移設(shè)備還包括 同步檢測模塊,被配置為檢測所述第一數(shù)據(jù)服務(wù)器集群和所述第二數(shù)據(jù)服務(wù)器集群的目標(biāo)數(shù)據(jù)是否已同步; 地址更新模塊,被配置為在所述同步檢測模塊檢測到所述第一數(shù)據(jù)服務(wù)器集群和所述第二數(shù)據(jù)服務(wù)器集群的目標(biāo)數(shù)據(jù)已同步之后,將連接數(shù)據(jù)服務(wù)器的入口地址由所述第一數(shù)據(jù)服務(wù)器集群的入口地址變更為所述第二數(shù)據(jù)服務(wù)器集群的入口地址。
6.根據(jù)權(quán)利要求I至5中任一項(xiàng)的數(shù)據(jù)遷移系統(tǒng),所述操作日志還包括如下信息中的一種或多種 寫入數(shù)據(jù)的時(shí)間戳;以及 當(dāng)寫入的數(shù)據(jù)是對原有數(shù)據(jù)的更新時(shí),數(shù)據(jù)更新前的舊值。
7.根據(jù)權(quán)利要求I至6中任一項(xiàng)的數(shù)據(jù)遷移系統(tǒng),所述第一數(shù)據(jù)服務(wù)器集群為第一MongoDB集群,所述第二數(shù)據(jù)服務(wù)器集群為第二 MongoDB集群,所述操作日志為MongoDB中的 oplogo
8.一種數(shù)據(jù)遷移方法,用于在數(shù)據(jù)服務(wù)器集群之間進(jìn)行數(shù)據(jù)遷移,所述數(shù)據(jù)為與要遷移的業(yè)務(wù)相關(guān)的目標(biāo)數(shù)據(jù),該方法包括 將所述第一數(shù)據(jù)服務(wù)器集群中存儲的在第一時(shí)間點(diǎn)及該第一時(shí)間點(diǎn)之前寫入的目標(biāo)數(shù)據(jù)導(dǎo)入所述第二數(shù)據(jù)服務(wù)器集群; 獲得與在第一時(shí)間點(diǎn)之后寫入所述第一數(shù)據(jù)服務(wù)器集群的目標(biāo)數(shù)據(jù)相關(guān)聯(lián)的操作日志,所述操作日志至少包括寫入所述第一數(shù)據(jù)服務(wù)器集群中的目標(biāo)數(shù)據(jù)的內(nèi)容; 根據(jù)獲得的操作日志更新所述第二數(shù)據(jù)服務(wù)器集群中的目標(biāo)數(shù)據(jù); 檢測所述第一數(shù)據(jù)服務(wù)器集群和所述第二數(shù)據(jù)服務(wù)器集群的目標(biāo)數(shù)據(jù)是否已同步;以及 在所述第一數(shù)據(jù)服務(wù)器集群和所述第二數(shù)據(jù)服務(wù)器集群的目標(biāo)數(shù)據(jù)已同步之后,將連接數(shù)據(jù)服務(wù)器的入口地址由所述第一數(shù)據(jù)服務(wù)器集群的入口地址變更為所述第二數(shù)據(jù)服務(wù)器集群的入口地址。
9.根據(jù)權(quán)利要求8的方法,所述將第一數(shù)據(jù)服務(wù)器集群中存儲的在第一時(shí)間點(diǎn)及該第一時(shí)間點(diǎn)之前寫入的目標(biāo)數(shù)據(jù)導(dǎo)入所述第二數(shù)據(jù)服務(wù)器集群的步驟包括 將所述第一數(shù)據(jù)服務(wù)器集群中存儲的第一時(shí)間點(diǎn)及該第一時(shí)間點(diǎn)之前寫入的目標(biāo)數(shù)據(jù)導(dǎo)入一存儲介質(zhì);以及 將所述導(dǎo)入至存儲介質(zhì)中的目標(biāo)數(shù)據(jù)導(dǎo)入第二數(shù)據(jù)服務(wù)器集群。
10.根據(jù)權(quán)利要求9的方法,其中, 通過mongodump將所述第一數(shù)據(jù)服務(wù)器集群中存儲的第一時(shí)間點(diǎn)及該第一時(shí)間點(diǎn)之前寫入的目標(biāo)數(shù)據(jù)備份至一存儲介質(zhì);以及 通過mongorestore將備份至所述存儲介質(zhì)中的目標(biāo)數(shù)據(jù)導(dǎo)入所述第二數(shù)據(jù)服務(wù)器集群。
11.根據(jù)權(quán)利要求8至10中任一項(xiàng)的方法,所述第一數(shù)據(jù)服務(wù)器集群中包括主數(shù)據(jù)服務(wù)器和若干從數(shù)據(jù)服務(wù)器,所述方法還包括在所述第一時(shí)間點(diǎn)之后停止所述第一數(shù)據(jù)服務(wù)器集群中的第一從數(shù)據(jù)服務(wù)器的寫入操作;以及 所述將所述第一數(shù)據(jù)服務(wù)器集群中存儲的在第一時(shí)間點(diǎn)及該第一時(shí)間點(diǎn)之前寫入的目標(biāo)數(shù)據(jù)導(dǎo)入所述第二數(shù)據(jù)服務(wù)器集群的步驟包括 將所述第一數(shù)據(jù)服務(wù)器集群中該第一從數(shù)據(jù)服務(wù)器中存儲的第一時(shí)間點(diǎn)及該第一時(shí)間點(diǎn)之前寫入的目標(biāo)數(shù)據(jù)導(dǎo)入所述第二數(shù)據(jù)服務(wù)器集群。
12.根據(jù)權(quán)利要求8至11中任一項(xiàng)的方法,所述操作日志還包括如下信息中的一種或多種 寫入數(shù)據(jù)的時(shí)間戳;以及 當(dāng)寫入的數(shù)據(jù)是對原有數(shù)據(jù)的更新時(shí),數(shù)據(jù)更新前的舊值。
13.根據(jù)權(quán)利要求8至12中任一項(xiàng)的方法,所述第一數(shù)據(jù)服務(wù)器集群為第一MongoDB集群,所述第二數(shù)據(jù)服務(wù)器集群為第二 MongoDB集群,所述操作日志為MongoDB中的oplog。
全文摘要
本發(fā)明公開了一種數(shù)據(jù)遷移系統(tǒng)和方法,用于在數(shù)據(jù)服務(wù)器集群之間進(jìn)行數(shù)據(jù)遷移,數(shù)據(jù)為與要遷移的業(yè)務(wù)相關(guān)的目標(biāo)數(shù)據(jù),該方法包括將第一數(shù)據(jù)服務(wù)器集群中存儲的在第一時(shí)間點(diǎn)及該第一時(shí)間點(diǎn)之前寫入的目標(biāo)數(shù)據(jù)導(dǎo)入第二數(shù)據(jù)服務(wù)器集群;獲得與在第一時(shí)間點(diǎn)之后寫入第一數(shù)據(jù)服務(wù)器集群的目標(biāo)數(shù)據(jù)相關(guān)聯(lián)的操作日志;根據(jù)獲得的操作日志更新第二數(shù)據(jù)服務(wù)器集群中的目標(biāo)數(shù)據(jù);檢測第一數(shù)據(jù)服務(wù)器集群和第二數(shù)據(jù)服務(wù)器集群的目標(biāo)數(shù)據(jù)是否已同步;以及在第一數(shù)據(jù)服務(wù)器集群和第二數(shù)據(jù)服務(wù)器集群的目標(biāo)數(shù)據(jù)已同步之后,將連接數(shù)據(jù)服務(wù)器的入口地址由第一數(shù)據(jù)服務(wù)器集群的入口地址變更為第二數(shù)據(jù)服務(wù)器集群的入口地址。
文檔編號G06F17/30GK102982085SQ20121042972
公開日2013年3月20日 申請日期2012年10月31日 優(yōu)先權(quán)日2012年10月31日
發(fā)明者桂勇哲, 陳超, 代兵, 朱超, 王超 申請人:北京奇虎科技有限公司, 奇智軟件(北京)有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1
银川市| 莱州市| 临潭县| 江孜县| 平武县| 璧山县| 东阿县| 安丘市| 呈贡县| 高平市| 高邑县| 苏尼特右旗| 广宁县| 平阳县| 昭平县| 类乌齐县| 台州市| 巨野县| 颍上县| 舞阳县| 仪征市| 如东县| 龙口市| 晋中市| 沁阳市| 洛扎县| 德阳市| 桃园市| 金沙县| 漳州市| 阿鲁科尔沁旗| 凤阳县| 湘阴县| 台湾省| 瑞金市| 江门市| 玉山县| 铜山县| 灯塔市| 谢通门县| 丹巴县|