一種數據庫的數據同步方法、裝置及系統的制作方法
【技術領域】
[0001] 本發明涉及數據庫同步技術領域,尤其涉及一種數據庫的數據同步方法、裝置及 系統。
【背景技術】
[0002] 自從1970年E. F. Codd博±提出最初的理論模型W來,關系型數據庫已經成為所 有信息系統中必不可少的基礎設施之一,其重要性僅次于操作系統,如今已經沒有哪個大 型的系統能夠脫離數據庫而存在。
[0003] 在實際應用中,由于業務邏輯的復雜性和功能的模塊化設計,往往一個信息系統 中會部署有多套數據庫,而且送多套庫之間需要協同合作共享數據,送就要求各數據庫之 間能夠實現數據同步。
[0004] 傳統的數據庫同步方式一般是基于全量的同步,即主備服務器上的數據完全相 同。然而在W下幾種場景中,普通的全量同步無法滿足要求。
[0005] 場景一;在異構數據庫同步的場景中,會出現目的庫的存儲容量與源庫不匹配的 情況。當數據量很大時,依然要求目的節點必須是與源庫容量相當的存儲設備。而多數情 況下目的庫只是作為數據備份使用,送樣的要求勢必會增加設備成本,而且異構數據庫的 優越性也無法得到很好體現。
[0006] 場景二:在一對多復制的場景中,源庫作為數據源,保存有全量的數據,而每個目 的庫作為一個獨立的單元被訪問,只需要保存部分相關的數據即可。使用傳統的全量復制, 會造成傳輸的兀余和空間的浪費。
[0007] 場景Η ;在復制場景中,在某個時間段可能會出現大量的語句不需要同步的情況, 比如對某個字段大量的update操作。傳統的全量復制,默認同步所有語句,會造成資源的 浪費。
[0008] W上幾種場景,反映了傳統的全量復制方式存在一定的局限性,數據庫系統不能 根據不同的數據同步需求進行有選擇的數據復制同步,不能區分哪些數據是需要同步的, 將全量數據進行同步造成了傳輸的兀余W及資源的浪費問題。
【發明內容】
[0009] 為了解決傳統全量復制模式造成的傳輸兀余、資源浪費問題,本發明提供了一種 數據庫的數據同步方法、裝置及系統,W至少解決上述問題。
[0010] 根據本發明的一個方面,提供了一種數據庫的數據同步方法,包括;獲取源數據庫 的邏輯變化記錄LCR (Logical化ange Record,簡稱為LCR);獲取目的數據庫信息;根據所 述LCR和所述目的數據庫信息更新對應的所述目的數據庫。
[0011] 優選地,所述獲取目的數據庫信息,包括W下至少一種;獲取全部目的數據庫信 息;獲取指定的目的數據庫信息;根據所述LCR獲取對應的目的數據庫信息。
[0012] 優選地,所述根據所述LCR獲取對應的目的數據庫信息,包括W下至少一種;根據 所述LCR中的字段名稱、字段取值和目的庫對應關系獲取對應的目的數據庫信息;根據所 述LCR中的字段名稱、語句類型獲取對應的目的數據庫信息。
[0013] 優選地,所述根據所述LCR和所述目的數據庫信息更新對應的所述目的數據庫, 包括;將所述LCR轉化為與所述目的數據庫相應的S化語句;根據所述S化語句更新對應的 所述目的數據庫。
[0014] 優選地,所述獲取源數據庫的邏輯變化記錄LCR,還包括;將所述邏輯變化記錄 LCR的格式轉換為所述數據庫系統內部標準的LCR格式。
[0015] 根據本發明的另一個方面,提供了一種數據庫的數據同步裝置,包括:采集模塊, 用于獲取源數據庫的邏輯變化記錄LCR ;選擇模塊,用于獲取目的數據庫信息;更新模塊, 用于根據所述LCR和所述目的數據庫信息更新對應的所述目的數據庫。
[0016] 優選地,所述選擇模塊還包括W下至少一種;全量單元,用于獲取全部目的數據庫 信息;指定單元,用于獲取指定的目的數據庫信息;過濾單元,用于根據所述LCR獲取對應 的目的數據庫信息。
[0017] 優選地,所述過濾單元還包括W下至少一種;字段值子單元,用于根據所述LCR中 的字段名稱、字段取值和目的庫對應關系獲取對應的目的數據庫信息。類型子單元,用于根 據所述LCR中的字段名稱、語句類型獲取對應的目的數據庫信息。
[0018] 優選地,所述更新模塊,包括;語句轉化單元,用于將所述LCR轉化為與所述目的 數據庫相應的S化語句;執行單元,用于根據所述S化語句對相應的所述目的數據庫進行更 新。
[0019] 優選地,所述采集模塊,包括;格式轉換單元,用于將所述邏輯
[0020] 變化記錄LCR的格式轉換為所述數據庫內部標準的LCR格式。
[0021] 根據本發明再一個方面,提供了一種數據庫的數據同步系統,包括:
[0022] 源數據庫,用于生成邏輯變化記錄LCR ;
[0023] 數據同步裝置,包括:采集模塊,用于獲取源數據庫的邏輯變化記錄LCR ;選擇模 塊,用于獲取目的數據庫信息;更新模塊,用于根據所述LCR和所述目的數據庫信息更新對 應的所述目的數據庫;
[0024] 目的數據庫,用于執行所述更新操作;
[0025] 其中,所述采集模塊與所述源數據庫相連;所述更新模塊與所述目的數據庫相連。
[0026] 優選地,所述更新模塊為至少兩個,每一個所述更新模塊與對應的至少一個目的 數據庫相連。
[0027] 優選地,所述獲取源數據庫的邏輯變化記錄LCR,包括主動獲取方式和被動獲取方 式。
[0028] 通過本發明,獲取源數據庫的邏輯變化記錄LCR,獲取目的數據庫信息,根據所述 LCR和所述目的數據庫信息更新對應的所述目的數據庫。使得在對數據庫進行數據同步時, 可W根據不同的數據同步需要進行有選擇的數據復制并同步,避免了大量復制同步不必要 的數據,節省了數據庫系統的傳輸空間和資源。
【附圖說明】
[0029] 此處所說明的附圖用來提供對本發明的進一步理解,構成本申請的一部分,本發 明的示意性實施例及其說明用于解釋本發明,并不構成對本發明的不當限定。在附圖中:
[0030] 圖1是根據本發明實施例的數據庫的數據同步方法流程圖一;
[0031] 圖2是根據本發明實施例的數據庫的數據同步方法流程圖二;
[0032] 圖3是根據本發明實施例的數據庫的數據同步裝置結構框圖一;
[0033] 圖4是根據本發明實施例的數據庫的數據同步裝置結構框圖二;
[0034] 圖5是根據本發明實施例的數據庫的數據同步系統結構圖。
【具體實施方式】
[0035] 下文中將參考附圖并結合實施例來詳細說明本發明。需要說明的是,在不沖突的 情況下,本申請中的實施例及實施例中的特征可W相互組合。
[0036] 本發明實施例提供了一種數據庫的數據同步方法,圖1是根據本發明實施例的數 據庫的數據同步方法流程圖一,如圖1所示,該方法包括W下步驟:
[0037] S202,獲取源數據庫的邏輯變化記錄LCR ;
[0038] S204,獲取目的數據庫信息;
[0039] S206,根據上述獲取的目的數據庫信息,定位到需要更新的目的數據庫,將上述獲 取的邏輯變化記錄LCR更新到上述目的數據庫。
[0040] 其中,上述LCR為Logical化ange Record的簡稱,在本實施方式中即為源數據庫 的邏輯變化記錄,是用來記錄DML/孤L變化內容的消息格式,記錄操作類型、變化前后的數 據等內容。上述獲取目的數據信息,包括數據庫的服務器別名、執行語句所用的用戶名和密 碼。
[0041] 通過本發明實施例,獲取源數據庫的邏輯變化記錄LCR,獲取目的數據庫信息,根 據上述獲取的目的數據庫信息,定位到需要更新的目的數據庫,將上述獲取的邏輯變化記 錄LCR更新到上述目的數據庫。使得在對數據庫進行數據同步時,可W根據不同的數據同 步需要進行有選擇的數據復制并同步,避免了大量復制同步不必要的數據,節省了數據庫 系統的傳輸空間和資源。
[0042] 在本發明的一個實施方式中,上述獲取目的數據庫信息,包括:獲取全部目的數據 庫信息。圖2是根據本發明實施例的數據庫的數據同步方法流程圖二,其中,源數據庫提供 解析好的源庫自有格式的LCR,本實施方式中會主動獲取送樣的LCR,并進行格式轉換,轉 換為同步系統內部標準LCR消息格式。如圖2所示,本發明實施方式即為圖2中所示的全 量復制模式,該方法包括:
[0043] S302,獲取源數據庫的邏輯變化記錄LCR,并將格式轉換為所述數據庫系統內部標 準的LCR格式;
[0044] S304,獲取全部目的數據庫信息;
[0045] S306,根據上述獲取的全部目的數據庫信息,定位到所有的目的數據庫;
[0046] S308,讀取數據庫類型,將上述獲取的邏輯變化記錄LCR拼成與數據庫類型相應 的S化語句;
[0047] S310,在所有的目的數據庫上執行上述S化語句,對所有的目的數據庫進行更新。 [004引在本發明的一個實施方式中,上述獲取目的數據庫信息,包括:獲取指定的目的數 據庫信息。如圖2所示,本發明實施方式即為圖2中所示的指定復制模式,該方法包括:
[0049] S402,獲取