两个人的电影免费视频_国产精品久久久久久久久成人_97视频在线观看播放_久久这里只有精品777_亚洲熟女少妇二三区_4438x8成人网亚洲av_内谢国产内射夫妻免费视频_人妻精品久久久久中国字幕

異構(gòu)數(shù)據(jù)庫(kù)的數(shù)據(jù)同步方法及裝置與流程

文檔序號(hào):11620594閱讀:543來(lái)源:國(guó)知局
異構(gòu)數(shù)據(jù)庫(kù)的數(shù)據(jù)同步方法及裝置與流程

本申請(qǐng)涉及數(shù)據(jù)庫(kù)技術(shù)領(lǐng)域,尤其是涉及一種異構(gòu)數(shù)據(jù)庫(kù)的數(shù)據(jù)同步方法及裝置。



背景技術(shù):

對(duì)于異構(gòu)數(shù)據(jù)庫(kù),目前現(xiàn)有的數(shù)據(jù)同步手段可通過(guò)drc(datareplicationcenter,數(shù)據(jù)同步中心)監(jiān)聽源數(shù)據(jù)庫(kù)的binlog日志(這里的源數(shù)據(jù)庫(kù)是基于mysql數(shù)據(jù)庫(kù)技術(shù)),然后通過(guò)消息將binlog日志發(fā)送到訂閱端,訂閱端拿到消息后生成相應(yīng)的etl(extracttransformloading,數(shù)據(jù)抽取轉(zhuǎn)化裝載規(guī)則)任務(wù),然后基于etl任務(wù)將數(shù)據(jù)同步到目標(biāo)數(shù)據(jù)庫(kù)中。

然而,一旦drc異常(比如宕機(jī))暫時(shí)無(wú)法自動(dòng)恢復(fù)時(shí),源數(shù)據(jù)庫(kù)的增量數(shù)據(jù)則無(wú)法同步到目標(biāo)數(shù)據(jù)庫(kù)。由于增量數(shù)據(jù)未及時(shí)同步到目標(biāo)數(shù)據(jù)庫(kù),往往也就喪失了其時(shí)效性,進(jìn)而還可能影響基于該目標(biāo)數(shù)據(jù)庫(kù)的系統(tǒng)應(yīng)用(比如系統(tǒng)無(wú)法及時(shí)向用戶推送最新資訊)。



技術(shù)實(shí)現(xiàn)要素:

本申請(qǐng)實(shí)施例的目的在于提供一種異構(gòu)數(shù)據(jù)庫(kù)的數(shù)據(jù)同步方法及裝置,以實(shí)現(xiàn)在主用的數(shù)據(jù)同步機(jī)制因異常而無(wú)法工作時(shí),還可以通過(guò)其他方式將源數(shù)據(jù)庫(kù)中的指定范圍內(nèi)的數(shù)據(jù)同步到目標(biāo)數(shù)據(jù)庫(kù)。

為達(dá)到上述目的,一方面,本申請(qǐng)實(shí)施例提供了一種異構(gòu)數(shù)據(jù)庫(kù)的數(shù)據(jù)同步方法,包括以下步驟:

在基于預(yù)設(shè)的第一數(shù)據(jù)同步機(jī)制,將源數(shù)據(jù)庫(kù)中預(yù)定范圍的數(shù)據(jù)同步至目標(biāo)數(shù)據(jù)庫(kù)的過(guò)程中,檢測(cè)所述第一數(shù)據(jù)同步機(jī)制的狀態(tài);

當(dāng)所述第一數(shù)據(jù)同步機(jī)制的狀態(tài)異常時(shí),啟用第二數(shù)據(jù)同步機(jī)制,以將所述源數(shù)據(jù)庫(kù)中預(yù)定范圍的數(shù)據(jù)同步至所述目標(biāo)數(shù)據(jù)庫(kù)。

另一方面,本申請(qǐng)實(shí)施例還提供了一種異構(gòu)數(shù)據(jù)庫(kù)的數(shù)據(jù)同步裝置,包括:

同步狀態(tài)檢測(cè)模塊,用于在基于預(yù)設(shè)的第一數(shù)據(jù)同步機(jī)制,將源數(shù)據(jù)庫(kù)中預(yù)定范圍的數(shù)據(jù)同步至目標(biāo)數(shù)據(jù)庫(kù)的過(guò)程中,檢測(cè)所述第一數(shù)據(jù)同步機(jī)制的狀態(tài);

同步機(jī)制替換模塊,用于當(dāng)所述第一數(shù)據(jù)同步機(jī)制的狀態(tài)異常時(shí),啟用第二數(shù)據(jù)同步機(jī)制,以將所述源數(shù)據(jù)庫(kù)中預(yù)定范圍的數(shù)據(jù)同步至所述目標(biāo)數(shù)據(jù)庫(kù)。

