專(zhuān)利名稱(chēng):一種實(shí)現(xiàn)數(shù)據(jù)復(fù)制的方法及系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本申請(qǐng)涉及數(shù)據(jù)庫(kù)管理技術(shù)領(lǐng)域,特別是指一種實(shí)現(xiàn)數(shù)據(jù)復(fù)制的方法及系統(tǒng)。
背景技術(shù):
為保持?jǐn)?shù)據(jù)的高可用性,一般的數(shù)據(jù)庫(kù)都有一定的數(shù)據(jù)冗余機(jī)制,比如參見(jiàn)圖1 所示,采用mysql的數(shù)據(jù)庫(kù)主主復(fù)制技術(shù)中,至少包括三臺(tái)服務(wù)器,即服務(wù)器A、服務(wù)器B和服務(wù)器C,也可以稱(chēng)為三個(gè)數(shù)據(jù)存儲(chǔ)設(shè)備。其中,服務(wù)器A與服務(wù)器B之間為主主復(fù)制關(guān)系, 服務(wù)器A和服務(wù)器B兩個(gè)服務(wù)器,與服務(wù)器C之間是主從復(fù)制關(guān)系。主主復(fù)制關(guān)系是指服務(wù)器A與服務(wù)器B之間是互為備份的關(guān)系,圖中示意出的數(shù)據(jù)插入更新終端可以包括多個(gè), 每個(gè)數(shù)據(jù)插入更新終端可以對(duì)服務(wù)器A和服務(wù)器B發(fā)送更新操作指令,即服務(wù)器A收到數(shù)據(jù)插入更新終端的更新操作指令后,如插入、修改、刪除等,將該更新操作指令保存在自身的執(zhí)行日志中,然后再將該日志發(fā)送給服務(wù)器B,服務(wù)器B再執(zhí)行日志,也即完成更新操作。 同時(shí),如果服務(wù)器B收到更新操作指令后,同樣按照上述方式執(zhí)行完更新操作后,同樣會(huì)將執(zhí)行的日志發(fā)送給服務(wù)器A。服務(wù)器C是服務(wù)器A和服務(wù)器B的從服務(wù)器,需要定期備份服務(wù)器A和服務(wù)器B的數(shù)據(jù)。由于服務(wù)器A和服務(wù)器B都可以接收更新操作指令,如果兩者接收到的更新操作指令有沖突,比如服務(wù)器A接收到刪除某記錄的操作的指令,而服務(wù)器B接收到修改該記錄的操作指令,當(dāng)服務(wù)器A執(zhí)行過(guò)程中,執(zhí)行的日志尚未發(fā)送給服務(wù)器B時(shí),服務(wù)器B收到修改該記錄的操作指令,已經(jīng)執(zhí)行了修改指令,在向服務(wù)器A發(fā)送執(zhí)行的日志時(shí),服務(wù)器A已經(jīng)刪除了該記錄,無(wú)法執(zhí)行修改操作,后續(xù)的操作也就都無(wú)法順利進(jìn)行。因此,系統(tǒng)容易產(chǎn)生不穩(wěn)定因素,日志重做出錯(cuò),會(huì)停止后續(xù)的所有的復(fù)制操作。
發(fā)明內(nèi)容
本申請(qǐng)?zhí)峁┮环N實(shí)現(xiàn)數(shù)據(jù)復(fù)制的系統(tǒng)及方法,用以解決現(xiàn)有技術(shù)中由于主主復(fù)制技術(shù)帶來(lái)系統(tǒng)不穩(wěn)定的問(wèn)題。本申請(qǐng)實(shí)施例提供的一種實(shí)現(xiàn)數(shù)據(jù)復(fù)制的系統(tǒng)包括第一數(shù)據(jù)存儲(chǔ)設(shè)備,用于接收數(shù)據(jù)插入更新終端發(fā)送的第一更新操作指令,其中含有需要更新的記錄的信息,并根據(jù)所述第一更新操作指令更新記錄;日志子系統(tǒng),用于接收所述數(shù)據(jù)插入更新終端發(fā)送的第二更新操作指令,其中包括需要更新的記錄的信息;根據(jù)需要更新的記錄的信息,在選定的日志代理服務(wù)器上進(jìn)行更新;根據(jù)需要更新的記錄的信息與第二數(shù)據(jù)存儲(chǔ)設(shè)備標(biāo)識(shí)的對(duì)應(yīng)關(guān)系,獲得所述需要更新的記錄的信息對(duì)應(yīng)的第二數(shù)據(jù)存儲(chǔ)設(shè)備標(biāo)識(shí),向所述第二數(shù)據(jù)存儲(chǔ)設(shè)備發(fā)送數(shù)據(jù)更新指令,其中含有所述需要更新的記錄的信息;第二數(shù)據(jù)存儲(chǔ)設(shè)備,用于根據(jù)所述數(shù)據(jù)更新指令,進(jìn)行數(shù)據(jù)更新。本申請(qǐng)實(shí)施例提供的一種實(shí)現(xiàn)數(shù)據(jù)復(fù)制的方法,包括數(shù)據(jù)插入更新終端向第一數(shù)據(jù)存儲(chǔ)設(shè)備發(fā)送第一更新操作指令,其中含有需要更
4新的記錄的信息,并向日志子系統(tǒng)發(fā)送第二更新操作指令,其中包括需要需要更新的記錄的信息;第一數(shù)據(jù)存儲(chǔ)設(shè)備根據(jù)所述第一更新操作指令更新記錄,且,日志子系統(tǒng)根據(jù)需要更新的記錄的信息,在選定的日志代理服務(wù)器上進(jìn)行更新; 根據(jù)需要更新的記錄的信息與第二數(shù)據(jù)存儲(chǔ)設(shè)備標(biāo)識(shí)的對(duì)應(yīng)關(guān)系,獲得所述需要更新的記錄的信息對(duì)應(yīng)的第二數(shù)據(jù)存儲(chǔ)設(shè)備標(biāo)識(shí),向所述第二數(shù)據(jù)存儲(chǔ)設(shè)備發(fā)送數(shù)據(jù)更新指令,其中含有所述需要更新的記錄的信息;第二數(shù)據(jù)存儲(chǔ)設(shè)備根據(jù)所述數(shù)據(jù)更新指令,進(jìn)行數(shù)據(jù)更新。本申請(qǐng)實(shí)施例中增加了一個(gè)日志子系統(tǒng),當(dāng)數(shù)據(jù)插入更新終端在向第一數(shù)據(jù)存儲(chǔ)設(shè)備發(fā)送第一更新操作指令時(shí),也向日志子系統(tǒng)發(fā)送第二更新操作指令,日志子系統(tǒng)根據(jù)第二更新操作指令在選定的日志代理服務(wù)器上進(jìn)行更新操作,同時(shí)所述選定的日志代理服務(wù)器確認(rèn)對(duì)應(yīng)的第二數(shù)據(jù)存儲(chǔ)設(shè)備,再向第二數(shù)據(jù)存儲(chǔ)設(shè)備發(fā)送相應(yīng)的數(shù)據(jù)更新指令,解決了現(xiàn)有技術(shù)中由于第一數(shù)據(jù)存儲(chǔ)設(shè)備和第二數(shù)據(jù)存儲(chǔ)設(shè)備之間采用互主主復(fù)制技術(shù)帶來(lái)系統(tǒng)不穩(wěn)定的問(wèn)題,由于通過(guò)日志子系統(tǒng)將第一數(shù)據(jù)存儲(chǔ)設(shè)備的更新的數(shù)據(jù)備份到第二數(shù)據(jù)存儲(chǔ)設(shè)備,在執(zhí)行過(guò)程中,第一數(shù)據(jù)存儲(chǔ)設(shè)備和第二數(shù)據(jù)存儲(chǔ)設(shè)備無(wú)相互依賴(lài),因此在提高系統(tǒng)穩(wěn)定性的同時(shí),還可以提高設(shè)備的性能。
圖1為現(xiàn)有技術(shù)中采用主主復(fù)制技術(shù)的數(shù)據(jù)復(fù)制的系統(tǒng)結(jié)構(gòu)示意圖;圖2為本申請(qǐng)實(shí)施例的數(shù)據(jù)復(fù)制的系統(tǒng)結(jié)構(gòu)示意圖;圖3為本申請(qǐng)實(shí)施例的數(shù)據(jù)復(fù)制的方法的流程示意圖;圖4為本申請(qǐng)實(shí)施例的需要更新的記錄的信息示意圖。
具體實(shí)施例方式在本申請(qǐng)?zhí)峁┑膶?shí)施例中,為了解決采用兩個(gè)互為備份的主主復(fù)制技術(shù)的數(shù)據(jù)存儲(chǔ)設(shè)備之間由于操作沖突可能引起的系統(tǒng)不穩(wěn)定問(wèn)題,增加了一個(gè)日志子系統(tǒng),當(dāng)數(shù)據(jù)插入更新終端在向第一數(shù)據(jù)存儲(chǔ)設(shè)備發(fā)送第一更新操作指令后,也向日志子系統(tǒng)發(fā)送第二更新操作指令,日志子系統(tǒng)根據(jù)第二更新操作指令,并結(jié)合所有日志代理服務(wù)器的負(fù)載情況, 選擇一臺(tái)日志代理服務(wù)器進(jìn)行更新操作,同時(shí)根據(jù)第二更新操作指令中包含的需要更新的記錄的信息,如信息ID,得到事先配置好的對(duì)應(yīng)的第二數(shù)據(jù)存儲(chǔ)設(shè)備的標(biāo)識(shí),再向第二數(shù)據(jù)存儲(chǔ)設(shè)備發(fā)送相應(yīng)的數(shù)據(jù)更新指令,從而完成將第一數(shù)據(jù)存儲(chǔ)設(shè)備的數(shù)據(jù)備份到第二數(shù)據(jù)存儲(chǔ)設(shè)備中。參見(jiàn)圖2所示,本申請(qǐng)實(shí)施例的系統(tǒng)包括數(shù)據(jù)插入更新終端21、第一數(shù)據(jù)存儲(chǔ)設(shè)備22和第二數(shù)據(jù)存儲(chǔ)設(shè)備23,以及日志子系統(tǒng)對(duì)。日志子系統(tǒng)M包括控制單元Ml以及多個(gè)日志代理服務(wù)器,如第一日志代理服務(wù)器M2、第二日志代理服務(wù)器M3以及第三日志代理服務(wù)器M4。在實(shí)際應(yīng)用過(guò)程中,第一數(shù)據(jù)存儲(chǔ)設(shè)備22,是一臺(tái)存貯服務(wù)器對(duì)外的標(biāo)準(zhǔn)接口服務(wù)器,代表最終的存貯服務(wù)器接受數(shù)據(jù)的插入、更新和刪除等操作,一般是與最終的存貯機(jī)制(如mysql)安裝在一臺(tái)服務(wù)器上,它第一時(shí)間接收數(shù)據(jù)插入更新終端發(fā)送的第一更新操作指令,其中含有需要更新的記錄的信息,并根據(jù)所述第一更新操作指令更新記錄;日志子系統(tǒng)M,用于接收所述數(shù)據(jù)插入更新終端21發(fā)送的第二更新操作指令, 其中包括需要更新的記錄的信息;根據(jù)日志子系統(tǒng)中所有日志代理服務(wù)器的負(fù)載情況,選定一臺(tái)合適的日志代理服務(wù)器,將包含需要更新的記錄的信息的第二更新操作指令同步提交到這臺(tái)選定的日志代理服務(wù)器,選定的日志代理服務(wù)器以更新操作日志的格式將接收到的需要更新的記錄的信息保存在日志代理服務(wù)器的復(fù)制日志中,供后期進(jìn)行異步復(fù)制操作使用;日志代理服務(wù)器的復(fù)制進(jìn)程取出更新操作日志,根據(jù)需要更新的記錄的信息,如信息 ID,得到事先配置好的對(duì)應(yīng)的第二數(shù)據(jù)存儲(chǔ)設(shè)備的標(biāo)識(shí),向所述第二數(shù)據(jù)存儲(chǔ)設(shè)備發(fā)送數(shù)據(jù)更新指令,其中含有所述需要更新的記錄的信息;第二數(shù)據(jù)存儲(chǔ)設(shè)備23,是一臺(tái)存貯服務(wù)器對(duì)外的標(biāo)準(zhǔn)接口服務(wù)器,代表最終的存貯服務(wù)器接受數(shù)據(jù)的插入、更新和刪除等操作,一般是與最終的存貯機(jī)制(如mysql)安裝在一臺(tái)服務(wù)器上,用于根據(jù)所述數(shù)據(jù)更新指令,進(jìn)行數(shù)據(jù)更新,相對(duì)于第一數(shù)據(jù)存儲(chǔ)設(shè)備, 因?yàn)榈诙?shù)據(jù)存儲(chǔ)設(shè)備上接受的數(shù)據(jù)更新操作是通過(guò)中間的復(fù)制日志異步操作完成的,所以不會(huì)這么及時(shí),但最終會(huì)與同一組的第一數(shù)據(jù)存儲(chǔ)設(shè)備上的數(shù)據(jù)保持一致。所述日志子系統(tǒng)M包括控制單元241和至少一個(gè)日志代理服務(wù)器,如第一日志代理服務(wù)器對(duì)2、第二日志代理服務(wù)器對(duì)3、第三日志代理服務(wù)器對(duì)4,其中,所述控制單元M1,用于接收所述數(shù)據(jù)插入更新終端發(fā)送的第二更新操作指令,其中包括需要更新的記錄的信息;根據(jù)日志子系統(tǒng)中所有日志代理服務(wù)器的負(fù)載情況,選定一臺(tái)合適的日志代理服務(wù)器,向選定的日志代理服務(wù)器發(fā)送第二更新操作指令,其中含有所述需要更新的記錄的信息;每個(gè)日志代理服務(wù)器,用于接收到所述第二更新操作指令后,利用所述需要更新的記錄的信息進(jìn)行更新操作;并且,根據(jù)第二更新操作指令中包含的需要更新的記錄的信息,如信息ID,得到事先配置好的對(duì)應(yīng)的第二數(shù)據(jù)存儲(chǔ)設(shè)備的標(biāo)識(shí),再向第二數(shù)據(jù)存儲(chǔ)設(shè)備發(fā)送相應(yīng)的數(shù)據(jù)更新指令,從而完成將第一數(shù)據(jù)存儲(chǔ)設(shè)備的數(shù)據(jù)備份到第二數(shù)據(jù)存儲(chǔ)設(shè)備中。數(shù)據(jù)插入更新終端21向第一數(shù)據(jù)存儲(chǔ)設(shè)備22發(fā)送第一更新操作指令,其中包括需要更新的記錄等信息,第一數(shù)據(jù)存儲(chǔ)設(shè)備22收到該更新操作指令后,更新相應(yīng)的記錄。 并且,數(shù)據(jù)插入更新終端21向日志子系統(tǒng)M發(fā)送第二更新操作指令,其中包括需要更新的記錄等。日志子系統(tǒng)M根據(jù)該更新操作指令,在選定的日志代理服務(wù)器上更新記錄。具體為控制單元241收到數(shù)據(jù)插入更新終端21發(fā)送的第二更新操作指令后,其中包括需要更新的記錄的信息;根據(jù)所有日志代理服務(wù)器的負(fù)載情況,選定一臺(tái)日志代理服務(wù)器發(fā)送所述第二更新操作指令,其中含有所述需要更新的記錄的信息;每個(gè)日志代理服務(wù)器,用于接收到所述更新操作指令后,利用所述需要更新的記錄的信息進(jìn)行更新操作;根據(jù)第二更新操作指令中包含的需要更新的記錄的信息,如信息 ID,得到事先配置好的對(duì)應(yīng)的第二數(shù)據(jù)存儲(chǔ)設(shè)備的標(biāo)識(shí),向所述第二數(shù)據(jù)存儲(chǔ)設(shè)備23發(fā)送數(shù)據(jù)更新指令,其中含有所述需要更新的記錄的信息。需要說(shuō)明的是,有多少臺(tái)第一數(shù)據(jù)存儲(chǔ)設(shè)備就有多少臺(tái)第二數(shù)據(jù)存儲(chǔ)設(shè)備,一臺(tái)第一數(shù)據(jù)存儲(chǔ)設(shè)備與一臺(tái)第二數(shù)據(jù)存儲(chǔ)設(shè)備共同組成一組在邏輯上存儲(chǔ)相同內(nèi)容的存儲(chǔ)組,在整體系統(tǒng)中,視存儲(chǔ)的規(guī)模,會(huì)有一到多臺(tái)數(shù)據(jù)存儲(chǔ)設(shè)備組。參見(jiàn)圖3所示,本申請(qǐng)實(shí)施例的一種實(shí)現(xiàn)數(shù)據(jù)復(fù)制的方法具體包括以下步驟步驟301 數(shù)據(jù)插入更新終端向第一數(shù)據(jù)存儲(chǔ)設(shè)備發(fā)送第一更新操作指令,其中含有需要更新的記錄的信息。步驟302 數(shù)據(jù)插入更新終端向日志子系統(tǒng)發(fā)送第二更新操作指令,其中包括需要更新的記錄的信息。步驟303 收到第一更新操作指令的第一數(shù)據(jù)存儲(chǔ)設(shè)備,根據(jù)所述第一更新操作指令執(zhí)行更新操作。第一數(shù)據(jù)存儲(chǔ)設(shè)備保存需要更新的記錄的信息。并且,可以以更新操作日志的格式將所述需要更新的記錄的信息保存。比如更新操作日志的格式可以為“時(shí)間戳+信息ID+KVS”,其中,時(shí)間戳為收到第一更新操作指令時(shí)取得的當(dāng)前系統(tǒng)時(shí)間的整型表示(精度為毫秒級(jí)),信息ID為指定信息的唯一標(biāo)識(shí),在信息生成時(shí)唯一確定,不再更改,KVS是指信息更新涉及的具體字段名稱(chēng)和字段的新值的列表,是一種信息表示的格式,就是健值對(duì)的列表組合(Key-Value IiSt) 0步驟304 日志子系統(tǒng)根據(jù)當(dāng)前運(yùn)行中的日志代理服務(wù)器的負(fù)載情況選擇一臺(tái)合適的日志代理服務(wù)器,將需要更新的記錄信息提交給這臺(tái)日志代理服務(wù)器進(jìn)行處理。相應(yīng)的日志代理服務(wù)器在接收到需要更新的記錄信息后,以更新操作日志的格式保存在日志代理服務(wù)器的復(fù)制日志中供后期進(jìn)行異步復(fù)制操作使用。比如更新操作日志的格式為“時(shí)間戳+信息ID+IP+KVS ”,更新操作指令格式可以為“時(shí)間戳+信息ID+KVS”,其中,時(shí)間戳為收到第二更新操作指令時(shí)取得的當(dāng)前系統(tǒng)時(shí)間的整型表示(精度為毫秒級(jí)),信息ID為指定信息的唯一標(biāo)識(shí),在信息生成時(shí)唯一確定,不再更改,KVS是指信息更新涉及的具體字段名稱(chēng)和字段的新值的列表,IP地址為通過(guò)信息 ID得到的事先配置好的對(duì)應(yīng)的第二數(shù)據(jù)存儲(chǔ)設(shè)備的標(biāo)識(shí),用于標(biāo)志該復(fù)制請(qǐng)求最終需要發(fā)送到的第二數(shù)據(jù)存儲(chǔ)設(shè)備。第二數(shù)據(jù)存儲(chǔ)設(shè)備標(biāo)識(shí)可以為一個(gè)標(biāo)準(zhǔn)的IP的地址,同時(shí)直接用于標(biāo)識(shí)第二數(shù)據(jù)存儲(chǔ)設(shè)備所在的位置。步驟305 日志代理服務(wù)器的復(fù)制進(jìn)程取出更新操作日志,獲得需要更新的目標(biāo)第二數(shù)據(jù)存儲(chǔ)設(shè)備標(biāo)識(shí),向所述第二數(shù)據(jù)存儲(chǔ)設(shè)備發(fā)送數(shù)據(jù)更新指令,其中含有所述需要更新的記錄的信息,其中,所述需要更新的信息ID對(duì)應(yīng)的第二數(shù)據(jù)存儲(chǔ)設(shè)備標(biāo)識(shí)是根據(jù)在生成復(fù)制日志時(shí)事先確定的。這里,每個(gè)日志代理服務(wù)器內(nèi)部都有并行、異步的日志執(zhí)行機(jī)制,快速將需要復(fù)制的數(shù)據(jù)更新指令提交到相應(yīng)的第二數(shù)據(jù)存儲(chǔ)設(shè)備中。步驟306 第二數(shù)據(jù)存儲(chǔ)設(shè)備根據(jù)所述數(shù)據(jù)更新指令,進(jìn)行數(shù)據(jù)更新。步驟301和步驟302可以并行執(zhí)行,也可以先后執(zhí)行。這里,更新操作包括刪除、修改或添加的記錄的信息。而且,所述第一更新操作指令和所述第二更新操作指令為僅插入且不覆蓋原記錄的操作指令。這也就說(shuō)是,每個(gè)需要更新的記錄的信息可以通過(guò)一個(gè)插入記錄表示,即每個(gè)需要更新的記錄的信息包括需要插入的字段的信息,以及時(shí)間戳。這里,時(shí)間戳可以為時(shí)間信息,也可以是用于標(biāo)識(shí)先后順序的版本信息。如果日志子系統(tǒng)需要發(fā)送給第二數(shù)據(jù)存儲(chǔ)設(shè)備的數(shù)據(jù)比較多,也就是數(shù)據(jù)更新指令可能會(huì)有多個(gè),這些數(shù)據(jù)更新指令因此可以是串行的,也可以是并行執(zhí)行的。在并行執(zhí)行過(guò)程中,數(shù)據(jù)更新指令中每個(gè)需要更新的記錄都對(duì)應(yīng)一個(gè)時(shí)間戳。如圖4所示,需要更新的記錄中可以包括一個(gè)或多個(gè)字段,可以為每個(gè)字段變換不同的時(shí)間戳,不管是只有一個(gè)字段,還是多于一個(gè)字段,在系統(tǒng)中,指示只插入必要的數(shù)據(jù),也就是疊加數(shù)據(jù)。讀取數(shù)據(jù)時(shí),默認(rèn)只讀取時(shí)間最近的各字段值,也就是版本最新的各字段值,在邏輯上,讀取的內(nèi)容,如圖4中的虛箭頭線(xiàn)串起來(lái)的最新記錄。在本申請(qǐng)實(shí)施例中,數(shù)據(jù)插入更新終端在向第一數(shù)據(jù)存儲(chǔ)設(shè)備發(fā)送第一更新操作指令時(shí),也向日志子系統(tǒng)發(fā)送第二更新操作指令,日志子系統(tǒng)根據(jù)第二更新操作指令在選定的日志代理服務(wù)器上進(jìn)行更新操作,同時(shí)根據(jù)第二更新操作指令中包含的需要更新的記錄的信息,如信息ID,得到事先配置好的對(duì)應(yīng)的第二數(shù)據(jù)存儲(chǔ)設(shè)備的標(biāo)識(shí),再向第二數(shù)據(jù)存儲(chǔ)設(shè)備發(fā)送相應(yīng)的數(shù)據(jù)更新指令。由于通過(guò)日志子系統(tǒng)將第一數(shù)據(jù)存儲(chǔ)設(shè)備的更新的數(shù)據(jù)備份到第二數(shù)據(jù)存儲(chǔ)設(shè)備,在執(zhí)行過(guò)程中,不影響第一數(shù)據(jù)存儲(chǔ)設(shè)備的工作,因此在提高系統(tǒng)穩(wěn)定性的同時(shí),還可以提高第一數(shù)據(jù)存儲(chǔ)設(shè)備的性能。由于日志子系統(tǒng)獨(dú)立出來(lái),第一數(shù)據(jù)存儲(chǔ)設(shè)備和第二數(shù)據(jù)存儲(chǔ)設(shè)備無(wú)相互依賴(lài), 日志子系統(tǒng)可以并行執(zhí)行后續(xù)同步操作,以提高系統(tǒng)的穩(wěn)定性,因?yàn)橛袝r(shí)間戳標(biāo)準(zhǔn),數(shù)據(jù)的復(fù)制的前后依賴(lài)關(guān)系也被消息,在部分?jǐn)?shù)據(jù)復(fù)制失敗的情況下,也不會(huì)對(duì)復(fù)制的整體進(jìn)度產(chǎn)生大的影響。而且,本申請(qǐng)實(shí)施例還解決為保持?jǐn)?shù)據(jù)高可用性,采用基于數(shù)據(jù)庫(kù)主主復(fù)制等復(fù)制技術(shù)帶來(lái)的性能損失嚴(yán)重的問(wèn)題。顯然,本領(lǐng)域的技術(shù)人員可以對(duì)本申請(qǐng)進(jìn)行各種改動(dòng)和變型而不脫離本申請(qǐng)的精神和范圍。這樣,倘若本申請(qǐng)的這些修改和變型屬于本申請(qǐng)權(quán)利要求及其等同技術(shù)的范圍之內(nèi),則本申請(qǐng)也意圖包含這些改動(dòng)和變型在內(nèi)。
權(quán)利要求
1.一種實(shí)現(xiàn)數(shù)據(jù)復(fù)制的系統(tǒng),其特征在于,該系統(tǒng)包括第一數(shù)據(jù)存儲(chǔ)設(shè)備,用于接收數(shù)據(jù)插入更新終端發(fā)送的第一更新操作指令,其中含有需要更新的記錄的信息,并根據(jù)所述第一更新操作指令更新記錄;日志子系統(tǒng),用于接收所述數(shù)據(jù)插入更新終端發(fā)送的第二更新操作指令,其中包括需要更新的記錄的信息;根據(jù)需要更新的記錄的信息,在選定的日志代理服務(wù)器上進(jìn)行更新; 根據(jù)需要更新的記錄的信息與第二數(shù)據(jù)存儲(chǔ)設(shè)備標(biāo)識(shí)的對(duì)應(yīng)關(guān)系,獲得所述需要更新的記錄的信息對(duì)應(yīng)的第二數(shù)據(jù)存儲(chǔ)設(shè)備標(biāo)識(shí),向所述第二數(shù)據(jù)存儲(chǔ)設(shè)備發(fā)送數(shù)據(jù)更新指令,其中含有所述需要更新的記錄的信息;第二數(shù)據(jù)存儲(chǔ)設(shè)備,用于根據(jù)所述數(shù)據(jù)更新指令,進(jìn)行數(shù)據(jù)更新。
2.根據(jù)權(quán)利要求1所述的系統(tǒng),其特征在于,所述日志子系統(tǒng)包括控制單元和至少一個(gè)日志代理服務(wù)器,其中,所述控制單元,用于接收所述數(shù)據(jù)插入更新終端發(fā)送的第二更新操作指令,其中包括需要更新的記錄的信息;根據(jù)日志代理服務(wù)器的負(fù)載情況選定一臺(tái)日志代理服務(wù)器,向選定的日志代理服務(wù)器發(fā)送第二更新操作指令,其中含有所述需要更新的記錄的信息;每個(gè)日志代理服務(wù)器,用于接收到所述第二更新操作指令后,利用所述需要更新的記錄的信息進(jìn)行更新操作;根據(jù)需要更新的記錄的信息與第二數(shù)據(jù)存儲(chǔ)設(shè)備標(biāo)識(shí)的對(duì)應(yīng)關(guān)系,獲得所述需要更新的記錄的信息對(duì)應(yīng)的第二數(shù)據(jù)存儲(chǔ)設(shè)備標(biāo)識(shí),向所述第二數(shù)據(jù)存儲(chǔ)設(shè)備發(fā)送數(shù)據(jù)更新指令,其中含有所述需要更新的記錄的信息。
3.根據(jù)權(quán)利要求1所述的系統(tǒng),其特征在于,所述需要更新的記錄的信息包括刪除、 修改或添加的記錄的信息。
4.根據(jù)權(quán)利要求1所述的系統(tǒng),其特征在于,所述需要更新的記錄的信息包括需要插入的字段的信息、信息ID以及時(shí)間戳。
5.根據(jù)權(quán)利要求4所述的系統(tǒng),其特征在于,所述第一更新操作指令和所述第二更新操作指令為僅插入且不覆蓋原記錄的操作指令。
6.根據(jù)權(quán)利要求4所述的系統(tǒng),其特征在于,所述時(shí)間戳為時(shí)間信息或,用于標(biāo)識(shí)先后順序的版本信息。
7.一種實(shí)現(xiàn)數(shù)據(jù)復(fù)制的方法,其特征在于,該方法包括以下步驟數(shù)據(jù)插入更新終端向第一數(shù)據(jù)存儲(chǔ)設(shè)備發(fā)送第一更新操作指令,其中含有需要更新的記錄的信息,并向日志子系統(tǒng)發(fā)送第二更新操作指令,其中包括需要需要更新的記錄的信息;第一數(shù)據(jù)存儲(chǔ)設(shè)備根據(jù)所述第一更新操作指令更新記錄,且,日志子系統(tǒng)根據(jù)需要更新的記錄的信息,在選定的日志代理服務(wù)器上進(jìn)行更新;根據(jù)需要更新的記錄的信息與第二數(shù)據(jù)存儲(chǔ)設(shè)備標(biāo)識(shí)的對(duì)應(yīng)關(guān)系,獲得所述需要更新的記錄的信息對(duì)應(yīng)的第二數(shù)據(jù)存儲(chǔ)設(shè)備標(biāo)識(shí),向所述第二數(shù)據(jù)存儲(chǔ)設(shè)備發(fā)送數(shù)據(jù)更新指令,其中含有所述需要更新的記錄的信息;第二數(shù)據(jù)存儲(chǔ)設(shè)備根據(jù)所述數(shù)據(jù)更新指令,進(jìn)行數(shù)據(jù)更新。
8.根據(jù)權(quán)利要求7所述的方法,其特征在于,所述需要更新的記錄的信息包括刪除、 修改或添加的記錄的信息。
9.根據(jù)權(quán)利要求7所述的方法,其特征在于,所述需要更新的記錄的信息包括需要插入的字段的信息、信息ID以及時(shí)間戳。
10.根據(jù)權(quán)利要求9所述的方法,其特征在于,所述第一更新操作指令和所述第二更新操作指令為僅插入且不覆蓋原記錄的操作指令。
11.根據(jù)權(quán)利要求9所述的方法,其特征在于,所述時(shí)間戳為時(shí)間信息或,用于標(biāo)識(shí)先后順序的版本信息。
全文摘要
本申請(qǐng)公開(kāi)了一種實(shí)現(xiàn)數(shù)據(jù)復(fù)制的系統(tǒng)及方法,解決了現(xiàn)有技術(shù)中由于主主復(fù)制技術(shù)帶來(lái)系統(tǒng)不穩(wěn)定的問(wèn)題。該系統(tǒng)包括第一數(shù)據(jù)存儲(chǔ)設(shè)備,用于接收數(shù)據(jù)插入更新終端發(fā)送的第一更新操作指令,其中含有需要更新的記錄的信息,并根據(jù)所述第一更新操作指令更新記錄;日志子系統(tǒng),用于接收數(shù)據(jù)插入更新終端發(fā)送的第二更新操作指令,其中包括需要更新的記錄的信息,對(duì)選定的日志代理服務(wù)器進(jìn)行更新;根據(jù)需要更新的記錄的信息與第二數(shù)據(jù)存儲(chǔ)設(shè)備標(biāo)識(shí)的對(duì)應(yīng)關(guān)系,獲得對(duì)應(yīng)的第二數(shù)據(jù)存儲(chǔ)設(shè)備標(biāo)識(shí),向所述第二數(shù)據(jù)存儲(chǔ)設(shè)備發(fā)送數(shù)據(jù)更新指令,其中含有所述需要更新的記錄的信息;第二數(shù)據(jù)存儲(chǔ)設(shè)備,用于根據(jù)所述數(shù)據(jù)更新指令,進(jìn)行數(shù)據(jù)更新。
文檔編號(hào)G06F17/30GK102279857SQ20101020508
公開(kāi)日2011年12月14日 申請(qǐng)日期2010年6月11日 優(yōu)先權(quán)日2010年6月11日
發(fā)明者全鑫, 常國(guó)斌, 張宋景, 朱明君, 李翀, 覃健祥 申請(qǐng)人:阿里巴巴集團(tuán)控股有限公司