專利名稱:一種數(shù)據(jù)庫系統(tǒng)及其數(shù)據(jù)同步方法
技術領域:
本發(fā)明涉及數(shù)據(jù)庫技術領域,特別涉及一種數(shù)據(jù)庫系統(tǒng)及其數(shù)據(jù)同步方法。
背景技術:
數(shù)據(jù)庫系統(tǒng)通常采用一主多備實現(xiàn)高可用性。備機在建立時先從主機全量同步所有數(shù)據(jù),隨后增量地同步redo日志,并進行回放,從而讓備機與主機保持數(shù)據(jù)的一致;主機有數(shù)據(jù)變化時,會產(chǎn)生redo日志,因此redo日志可以看成是一個連續(xù)不斷的數(shù)據(jù)流,從主機流向備機。備機需要的開始點由redo的ID來標識,通常稱為DCN (database changenumber),任何一次數(shù)據(jù)變化都有唯一的DCN標識。主機的redo日志有大小限制,隨著舊的redo日志將被覆蓋,這可能導致太慢的備機跟不上,而需要觸發(fā)全量同步,或復制失效。如果有多臺備機,則主機需要同時向所有備機發(fā)送redo日志。圖1a是現(xiàn)有數(shù)據(jù)庫系統(tǒng)的一種網(wǎng)絡拓撲示意圖,其采用一主多備的實現(xiàn)方案,所有備機直接連接到主機,由主機向所有備機連續(xù)發(fā)送redo日志,實現(xiàn)增量同步。圖1b是現(xiàn)有數(shù)據(jù)庫系統(tǒng)的另一種網(wǎng)絡拓撲示意圖,所有備機連接到一臺中轉(zhuǎn)備機,中轉(zhuǎn)備機再連接到主機,redo日志自上而下發(fā)送,實現(xiàn)增量同步。上述兩種現(xiàn)有方案的共同問題在于,如果備機與復制源之間的網(wǎng)絡不穩(wěn)定,或復制源不可用,則該備機無法復制新數(shù)據(jù)。另外,當主機作為單一的復制源,則其負載將與備機數(shù)量成正比,影響主機的性能,進而影響整個集群的數(shù)據(jù)一致性和性能;當設置中轉(zhuǎn)備機時,redo日志需要中轉(zhuǎn)才能復制到葉子備機,時延加長,也會影響整個集群的數(shù)據(jù)一致性和性能。
發(fā)明內(nèi)容
(一)要解決的技術問題本發(fā)明要解決的技術問題是:如何提供一種數(shù)據(jù)庫系統(tǒng)及其數(shù)據(jù)同步方法,以增強數(shù)據(jù)庫系統(tǒng)中數(shù)據(jù)同步的可靠性,減輕主機的負載,進而提高數(shù)據(jù)庫系統(tǒng)的數(shù)據(jù)一致性和性能。(二)技術方案為解決上述技術問題,本發(fā)明第一方面提供一種數(shù)據(jù)庫系統(tǒng),包括:主機,以及和所述主機連接的備機;所述備機用于從所述主機復制數(shù)據(jù),并且當所述備機無法從所述主機復制數(shù)據(jù)時,按照預定策略選擇連接其他備機,并從被連接的備機復制數(shù)據(jù)。在第一方面的第一種可能的實現(xiàn)方式中,所述主機上維護有主路由表,所述主路由表包含至少一個表項,每個所述表項對應于一個備機,且每個所述表項包括該表項對應的備機的地址,以及用于標記該表項對應的備機可供其他備機復制數(shù)據(jù)范圍的最小數(shù)據(jù)庫變化標識碼DCN和最大DCN。在第一方面的第二種可能的實現(xiàn)方式中,每個所述表項中還包括以下信息中的一種或多種:用于標識該表項對應的備機的負載情況的負載指數(shù)、用于標識該表項對應的備機是否可用的可用標識和該表項對應的備機的路由信息版本號。在第一方面的第三種可能的實現(xiàn)方式中,所述備機上維護有所述主路由表對應的本地路由表;所述備機具體用于,當其無法從所述主機復制數(shù)據(jù)時,根據(jù)所述本地路由表選擇連接其他備機,并從被連接的備機復制數(shù)據(jù)。在第一方面的第四種可能的實現(xiàn)方式中,所述備機根據(jù)所述本地路由表選擇連接其他備機時,被選擇的備機滿足以下條件:被選擇的備機的最小DCN〈=所需DCN〈=被選擇的備機的最大DCN ;其中,所需DCN為發(fā)起連接的備機上最大DCN加I后的數(shù)值。在第一方面的第五種可能的實現(xiàn)方式中,所述備機根據(jù)所述本地路由表選擇連接其他備機時,被選擇的備機還滿足以下條件中的一項或多項:被選擇的備機的可用標識為可連接;被選擇的備機與發(fā)起連接的備機處于同一網(wǎng)段;被選擇的備機是可供發(fā)起連接的備機選擇的備機中負載指數(shù)最低的;被選擇的備機是可供發(fā)起連接的備機選擇的備機中最大DCN最大的。在第一方面的第六種可能的實現(xiàn)方式中,所述備機還用于定期將自身的最小DCN、最大DCN和負載指數(shù)上報給所述主機,以供所述主機更新所述主路由表中相應的表項;所述備機定期根據(jù)更新后的主路由表刷新自身的本地路由表。在第一方面的第七種可能的實現(xiàn)方式中,當所述備機無法連接所述主機時,所述備機還用于將自身的最小DCN、最大DCN和負載指數(shù)上報給其所連接的其他備機以供其所連接的其他備機更新自身的本地路由表,并根據(jù)其所連接的其他備機的本地路由表刷新自身的本地路由表;當所述備機連接所述主機時,所述備機還用于將自身的本地路由表上報給所述主機,以供所述主機更新無法與自己連接的備機對應的所述主路由表中的表項。在第一方面的第八種可能的實現(xiàn)方式中,所述備機無法從所述主機復制數(shù)據(jù),具體包括:所述備機無法連接所述主機;或者,所述備機發(fā)現(xiàn)所述主機上沒有其所需復制的數(shù)據(jù);或者,所述備機發(fā)現(xiàn)所述主機的負載達到預定上限。在第一方面的第九種可能的實現(xiàn)方式中,所述備機從所述主機或者被連接的其他備機上復制的數(shù)據(jù)為所述主機的增量數(shù)據(jù)。本發(fā)明第二方面還一種數(shù)據(jù)同步方法,其包括步驟:備機與其所在數(shù)據(jù)庫系統(tǒng)中的主機建立通信連接;當所述備機無法從所述主機復制數(shù)據(jù)時,所述備機按照預定策略選擇連接到所述數(shù)據(jù)庫系統(tǒng)中的其他備機,并從被連接的備機復制數(shù)據(jù)。在第二方面的第一種可能的實現(xiàn)方式中,在所述備機與其所在數(shù)據(jù)庫系統(tǒng)中的主機建立通信連接之后,還包括:所述備機定期將自身的最小DCN、最大DCN和負載指數(shù)上報給所述主機,以使所述主機根據(jù)所述數(shù)據(jù)庫系統(tǒng)中各個備機的最小DCN、最大DCN和負載指數(shù)維護一個主路由表,并將所述主路由表下發(fā)給所述各個備機;其中,所述主路由表對應每個所述備機記錄一個表項;所述表項中記錄有用于供所述主機連接當前備機的備機地址,以及所述最小DCN、最大DCN和負載指數(shù);所述最小DCN和最大DCN用于標記當前備機可供其他備機復制數(shù)據(jù)范圍;所述負載指數(shù)用于標識當前備機負載情況;所述備機生成對應所述主路由表的本地路由表,并根據(jù)所述主機下發(fā)的主路由表刷新所述本地路由表。在第二方面的第二種可能的實現(xiàn)方式中,當所述備機出現(xiàn)以下情況時,所述備機判定其自身無法從所述主機復制數(shù)據(jù):所述備機無法連接所述主機;或者,所述備機發(fā)現(xiàn)所述主機上沒有其所需復制的數(shù)據(jù);或者,所述備機發(fā)現(xiàn)所述主機的負載達到預定上限。在第二方面的第三種可能的實現(xiàn)方式中,所述備機按照預定策略選擇連接到所述數(shù)據(jù)庫系統(tǒng)中的其他備機,具體包括:所述備機根據(jù)所述本地路由表選擇其他備機;所述備機基于點對點通信協(xié)議連接被選擇的備機。在第二方面的第四種可能的實現(xiàn)方式中,當所述備機無法連接所述主機時,所述備機還將自身的最小DCN、最大DCN和負載指數(shù)上報給其所連接的其他備機,以供其所連接的其他備機更新自身的本地路由表;當所述備機連接所述主機時,所述備機還用于將自身的本地路由表上報給所述主機,以供所述主機更新無法與自己連接的備機對應的所述主路由表中的表項。在第二方面的第五種可能的實現(xiàn)方式中,當所述備機無法連接所述主機時,所述備機還根據(jù)其所連接的其他備機的本地路由表刷新自身的本地路由表。在第二方面的第六種可能的實現(xiàn)方式中,所述備機從所述主機或者被連接的其他備機上復制的數(shù)據(jù)為所述主機的增量數(shù)據(jù)。(三)有益效果本發(fā)明所述數(shù)據(jù)庫系統(tǒng)及其數(shù)據(jù)同步方法,當備機無法直接以主機作為復制源是,其可選擇合適的其他備機作為復制源,從而克服了現(xiàn)有數(shù)據(jù)庫系統(tǒng)只將主機作為復制源導致的復制源單一,整個集群的數(shù)據(jù)一致性和性能較差的問題,有效提高了數(shù)據(jù)庫系統(tǒng)的數(shù)據(jù)一致性和性能。
圖1a是現(xiàn)有數(shù)據(jù)庫系統(tǒng)的一種網(wǎng)絡拓撲示意圖;圖1b是現(xiàn)有數(shù)據(jù)庫系統(tǒng)的另一種網(wǎng)絡拓撲不意圖;圖2是本發(fā)明實施例1的數(shù)據(jù)庫系統(tǒng)示意圖;圖3是本發(fā)明實施例1所述主機的硬件結(jié)構(gòu)示意;圖4是本發(fā)明實施例2所述數(shù)據(jù)同步方法的流程圖;圖5a至5d是本發(fā)明實施例2所述數(shù)據(jù)同步方法實施過程示意圖。
具體實施例方式下面結(jié)合附圖和實施例,對本發(fā)明的具體實施方式
作進一步詳細描述。以下實施例用于說明本發(fā)明,但不用來限制本發(fā)明的范圍。在本發(fā)明的數(shù)據(jù)庫系統(tǒng)中,備機除了連接到主機外,還可以連接到其他備機,并從被連接的其他備機上復制數(shù)據(jù),從而克服現(xiàn)有數(shù)據(jù)庫系統(tǒng)復制源單一的問題。為簡單起見,以下僅以增量數(shù)據(jù)復制過程為例說明本發(fā)明的數(shù)據(jù)庫系統(tǒng)及其數(shù)據(jù)同步方法,但是,本申請數(shù)據(jù)庫系統(tǒng)及其數(shù)據(jù)同步方法并不局限于增量數(shù)據(jù)復制過程,其同樣可以適用于全量數(shù)據(jù)復制過程。實施例1圖2是本發(fā)明實施例1的數(shù)據(jù)庫系統(tǒng)示意圖,如圖2所示,所述數(shù)據(jù)庫系統(tǒng),包括:主機100,以及和所述主機100連接的多個備機200。其中,所述備機200用于從所述主機100復制數(shù)據(jù),并且當所述備機200無法從所述主機100復制數(shù)據(jù)時,所述備機200還用于按照預定策略選擇連接到其他備機200,并從被連接的備機200復制數(shù)據(jù)。所述主機100上維護有主路由表101,所述主路由表101對應每個所述備機記錄一個表項。所述表項中記錄有當前備機200的備機地址、最小DCN(Database Change Number,數(shù)據(jù)庫變化的唯一標識)、最大DCN ;另外,所述表項中還可以記錄有當如備機200的負載指數(shù)、可用標識和版本號等信息。下面表I是主路由表101的示例,其中,該主路由表101中各字段含義如下:備機地址:唯一標識備機的IP和端口號,或其它可供連接的信息,用于供所述主機連接當前備機;最小DCN:備機上保留redo log (數(shù)據(jù)庫數(shù)據(jù)變化的記錄日志,回放該日志可以重現(xiàn)修改)的最小DCN ;最大D CN:備機上保留redo log的最大DCN,與最小DCN形成的范圍,表示可供其它備機復制的red o log的范圍;負載指數(shù):備機上的負載情況,數(shù)值越大,意味著該備機負載越高;可用標識:備機是否仍然可連接,YES表示可連接,NO表示不可連接路由版本號:備機路由信息的版本號,數(shù)值越大,意味著越新,通常用于備機間交換本地路由表信息所用。其中備機地址、最小DCN和最大DCN通常為必備字段,其它字段為視具體系統(tǒng)實現(xiàn)的可選字段。表I主路由表示例
權利要求
1.一種數(shù)據(jù)庫系統(tǒng),包括:主機,以及和所述主機連接的備機; 其特征在于,所述備機用于從所述主機復制數(shù)據(jù),并且當所述備機無法從所述主機復制數(shù)據(jù)時,按照預定策略選擇連接其他備機,并從被連接的備機復制數(shù)據(jù)。
2.如權利要求1所述的數(shù)據(jù)庫系統(tǒng),其特征在于,所述主機上維護有主路由表,所述主路由表包含至少一個表項,每個所述表項對應于一個備機,且每個所述表項包括該表項對應的備機的地址,以及用于標記該表項對應的備機可供其他備機復制數(shù)據(jù)范圍的最小數(shù)據(jù)庫變化標識碼DCN和最大DCN。
3.如權利要求2所述的數(shù)據(jù)庫系統(tǒng),其特征在于,每個所述表項中還包括以下信息中的一種或多種:用于標識該表項對應的備機的負載情況的負載指數(shù)、用于標識該表項對應的備機是否可用的可用標識和該表項對應的備機的路由信息版本號。
4.如權利要求2或3所述的數(shù)據(jù)庫系統(tǒng),其特征在于,所述備機上維護有所述主路由表對應的本地路由表; 所述備機具體用于,當所述備機無法從所述主機復制數(shù)據(jù)時根據(jù)所述本地路由表選擇連接其他備機,并從被連接的備機復制數(shù)據(jù)。
5.如權利要求4所述的數(shù)據(jù)庫系統(tǒng),其特征在于,所述備機根據(jù)所述本地路由表選擇連接其他備機時,被選擇的備機滿足以下條件: 被選擇的備機的最小DCN〈=所需DCN〈=被選擇的備機的最大DCN ; 其中,所需DCN為發(fā)起連接的備機上最大DCN加I后的數(shù)值。
6.如權利要求5所述的數(shù)據(jù)庫系統(tǒng),其特征在于,所述備機根據(jù)所述本地路由表選擇連接其他備機時,被選擇的備機還滿足以下條件中的一項或多項: 被選擇的備機的可用標識為可連接; 被選擇的備機與發(fā)起連接的備機處于同一網(wǎng)段; 被選擇的備機是可供發(fā)起連接的備機選擇的備機中負載指數(shù)最低的; 被選擇的備機是可供發(fā)起連接的備機選擇的備機中最大DCN最大的。
7.如權利要求4所述的數(shù)據(jù)庫系統(tǒng),其特征在于,所述備機還用于定期將自身的最小DCN、最大DCN和負載指數(shù)上報給所述主機,以供所述主機更新所述主路由表中相應的表項; 所述備機定期根據(jù)更新后的主路由表刷新自身的本地路由表。
8.如權利要求7所述的數(shù)據(jù)庫系統(tǒng),其特征在于, 當所述備機無法連接所述主機時,所述備機還用于將自身的最小DCN、最大DCN和負載指數(shù)上報給其所連接的其他備機以供其所連接的其他備機更新自身的本地路由表,并根據(jù)其所連接的其他備機的本地路由表刷新自身的本地路由表; 當所述備機連接所述主機時,所述備機還用于將自身的本地路由表上報給所述主機,以供所述主機更新無法與自己連接的備機對應的所述主路由表中的表項。
9.如權利要求1-8任一項所述的數(shù)據(jù)庫系統(tǒng),其特征在于,所述備機無法從所述主機復制數(shù)據(jù),具體包括:所述備機無法連接所述主機;或者,所述備機發(fā)現(xiàn)所述主機上沒有其所需復制的數(shù)據(jù);或者,所述備機發(fā)現(xiàn)所述主機的負載達到預定上限。
10.如權利要求1至9任一項所述的數(shù)據(jù)庫系統(tǒng),其特征在于,所述備機從所述主機或者被連接的其他備機上復制的數(shù)據(jù)為所述主機的增量數(shù)據(jù)。
11.一種數(shù)據(jù)同步方法,其特征在于,包括步驟: 備機與其所在數(shù)據(jù)庫系統(tǒng)中的主機建立通信連接; 當所述備機無法從所述主機復制數(shù)據(jù)時,所述備機按照預定策略選擇連接到所述數(shù)據(jù)庫系統(tǒng)中的其他備機,并從被連接的備機復制數(shù)據(jù)。
12.如權利要求11所述的方法,其特征在于,在所述備機與其所在數(shù)據(jù)庫系統(tǒng)中的主機建立通信連接之后,還包括: 所述備機定期將自身的最小DCN、最大DCN和負載指數(shù)上報給所述主機,以使所述主機根據(jù)所述數(shù)據(jù)庫系統(tǒng)中各個備機的最小DCN、最大DCN和負載指數(shù)維護一個主路由表,并將所述主路由表下發(fā)給所述各個備機;其中,所述主路由表對應每個所述備機記錄一個表項;所述表項中記錄有用于供所述主機連接當前備機的備機地址,以及所述最小DCN、最大DCN和負載指數(shù);所述最小DCN和最大DCN用于標記當前備機可供其他備機復制數(shù)據(jù)范圍;所述負載指數(shù)用于標識當前備機負載情況; 所述備機生成對應所述主路由表的本地路由表,并根據(jù)所述主機下發(fā)的主路由表刷新所述本地路由表。
13.如權利要求12所述的方法,其特征在于,當所述備機出現(xiàn)以下情況時,所述備機判定其自身無法從所述主機復制數(shù)據(jù):所述備機無法連接所述主機;或者,所述備機發(fā)現(xiàn)所述主機上沒有其所需復制的數(shù)據(jù);或者,所述備機發(fā)現(xiàn)所述主機的負載達到預定上限。
14.如權利要求12所述的方法,其特征在于,所述備機按照預定策略選擇連接到所述數(shù)據(jù)庫系統(tǒng)中的其他備機,具體包括: 所述備機根據(jù)所述本地路由表選擇其他備機; 所述備機基于點對點通信協(xié)議連接被選擇的備機。
15.如權利要求12所述的方法,其特征在于, 當所述備機無法連接所述主機時,所述備機還將自身的最小DCN、最大DCN和負載指數(shù)上報給其所連接的其他備機,以供其所連接的其他備機更新自身的本地路由表; 當所述備機連接所述主機時,所述備機還用于將自身的本地路由表上報給所述主機,以供所述主機更新無法與自己連接的備機對應的所述主路由表中的表項。
16.如權利要求15所述的方法,其特征在于, 當所述備機無法連接所述主機時,所述備機還根據(jù)其所連接的其他備機的本地路由表刷新自身的本地路由表。
17.如權利要求11至16任一項所述的方法,其特征在于,所述備機從所述主機或者被連接的其他備機上復制的數(shù)據(jù)為所述主機的增量數(shù)據(jù)。
全文摘要
本發(fā)明公開了一種數(shù)據(jù)庫系統(tǒng)及其數(shù)據(jù)同步方法,涉及數(shù)據(jù)庫領域。所述數(shù)據(jù)庫系統(tǒng)包括主機,以及和所述主機連接的備機;所述備機用于從所述主機復制數(shù)據(jù),并且當所述備機無法從所述主機復制數(shù)據(jù)時,所述備機用于按照預定策略選擇連接其他備機,并從被連接的備機復制數(shù)據(jù)。所述數(shù)據(jù)庫系統(tǒng)及其數(shù)據(jù)同步方法,當備機無法直接以主機作為復制源是,其可選擇合適的其他備機作為復制源,從而克服了現(xiàn)有數(shù)據(jù)庫系統(tǒng)只將主機作為復制源導致的復制源單一,整個集群的數(shù)據(jù)一致性和性能較差的問題,有效提高了數(shù)據(jù)庫系統(tǒng)的數(shù)據(jù)一致性和性能。
文檔編號H04L29/08GK103139308SQ201310062039
公開日2013年6月5日 申請日期2013年2月27日 優(yōu)先權日2013年2月27日
發(fā)明者何雄輝, 謝銳 申請人:華為技術有限公司