本申請(qǐng)實(shí)施例中,在基于預(yù)設(shè)的第一數(shù)據(jù)同步機(jī)制,將源數(shù)據(jù)庫(kù)中預(yù)定范圍的數(shù)據(jù)同步至目標(biāo)數(shù)據(jù)庫(kù)的過(guò)程中,檢測(cè)第一數(shù)據(jù)同步機(jī)制的狀態(tài);當(dāng)確認(rèn)第一數(shù)據(jù)同步機(jī)制的狀態(tài)異常時(shí),啟用第二數(shù)據(jù)同步機(jī)制,以將源數(shù)據(jù)庫(kù)中預(yù)定范圍的數(shù)據(jù)同步至目標(biāo)數(shù)據(jù)庫(kù),從而實(shí)現(xiàn)了在主用的第一數(shù)據(jù)同步機(jī)制故障期間,還可通過(guò)啟用第二數(shù)據(jù)同步機(jī)制,繼續(xù)將源數(shù)據(jù)庫(kù)中預(yù)定范圍的數(shù)據(jù)同步至目標(biāo)數(shù)據(jù)庫(kù)。

附圖說(shuō)明

此處所說(shuō)明的附圖用來(lái)提供對(duì)本申請(qǐng)實(shí)施例的進(jìn)一步理解,構(gòu)成本申請(qǐng)實(shí)施例的一部分,并不構(gòu)成對(duì)本申請(qǐng)實(shí)施例的限定。在附圖中:

圖1為本申請(qǐng)實(shí)施例的異構(gòu)數(shù)據(jù)庫(kù)的數(shù)據(jù)同步方法的流程圖;

圖2為本申請(qǐng)實(shí)施例的數(shù)據(jù)同步裝置的結(jié)構(gòu)框圖;

圖3為本申請(qǐng)實(shí)施例的數(shù)據(jù)同步裝置中同步機(jī)制替換模塊的結(jié)構(gòu)框圖;

圖4為本申請(qǐng)實(shí)施例一應(yīng)用場(chǎng)景的時(shí)序圖。

具體實(shí)施方式

為使本申請(qǐng)實(shí)施例的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚明白,下面結(jié)合實(shí)施例和附圖,對(duì)本申請(qǐng)實(shí)施例做進(jìn)一步詳細(xì)說(shuō)明。在此,本申請(qǐng)實(shí)施例的示意性實(shí)施例及其說(shuō)明用于解釋本申請(qǐng)實(shí)施例,但并不作為對(duì)本申請(qǐng)實(shí)施例的限定。

下面結(jié)合附圖,對(duì)本申請(qǐng)實(shí)施例的具體實(shí)施方式作進(jìn)一步的詳細(xì)說(shuō)明。

參考圖1所示,本申請(qǐng)實(shí)施例的異構(gòu)數(shù)據(jù)庫(kù)的數(shù)據(jù)同步方法包括以下步驟:

步驟s101、在基于預(yù)設(shè)的第一數(shù)據(jù)同步機(jī)制,將源數(shù)據(jù)庫(kù)中預(yù)定范圍的數(shù)據(jù)同步至目標(biāo)數(shù)據(jù)庫(kù)的過(guò)程中,檢測(cè)所述第一數(shù)據(jù)同步機(jī)制的狀態(tài)。

在本申請(qǐng)實(shí)施例中,所述的第一數(shù)據(jù)同步機(jī)制一般為主用的數(shù)據(jù)同步機(jī)制,即正常情況下,數(shù)據(jù)同步所適合采用的數(shù)據(jù)同步機(jī)制。一般的,系統(tǒng)會(huì)對(duì)第一數(shù)據(jù)同步機(jī)制進(jìn)行監(jiān)控,當(dāng)監(jiān)控發(fā)現(xiàn)同步有故障時(shí),會(huì)發(fā)出告警,以觸發(fā)采用其他方式繼續(xù)進(jìn)行數(shù)據(jù)同步。所述檢測(cè)第一數(shù)據(jù)同步機(jī)制的狀態(tài),即通過(guò)對(duì)第一數(shù)據(jù)同步機(jī)制進(jìn)行監(jiān)控而獲得的監(jiān)控結(jié)果,判斷第一數(shù)據(jù)同步機(jī)制當(dāng)前是否正常運(yùn)行。在本申請(qǐng)實(shí)施例中,所述目標(biāo)數(shù)據(jù)庫(kù)和所述源數(shù)據(jù)庫(kù)一般屬于異構(gòu)數(shù)據(jù)庫(kù)。

步驟s102、當(dāng)所述第一數(shù)據(jù)同步機(jī)制的狀態(tài)異常時(shí),啟用第二數(shù)據(jù)同步機(jī)制,以將所述源數(shù)據(jù)庫(kù)中預(yù)定范圍的數(shù)據(jù)同步至所述目標(biāo)數(shù)據(jù)庫(kù)。

在本申請(qǐng)實(shí)施例中,所述啟用第二數(shù)據(jù)同步機(jī)制可以包括以下步驟:

1)、接收理drm(distributedresourcemanagement,分布式資源管理)平臺(tái)推送的數(shù)據(jù)同步任務(wù),所述數(shù)據(jù)同步任務(wù)包括數(shù)據(jù)恢復(fù)時(shí)間點(diǎn)及指定的目標(biāo)數(shù)據(jù)庫(kù)中待同步的數(shù)據(jù)庫(kù)表的標(biāo)識(shí)。

在本申請(qǐng)的一個(gè)示例性實(shí)施例中,為了可以在系統(tǒng)運(yùn)行時(shí)修改系統(tǒng)的緩存配置且不用重啟系統(tǒng),數(shù)據(jù)同步任務(wù)可通過(guò)drm平臺(tái)動(dòng)態(tài)推送至系統(tǒng)。drm平臺(tái)是一種能提供動(dòng)態(tài)資源配置的平臺(tái),其可以在系統(tǒng)運(yùn)行時(shí)修改系統(tǒng)緩存配置,對(duì)于系統(tǒng)而言,drm平臺(tái)向其推送緩存配置信息(所述緩存配置信息中包括數(shù)據(jù)同步任務(wù)),其相當(dāng)于是系統(tǒng)訂閱了drm平臺(tái)推送的緩存配置信息,并且可遠(yuǎn)程將訂閱的緩存配置信息加載至緩存,因此系統(tǒng)無(wú)需重啟就可以生效,從而節(jié)省了重啟系統(tǒng)所需花費(fèi)的時(shí)間,因而有利于快速實(shí)現(xiàn)數(shù)據(jù)同步。

在本申請(qǐng)的一個(gè)示例性實(shí)施例中,所述的數(shù)據(jù)恢復(fù)時(shí)間點(diǎn)比如可以為drc最近一次成功同步數(shù)據(jù)時(shí)的時(shí)間點(diǎn);在本申請(qǐng)的另一示例性實(shí)施例中,所述的數(shù)據(jù)恢復(fù)時(shí)間點(diǎn)也可以為所述drc發(fā)生異常時(shí)的時(shí)間點(diǎn)(比如drc宕機(jī)時(shí)間點(diǎn))等。在本申請(qǐng)的再一示例性實(shí)施例中,為了確保數(shù)據(jù)的完整性,所述的數(shù)據(jù)恢復(fù)時(shí)間點(diǎn)也可以是在所述drc發(fā)生異常時(shí)的時(shí)間點(diǎn)的基礎(chǔ)上,向前偏移指定時(shí)間后的時(shí)間點(diǎn),比如drc異常時(shí)間點(diǎn)為13:50:48,所述的數(shù)據(jù)恢復(fù)時(shí)間點(diǎn)可以設(shè)定為13:49:48,即提前一分鐘。

在本申請(qǐng)的一個(gè)示例性實(shí)施例中,所述基于預(yù)設(shè)的第一數(shù)據(jù)同步機(jī)制,將源數(shù)據(jù)庫(kù)中預(yù)定范圍的數(shù)據(jù)同步至目標(biāo)數(shù)據(jù)庫(kù),比如可以通過(guò)drc監(jiān)聽源數(shù)據(jù)庫(kù)的日志文件(比如binlog日志)的方式來(lái)獲得源數(shù)據(jù)庫(kù)中預(yù)定范圍的數(shù)據(jù),然后將其同步至目標(biāo)數(shù)據(jù)庫(kù)。

需要說(shuō)明的是,本申請(qǐng)實(shí)施例中的第一數(shù)據(jù)同步機(jī)制,并不局限于通過(guò)drc監(jiān)聽源數(shù)據(jù)庫(kù)的日志文件的方式來(lái)獲得源數(shù)據(jù)庫(kù)中預(yù)定范圍的數(shù)據(jù)。在本申請(qǐng)的其他示例性實(shí)施例中,還可以通過(guò)其他方式獲得源數(shù)據(jù)庫(kù)中預(yù)定范圍的數(shù)據(jù),例如增量數(shù)據(jù)抽取方式等。在本申請(qǐng)的一個(gè)具體實(shí)施例中,所述的增量數(shù)據(jù)抽取例如可以是基于觸發(fā)器、基于時(shí)間戳或基于全表對(duì)比等等。以下對(duì)上述的各個(gè)增量數(shù)據(jù)抽取方式進(jìn)行簡(jiǎn)要說(shuō)明:

基于觸發(fā)器:在目標(biāo)數(shù)據(jù)庫(kù)中的待同步數(shù)據(jù)庫(kù)表上建立需要的觸發(fā)器(本申請(qǐng)實(shí)施例中可建立插入觸發(fā)器),每當(dāng)源數(shù)據(jù)庫(kù)源中對(duì)應(yīng)的數(shù)據(jù)庫(kù)表中的數(shù)據(jù)發(fā)生變化,就會(huì)被插入觸發(fā)器將變化的數(shù)據(jù)寫入一個(gè)臨時(shí)表,抽取線程則從臨時(shí)表中抽取數(shù)據(jù),臨時(shí)表中已抽取過(guò)的數(shù)據(jù)被標(biāo)記或刪除。

基于全表比對(duì):典型的全表比對(duì)的方式可以是采用md5(message-digestalgorithm5,信息-摘要算法5)校驗(yàn)碼。具體的,利用etl(extracttransformload,抽取、轉(zhuǎn)換、裝載)工具事先為目標(biāo)數(shù)據(jù)庫(kù)中的待同步數(shù)據(jù)庫(kù)表建立一個(gè)結(jié)構(gòu)類似的md5臨時(shí)表,該臨時(shí)表中記錄有源數(shù)據(jù)庫(kù)源中的待同步數(shù)據(jù)庫(kù)表主鍵以及根據(jù)所有字段的數(shù)據(jù)計(jì)算出來(lái)的md5校驗(yàn)碼。每次進(jìn)行數(shù)據(jù)抽取時(shí),對(duì)源數(shù)據(jù)庫(kù)源中的待同步數(shù)據(jù)庫(kù)表和md5臨時(shí)表進(jìn)行md5校驗(yàn)碼的比對(duì),從而決定源數(shù)據(jù)庫(kù)源中的待同步數(shù)據(jù)庫(kù)表中的數(shù)據(jù)是新增、修改還是刪除,同時(shí)更新md5校驗(yàn)碼。

基于時(shí)間戳:它是一種基于快照比較的變化數(shù)據(jù)捕獲方式,在源數(shù)據(jù)庫(kù)源中的待同步數(shù)據(jù)庫(kù)表上增加一個(gè)時(shí)間戳字段,系統(tǒng)中更新修改表數(shù)據(jù)的時(shí)候,同時(shí)修改時(shí)間戳字段的值。當(dāng)進(jìn)行數(shù)據(jù)抽取時(shí),通過(guò)比較系統(tǒng)時(shí)間與時(shí)間戳字段的值來(lái)決定抽取哪些數(shù)據(jù)。對(duì)于支持時(shí)間戳自動(dòng)更新的數(shù)據(jù)庫(kù)而言,即表的其它字段的數(shù)據(jù)發(fā)生改變時(shí),自動(dòng)更新時(shí)間戳字段的值。對(duì)于不支持時(shí)間戳自動(dòng)更新的數(shù)據(jù)庫(kù)而言,這就要求業(yè)務(wù)系統(tǒng)在更新業(yè)務(wù)數(shù)據(jù)時(shí),手工更新時(shí)間戳字段。

2)、根據(jù)所述待同步數(shù)據(jù)庫(kù)表的標(biāo)識(shí),從該待同步數(shù)據(jù)庫(kù)表中定時(shí)撈取,其創(chuàng)建時(shí)間點(diǎn)晚于所述數(shù)據(jù)恢復(fù)時(shí)間點(diǎn)的所有數(shù)據(jù)放入臨時(shí)列表(list),并將所述臨時(shí)列表中的數(shù)據(jù)插入所述目標(biāo)數(shù)據(jù)庫(kù)中對(duì)應(yīng)的數(shù)據(jù)庫(kù)表。

在本申請(qǐng)的一個(gè)示例性實(shí)施例中,上述定時(shí)撈取時(shí),除首次撈取的撈取范圍為源數(shù)據(jù)庫(kù)中的待同步數(shù)據(jù)庫(kù)表中,其創(chuàng)建時(shí)間晚于所述數(shù)據(jù)恢復(fù)時(shí)間點(diǎn)的所有數(shù)據(jù)外,其后每次撈取的撈取范圍為創(chuàng)建時(shí)間晚于上一次撈取的截止時(shí)間的所有數(shù)據(jù)(即在首次撈取后,其后的各次撈取均為對(duì)源數(shù)據(jù)庫(kù)中的待同步數(shù)據(jù)庫(kù)表內(nèi)的增量數(shù)據(jù)進(jìn)行撈取),比如第一次撈取的截止時(shí)間為15:50:05,則在第二次撈取周期到來(lái)時(shí),只需從源數(shù)據(jù)庫(kù)中指定范圍內(nèi)撈取其創(chuàng)建時(shí)間晚于15:50:05的增量數(shù)據(jù)。這樣,可以防止數(shù)據(jù)的重復(fù)撈取,節(jié)省系統(tǒng)資源,提高數(shù)據(jù)同步效率。

由此可見,本申請(qǐng)實(shí)施例中,在上述的定時(shí)撈取和數(shù)據(jù)插入中,每一次的撈取和數(shù)據(jù)插入就是一次數(shù)據(jù)同步過(guò)程。其中,所述定時(shí)撈取的時(shí)間間隔可根據(jù)實(shí)時(shí)性要求適當(dāng)設(shè)定。

在本申請(qǐng)的一個(gè)示例性實(shí)施例中,在將所述臨時(shí)列表中的數(shù)據(jù)插入所述目標(biāo)數(shù)據(jù)庫(kù)中對(duì)應(yīng)的數(shù)據(jù)庫(kù)表之前,還可以包括:

判斷所述目標(biāo)數(shù)據(jù)庫(kù)中對(duì)應(yīng)的數(shù)據(jù)庫(kù)表中,是否已存所述臨時(shí)列表中的數(shù)據(jù);

如果不存在,則將所述臨時(shí)列表中的數(shù)據(jù)插入所述目標(biāo)數(shù)據(jù)庫(kù)中對(duì)應(yīng)的數(shù)據(jù)庫(kù)表;否則,則忽略該數(shù)據(jù),因?yàn)?,?duì)于已經(jīng)存在的相同數(shù)據(jù),沒必要重復(fù)。

在本申請(qǐng)的一個(gè)示例性實(shí)施例中,在所述將臨時(shí)列表中的數(shù)據(jù)插入所述目標(biāo)數(shù)據(jù)庫(kù)中對(duì)應(yīng)的數(shù)據(jù)庫(kù)表之后,還可以清空所述臨時(shí)列表,以便于為下一次數(shù)據(jù)同步做準(zhǔn)備。

在本申請(qǐng)的一個(gè)示例性實(shí)施例中,所述的定時(shí)撈取是在每次接收到由調(diào)度中心定時(shí)發(fā)送的驅(qū)動(dòng)消息時(shí)觸發(fā)的。需要說(shuō)明的是,其中,調(diào)度中心定時(shí)發(fā)送驅(qū)動(dòng)消息是類似于一種輪詢(polling)機(jī)制,不管drm平臺(tái)是否推送了數(shù)據(jù)同步任務(wù),調(diào)度中心都會(huì)定時(shí)向系統(tǒng)發(fā)一個(gè)驅(qū)動(dòng)消息,系統(tǒng)被驅(qū)動(dòng)消息觸發(fā)后,會(huì)檢查緩存配置信息中是否包含數(shù)據(jù)同步任務(wù);如果包含,則從中獲得待同步數(shù)據(jù)庫(kù)表及數(shù)據(jù)恢復(fù)時(shí)間點(diǎn),以進(jìn)行數(shù)據(jù)同步;如果不包含,則不進(jìn)行數(shù)據(jù)同步。而在緩存配置信息中包含數(shù)據(jù)同步任務(wù)的前提下,系統(tǒng)每收到一個(gè)驅(qū)動(dòng)消息就進(jìn)行一次數(shù)據(jù)撈取(即從源數(shù)據(jù)庫(kù)中的對(duì)應(yīng)數(shù)據(jù)庫(kù)表里撈取增量數(shù)據(jù)),并將撈取的數(shù)據(jù)更新到目標(biāo)數(shù)據(jù)庫(kù)的對(duì)應(yīng)的數(shù)據(jù)庫(kù)表中。

在本申請(qǐng)的另一示例性實(shí)施例中,還可以考慮在系統(tǒng)側(cè)設(shè)置用于數(shù)據(jù)同步的定時(shí)機(jī)制,以實(shí)現(xiàn)數(shù)據(jù)同步的定時(shí)執(zhí)行。

在本申請(qǐng)一個(gè)示例性實(shí)施例中,在所述第二數(shù)據(jù)同步機(jī)制下,當(dāng)所述源數(shù)據(jù)庫(kù)中的待同步數(shù)據(jù)庫(kù)表有多個(gè)時(shí),如果系統(tǒng)處理能力允許,可并行處理每個(gè)待同步數(shù)據(jù)庫(kù)表的同步。在本申請(qǐng)另一示例性實(shí)施例中,在所述第二數(shù)據(jù)同步機(jī)制下,當(dāng)所述源數(shù)據(jù)庫(kù)中的待同步數(shù)據(jù)庫(kù)表有多個(gè)時(shí),如果系統(tǒng)處理能力不允許,則可以根據(jù)預(yù)設(shè)的數(shù)據(jù)同步優(yōu)先級(jí),進(jìn)行數(shù)據(jù)同步處理。

此外,由于drc故障后的恢復(fù)需要一定時(shí)間,在此期間,源數(shù)據(jù)庫(kù)可能會(huì)不斷產(chǎn)生增量數(shù)據(jù),因此,至少在drc故障尚未恢復(fù)前,數(shù)據(jù)同步需要持續(xù)進(jìn)行。需要說(shuō)明的是,由于通過(guò)drc監(jiān)聽數(shù)據(jù)庫(kù)日志的方式獲取數(shù)據(jù)庫(kù)增量數(shù)據(jù),要比通過(guò)drm配置后定時(shí)查表的方式獲取數(shù)據(jù)庫(kù)增量數(shù)據(jù)的效率要高,因此,本申請(qǐng)通過(guò)drm配置后定時(shí)查表的方式獲取數(shù)據(jù)庫(kù)增量數(shù)據(jù)的方式,更適合于作為臨時(shí)性或應(yīng)急性的數(shù)據(jù)同步機(jī)制。

本申請(qǐng)實(shí)施例中,在基于預(yù)設(shè)的第一數(shù)據(jù)同步機(jī)制,將源數(shù)據(jù)庫(kù)中預(yù)定范圍的數(shù)據(jù)同步至目標(biāo)數(shù)據(jù)庫(kù)的過(guò)程中,檢測(cè)第一數(shù)據(jù)同步機(jī)制的狀態(tài);當(dāng)確認(rèn)第一數(shù)據(jù)同步機(jī)制的狀態(tài)異常時(shí),啟用第二數(shù)據(jù)同步機(jī)制,以將源數(shù)據(jù)庫(kù)中預(yù)定范圍的數(shù)據(jù)同步至目標(biāo)數(shù)據(jù)庫(kù),從而實(shí)現(xiàn)了在主用的第一數(shù)據(jù)同步機(jī)制故障期間,還可通過(guò)啟用第二數(shù)據(jù)同步機(jī)制,繼續(xù)將源數(shù)據(jù)庫(kù)中預(yù)定范圍的數(shù)據(jù)同步至目標(biāo)數(shù)據(jù)庫(kù)。

雖然上文描述的過(guò)程流程包括以特定順序出現(xiàn)的多個(gè)操作,但是,應(yīng)當(dāng)清楚了解,這些過(guò)程可以包括更多或更少的操作,這些操作可以順序執(zhí)行或并行執(zhí)行(例如使用并行處理器或多線程環(huán)境)。

下面結(jié)合以下結(jié)合本申請(qǐng)的一個(gè)實(shí)施例介紹一種具體應(yīng)用場(chǎng)景。

螞蟻聚寶的資訊都是以股票,基金資訊為主體的。其中,資訊的源數(shù)據(jù)庫(kù)是stockdb數(shù)據(jù)庫(kù)。stockdb數(shù)據(jù)庫(kù)是secuinfo系統(tǒng)中的數(shù)據(jù)庫(kù),其主要存放股票資訊數(shù)據(jù);stockdb的資訊數(shù)據(jù)可以是來(lái)源于一財(cái)或者新浪的資訊,也是通過(guò)drc從聚源同步而來(lái)。咨詢的直接來(lái)源是finfoproddb數(shù)據(jù)庫(kù):finfoproddb數(shù)據(jù)庫(kù)是finfocore系統(tǒng)中的數(shù)據(jù)庫(kù),其存放平臺(tái)配置、業(yè)務(wù)表以及資訊數(shù)據(jù);目前finfoproddb數(shù)據(jù)庫(kù)中的資訊數(shù)據(jù)都是從stockdb數(shù)據(jù)庫(kù)同步過(guò)來(lái)的,具體來(lái)說(shuō),是通過(guò)drc監(jiān)聽stockdb數(shù)據(jù)庫(kù)的binlog日志的方式同步而來(lái)。

參見圖4所示,當(dāng)drc故障時(shí),其基于本申請(qǐng)實(shí)施例的數(shù)據(jù)同步處理方式如下:

1、finfocore系統(tǒng)接收drm推送的數(shù)據(jù)同步任務(wù)。

當(dāng)drc故障時(shí),drm可在后臺(tái)以集群方式推送數(shù)據(jù)同步任務(wù),推送格式可以如下:

orig_stock_news_info:recovery.switch=true,recovery.datetime=20150611000000(表名:recovery.switch=true,recovery.datetime=恢復(fù)時(shí)間點(diǎn)yymmddhhmmss)。本場(chǎng)景可以支持多個(gè)數(shù)據(jù)庫(kù)表并行恢復(fù)(配置時(shí),各個(gè)表之間可以用“|”隔開)。比如stock_news_info、stock_news_text、tock_news_auth_info、stock_news_column_item、stock_news_securities等數(shù)據(jù)庫(kù)表均可并行恢復(fù)。其中,數(shù)據(jù)同步任務(wù)包括數(shù)據(jù)恢復(fù)時(shí)間點(diǎn)及stockdb數(shù)據(jù)庫(kù)中的待同步數(shù)據(jù)庫(kù)表的標(biāo)識(shí)。

2、finfocore系統(tǒng)接收調(diào)度中心scheduler定時(shí)發(fā)送的驅(qū)動(dòng)消息。需要說(shuō)明的是,調(diào)度中心定時(shí)發(fā)送驅(qū)動(dòng)消息是一種類似于輪詢機(jī)制,不管drm平臺(tái)是否推送了數(shù)據(jù)同步任務(wù),調(diào)度中心都會(huì)定時(shí)向系統(tǒng)發(fā)一個(gè)驅(qū)動(dòng)消息。

3、finfocore系統(tǒng)被驅(qū)動(dòng)消息觸發(fā)后檢查緩存配置信息中是否包含數(shù)據(jù)同步任務(wù);如果包含,則從中獲得待同步數(shù)據(jù)庫(kù)表及數(shù)據(jù)恢復(fù)時(shí)間點(diǎn),以進(jìn)行數(shù)據(jù)同步;如果不包含,則不進(jìn)行數(shù)據(jù)同步。

4、在緩存配置信息包含數(shù)據(jù)同步任務(wù)時(shí),finfocore系統(tǒng)根據(jù)所述標(biāo)識(shí)從stockdb數(shù)據(jù)庫(kù)中對(duì)應(yīng)的待同步數(shù)據(jù)庫(kù)表中,查詢創(chuàng)建時(shí)間大于數(shù)據(jù)恢復(fù)時(shí)間點(diǎn)的數(shù)據(jù)存放到list中(首次撈取)。其中,除首次撈取的撈取范圍為源數(shù)據(jù)庫(kù)中對(duì)應(yīng)的待同步數(shù)據(jù)庫(kù)表中,其創(chuàng)建時(shí)間晚于所述數(shù)據(jù)恢復(fù)時(shí)間點(diǎn)的所有數(shù)據(jù)外,其后每次撈取的撈取范圍為創(chuàng)建時(shí)間晚于上一次撈取的截止時(shí)間的所有數(shù)據(jù)。當(dāng)然,各次撈取的啟動(dòng)時(shí)機(jī)是在驅(qū)動(dòng)消息的控制下進(jìn)行的。

5、finfocore系統(tǒng)將list中的數(shù)據(jù)插入finfoproddb數(shù)據(jù)庫(kù)中對(duì)應(yīng)的數(shù)據(jù)庫(kù)表。如果待插入的數(shù)據(jù)已存在于finfoproddb數(shù)據(jù)庫(kù)對(duì)應(yīng)的數(shù)據(jù)庫(kù)表中,就忽略該數(shù)據(jù),如果不存,則進(jìn)行插入。

在drc同步數(shù)據(jù)出現(xiàn)異常,暫時(shí)無(wú)法恢復(fù)時(shí),通過(guò)本申請(qǐng)實(shí)例可以有效且及時(shí)地保障數(shù)據(jù)的同步,使得用戶在客戶端讀取資訊的時(shí)候可以正常看到最及時(shí)的信息,從而提升了用戶的體驗(yàn),也避免了用戶因沒看到最及時(shí)的資訊產(chǎn)生不必要的經(jīng)濟(jì)損失。另外,在drc出現(xiàn)消息丟失,導(dǎo)致資訊缺失時(shí)也可以考慮通過(guò)此機(jī)制恢復(fù)失去的資訊。

參考圖2所示,本申請(qǐng)實(shí)施例的異構(gòu)數(shù)據(jù)庫(kù)的數(shù)據(jù)同步裝置包括:

同步狀態(tài)檢測(cè)模塊21,用于在基于預(yù)設(shè)的第一數(shù)據(jù)同步機(jī)制,將源數(shù)據(jù)庫(kù)中預(yù)定范圍的數(shù)據(jù)同步至目標(biāo)數(shù)據(jù)庫(kù)的過(guò)程中,檢測(cè)所述第一數(shù)據(jù)同步機(jī)制的狀態(tài);

同步機(jī)制替換模塊22,用于當(dāng)所述第一數(shù)據(jù)同步機(jī)制的狀態(tài)異常時(shí),啟用第二數(shù)據(jù)同步機(jī)制,以將所述源數(shù)據(jù)庫(kù)中預(yù)定范圍的數(shù)據(jù)同步至所述目標(biāo)數(shù)據(jù)庫(kù)。

結(jié)合圖3所示,其中,所述同步機(jī)制替換模塊22包括:

任務(wù)接收子模塊221,用于接收分布式資源管理drm平臺(tái)推送的數(shù)據(jù)同步任務(wù);所述數(shù)據(jù)同步任務(wù)包括數(shù)據(jù)恢復(fù)時(shí)間點(diǎn)及所述源數(shù)據(jù)庫(kù)中的待同步數(shù)據(jù)庫(kù)表的標(biāo)識(shí);

數(shù)據(jù)同步子模塊222,用于根據(jù)所述待同步數(shù)據(jù)庫(kù)表的標(biāo)識(shí),從該待同步數(shù)據(jù)庫(kù)表中定時(shí)撈取,其創(chuàng)建時(shí)間點(diǎn)晚于所述數(shù)據(jù)恢復(fù)時(shí)間點(diǎn)的所有數(shù)據(jù)放入臨時(shí)列表,并將所述臨時(shí)列表中的數(shù)據(jù)插入所述目標(biāo)數(shù)據(jù)庫(kù)中對(duì)應(yīng)的數(shù)據(jù)庫(kù)表。

在本申請(qǐng)另一實(shí)施例中,所述同步機(jī)制替換模塊22還可以包括:

列表清空子模塊223,用于在所述數(shù)據(jù)同步子模塊將臨時(shí)列表中的數(shù)據(jù),插入所述目標(biāo)數(shù)據(jù)庫(kù)中對(duì)應(yīng)的數(shù)據(jù)庫(kù)表之后,清空所述臨時(shí)列表。

本申請(qǐng)實(shí)施例的異構(gòu)數(shù)據(jù)庫(kù)的數(shù)據(jù)同步裝置與上述本申請(qǐng)實(shí)施例的異構(gòu)數(shù)據(jù)庫(kù)的數(shù)據(jù)方法對(duì)應(yīng),因此,有關(guān)于本申請(qǐng)實(shí)施例的異構(gòu)數(shù)據(jù)庫(kù)的數(shù)據(jù)同步裝置中各模塊或子模塊的具體細(xì)節(jié)內(nèi)容,請(qǐng)參見本申請(qǐng)實(shí)施例的異構(gòu)數(shù)據(jù)庫(kù)的數(shù)據(jù)方法,在此不再贅述。

本申請(qǐng)實(shí)施例中,在基于預(yù)設(shè)的第一數(shù)據(jù)同步機(jī)制,將源數(shù)據(jù)庫(kù)中預(yù)定范圍的數(shù)據(jù)同步至目標(biāo)數(shù)據(jù)庫(kù)的過(guò)程中,檢測(cè)第一數(shù)據(jù)同步機(jī)制的狀態(tài);當(dāng)確認(rèn)第一數(shù)據(jù)同步機(jī)制的狀態(tài)異常時(shí),啟用第二數(shù)據(jù)同步機(jī)制,以將源數(shù)據(jù)庫(kù)中預(yù)定范圍的數(shù)據(jù)同步至目標(biāo)數(shù)據(jù)庫(kù),從而實(shí)現(xiàn)了在主用的第一數(shù)據(jù)同步機(jī)制故障期間,還可通過(guò)啟用第二數(shù)據(jù)同步機(jī)制,繼續(xù)將源數(shù)據(jù)庫(kù)中預(yù)定范圍的數(shù)據(jù)同步至目標(biāo)數(shù)據(jù)庫(kù)。

本領(lǐng)域技術(shù)人員還可以了解到本申請(qǐng)實(shí)施例列出的各種說(shuō)明性邏輯塊、單元和步驟可以通過(guò)硬件、軟件或兩者的結(jié)合來(lái)實(shí)現(xiàn)。至于是通過(guò)硬件還是軟件來(lái)實(shí)現(xiàn)取決于特定的應(yīng)用和整個(gè)系統(tǒng)的設(shè)計(jì)要求。本領(lǐng)域技術(shù)人員可以對(duì)于每種特定的應(yīng)用,可以使用各種方法實(shí)現(xiàn)所述的功能,但這種實(shí)現(xiàn)不應(yīng)被理解為超出本申請(qǐng)實(shí)施例保護(hù)的范圍。

本申請(qǐng)實(shí)施例中所描述的各種說(shuō)明性的邏輯塊,或單元都可以通過(guò)通用處理器,數(shù)字信號(hào)處理器,專用集成電路(asic),現(xiàn)場(chǎng)可編程門陣列或其它可編程邏輯裝置,離散門或晶體管邏輯,離散硬件部件,或上述任何組合的設(shè)計(jì)來(lái)實(shí)現(xiàn)或操作所描述的功能。通用處理器可以為微處理器,可選地,該通用處理器也可以為任何傳統(tǒng)的處理器、控制器、微控制器或狀態(tài)機(jī)。處理器也可以通過(guò)計(jì)算裝置的組合來(lái)實(shí)現(xiàn),例如數(shù)字信號(hào)處理器和微處理器,多個(gè)微處理器,一個(gè)或多個(gè)微處理器聯(lián)合一個(gè)數(shù)字信號(hào)處理器核,或任何其它類似的配置來(lái)實(shí)現(xiàn)。

本申請(qǐng)實(shí)施例中所描述的方法或算法的步驟可以直接嵌入硬件、處理器執(zhí)行的軟件模塊、或者這兩者的結(jié)合。軟件模塊可以存儲(chǔ)于ram存儲(chǔ)器、閃存、rom存儲(chǔ)器、eprom存儲(chǔ)器、eeprom存儲(chǔ)器、寄存器、硬盤、可移動(dòng)磁盤、cd-rom或本領(lǐng)域中其它任意形式的存儲(chǔ)媒介中。示例性地,存儲(chǔ)媒介可以與處理器連接,以使得處理器可以從存儲(chǔ)媒介中讀取信息,并可以向存儲(chǔ)媒介存寫信息??蛇x地,存儲(chǔ)媒介還可以集成到處理器中。處理器和存儲(chǔ)媒介可以設(shè)置于asic中,asic可以設(shè)置于用戶終端中??蛇x地,處理器和存儲(chǔ)媒介也可以設(shè)置于用戶終端中的不同的部件中。

在一個(gè)或多個(gè)示例性的設(shè)計(jì)中,本申請(qǐng)實(shí)施例所描述的上述功能可以在硬件、軟件、固件或這三者的任意組合來(lái)實(shí)現(xiàn)。如果在軟件中實(shí)現(xiàn),這些功能可以存儲(chǔ)與電腦可讀的媒介上,或以一個(gè)或多個(gè)指令或代碼形式傳輸于電腦可讀的媒介上。電腦可讀媒介包括電腦存儲(chǔ)媒介和便于使得讓電腦程序從一個(gè)地方轉(zhuǎn)移到其它地方的通信媒介。存儲(chǔ)媒介可以是任何通用或特殊電腦可以接入訪問(wèn)的可用媒體。例如,這樣的電腦可讀媒體可以包括但不限于ram、rom、eeprom、cd-rom或其它光盤存儲(chǔ)、磁盤存儲(chǔ)或其它磁性存儲(chǔ)裝置,或其它任何可以用于承載或存儲(chǔ)以指令或數(shù)據(jù)結(jié)構(gòu)和其它可被通用或特殊電腦、或通用或特殊處理器讀取形式的程序代碼的媒介。此外,任何連接都可以被適當(dāng)?shù)囟x為電腦可讀媒介,例如,如果軟件是從一個(gè)網(wǎng)站站點(diǎn)、服務(wù)器或其它遠(yuǎn)程資源通過(guò)一個(gè)同軸電纜、光纖電纜、雙絞線、數(shù)字用戶線(dsl)或以例如紅外、無(wú)線和微波等無(wú)線方式傳輸?shù)囊脖话谒x的電腦可讀媒介中。所述的碟片(disk)和磁盤(disc)包括壓縮磁盤、鐳射盤、光盤、dvd、軟盤和藍(lán)光光盤,磁盤通常以磁性復(fù)制數(shù)據(jù),而碟片通常以激光進(jìn)行光學(xué)復(fù)制數(shù)據(jù)。上述的組合也可以包含在電腦可讀媒介中。

以上所述的具體實(shí)施例,對(duì)本申請(qǐng)的目的、技術(shù)方案和有益效果進(jìn)行了進(jìn)一步詳細(xì)說(shuō)明,所應(yīng)理解的是,以上所述僅為本申請(qǐng)實(shí)施例的具體實(shí)施例而已,并不用于限定本申請(qǐng)的保護(hù)范圍,凡在本申請(qǐng)的精神和原則之內(nèi),所做的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本申請(qǐng)的保護(hù)范圍之內(nèi)。

當(dāng)前第1頁(yè)1 2 
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
封开县| 巴青县| 抚宁县| 呼伦贝尔市| 丹东市| 泾川县| 广河县| 万州区| 徐州市| 阜城县| 白朗县| 南投市| 藁城市| 惠来县| 河源市| 广平县| 绍兴县| 平凉市| 固阳县| 永泰县| 姚安县| 西乌珠穆沁旗| 长子县| 青浦区| 新宾| 樟树市| 华阴市| 高阳县| 浮梁县| 曲阜市| 社旗县| 大方县| 墨竹工卡县| 五台县| 化州市| 九龙县| 九龙城区| 筠连县| 阿瓦提县| 玉屏| 贵溪市|