[發(fā)明專利]在數(shù)據(jù)庫之間進行數(shù)據(jù)同步的方法及系統(tǒng)有效
| 申請?zhí)枺?/td> | 201310356601.1 | 申請日: | 2013-08-15 |
| 公開(公告)號: | CN104376017B | 公開(公告)日: | 2018-10-23 |
| 發(fā)明(設計)人: | 樓江航 | 申請(專利權)人: | 阿里巴巴集團控股有限公司 |
| 主分類號: | G06F17/30 | 分類號: | G06F17/30 |
| 代理公司: | 北京潤澤恒知識產(chǎn)權代理有限公司 11319 | 代理人: | 蘇培華 |
| 地址: | 英屬開曼群島大開*** | 國省代碼: | 開曼群島;KY |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 數(shù)據(jù)庫 之間 進行 數(shù)據(jù) 同步 方法 系統(tǒng) | ||
本申請公開了在數(shù)據(jù)庫之間進行數(shù)據(jù)同步的方法及系統(tǒng),其中,所述方法包括:接收到第一數(shù)據(jù)庫向第二數(shù)據(jù)庫發(fā)送的同步變更信息時,開啟一事務;通過結構化查詢語言SQL規(guī)范,在所述事務中插入預先為第一數(shù)據(jù)庫定義的標識以及所述同步變更信息中攜帶的業(yè)務數(shù)據(jù),以便觸發(fā)第二數(shù)據(jù)庫在變更日志中記錄下第一數(shù)據(jù)庫的標識;將事務提交到所述第二數(shù)據(jù)庫,以便第二數(shù)據(jù)庫根據(jù)所述業(yè)務數(shù)據(jù)執(zhí)行數(shù)據(jù)同步變更;在第二數(shù)據(jù)庫同步變更完成產(chǎn)生新的變更數(shù)據(jù)后,判斷變更日志中記錄的標識與預先為第一數(shù)據(jù)庫定義的標識是否相同,如果相同,則略過這條變更數(shù)據(jù),以便不再向第一數(shù)據(jù)庫發(fā)送同步變更信息。通過本申請,可以實現(xiàn)在異構數(shù)據(jù)庫之間避免死循環(huán)同步。
技術領域
本申請涉及數(shù)據(jù)庫雙向同步技術領域,特別是涉及在數(shù)據(jù)庫之間進行數(shù)據(jù)同步的方法及系統(tǒng)。
背景技術
目前,在一些大型的業(yè)務處理系統(tǒng)中,為了提高業(yè)務處理速度,一般需要在多地部署機房,當然,不同機房的數(shù)據(jù)庫之間需要保持數(shù)據(jù)的同步。例如,某電子商務交易平臺的國際站,主要的業(yè)務是對外出口,其業(yè)務的特性為:賣家用戶在國內,買家用戶在國外,因此,需要在國外(例如,美國)部署異地機房,最終形成了賣家在國內機房上發(fā)布商品,通過數(shù)據(jù)庫同步技術同步到美國機房,國外的買家用戶通過美國機房訪問商品數(shù)據(jù),并生成相應產(chǎn)品訂單,再通過數(shù)據(jù)庫同步技術同步回國內的機房(例如,設在杭州),和買家進行交互,從而形成一個數(shù)據(jù)閉環(huán)。
異地機房之間需要采用雙向的數(shù)據(jù)同步技術。例如,在前述例子中,杭州的數(shù)據(jù)庫中發(fā)生數(shù)據(jù)變更時,需要同步到美國,同樣,美國的數(shù)據(jù)庫中發(fā)生數(shù)據(jù)變更時,也要同步到杭州,但是,要避免出現(xiàn)死循環(huán)同步的情況。例如,杭州數(shù)據(jù)庫同步美國數(shù)據(jù)庫的數(shù)據(jù),不能再從美國數(shù)據(jù)庫回到杭州數(shù)據(jù)庫,等等。
現(xiàn)有技術中,mysql為同為mysql類型的數(shù)據(jù)庫之間進行數(shù)據(jù)同步時,提供了避免出現(xiàn)死循環(huán)同步的解決方案。也即,mysql為每個機房的數(shù)據(jù)庫設置一個serverId,用于標識每條變更數(shù)據(jù)的原始產(chǎn)生于哪個數(shù)據(jù)庫。假如存在兩個mysql數(shù)據(jù)庫,mysql-A和mysql-B,并且分別設置了serverId-A和serverId-B。在mysql-A上產(chǎn)生的數(shù)據(jù)變更都會記錄該serverId-A,同時在發(fā)送每份數(shù)據(jù)變更記錄的時候,都會包含對應的serverId-A。同步到目標機房的mysql-B數(shù)據(jù)庫時,會在日志中記錄發(fā)送過來變更數(shù)據(jù)對應的serverId-A。mysql-A同步到mysql-B的數(shù)據(jù)變更也會觸發(fā)變更同步,從mysql-B發(fā)送給mysql-A時,會帶上對應的serverId-A,到達mysql-A時,mysql-A發(fā)現(xiàn)數(shù)據(jù)的serverId-A和自己的serverId-A相同,這意味著數(shù)據(jù)的原始產(chǎn)生者為自己,因此忽略這數(shù)據(jù),從而避免產(chǎn)生死循環(huán)同步。
但是,上述現(xiàn)有技術只是mysql數(shù)據(jù)庫內部的解決方案,這也就意味著只能在mysql數(shù)據(jù)庫之間才有效,無法支持異構數(shù)據(jù)庫,也就是說,如果不同的機房中使用了不同類型的數(shù)據(jù)庫,則上述方案將無法解決死循環(huán)同步問題。例如,假設某數(shù)據(jù)庫為mysql-A,另一個數(shù)據(jù)庫為oracle-B,此時,如果mysql-A上產(chǎn)生的數(shù)據(jù)變更同步到oracle-B,即使mysql-A的變更數(shù)據(jù)記錄了serverId-A,也無法將其寫入到oracle-B的變更日志進行保留(因為mysql無法修改oracle的日志),進而,當同步到oracle-B的數(shù)據(jù)變更再次出發(fā)變更同步之后,oracle-B會作為普通的數(shù)據(jù)變更操作來處理,無法攜帶上serverId-A,因此,mysql-A收到之后,就不會忽略,而是再進行更新,以此又進入了死循環(huán)同步。
因此,迫切需要本領域技術人員解決的問題就在于,在存在非mysql數(shù)據(jù)庫的情況下,如果避免死循環(huán)同步現(xiàn)象。
發(fā)明內容
本申請?zhí)峁┝嗽跀?shù)據(jù)庫之間進行數(shù)據(jù)同步的方法及系統(tǒng),即使不同的機房之間存在異構的數(shù)據(jù)庫,也仍然可以保證在進行雙向數(shù)據(jù)同步的過程中,避免發(fā)生死循環(huán)的現(xiàn)象,并且可以減少網(wǎng)絡傳輸量,提高實現(xiàn)的效率。
本申請?zhí)峁┝巳缦路桨福?/p>
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于阿里巴巴集團控股有限公司,未經(jīng)阿里巴巴集團控股有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業(yè)授權和技術合作,請聯(lián)系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201310356601.1/2.html,轉載請聲明來源鉆瓜專利網(wǎng)。
- 數(shù)據(jù)庫
- 數(shù)據(jù)庫管理系統(tǒng)及數(shù)據(jù)庫
- 數(shù)據(jù)庫構筑裝置、數(shù)據(jù)庫檢索裝置、數(shù)據(jù)庫裝置、數(shù)據(jù)庫構筑方法、以及數(shù)據(jù)庫檢索方法
- 數(shù)據(jù)庫和數(shù)據(jù)庫處理方法
- 數(shù)據(jù)庫系統(tǒng)、數(shù)據(jù)庫更新方法、數(shù)據(jù)庫以及數(shù)據(jù)庫更新程序
- 容器數(shù)據(jù)庫
- 數(shù)據(jù)庫同步方法及數(shù)據(jù)庫
- 一種MongoDB數(shù)據(jù)庫對象復制延遲監(jiān)控方法和裝置
- 數(shù)據(jù)分布式存儲方法、裝置、電子設備及存儲介質
- 數(shù)據(jù)庫語句執(zhí)行方法及裝置
- 數(shù)據(jù)顯示系統(tǒng)、數(shù)據(jù)中繼設備、數(shù)據(jù)中繼方法、數(shù)據(jù)系統(tǒng)、接收設備和數(shù)據(jù)讀取方法
- 數(shù)據(jù)記錄方法、數(shù)據(jù)記錄裝置、數(shù)據(jù)記錄媒體、數(shù)據(jù)重播方法和數(shù)據(jù)重播裝置
- 數(shù)據(jù)發(fā)送方法、數(shù)據(jù)發(fā)送系統(tǒng)、數(shù)據(jù)發(fā)送裝置以及數(shù)據(jù)結構
- 數(shù)據(jù)顯示系統(tǒng)、數(shù)據(jù)中繼設備、數(shù)據(jù)中繼方法及數(shù)據(jù)系統(tǒng)
- 數(shù)據(jù)嵌入裝置、數(shù)據(jù)嵌入方法、數(shù)據(jù)提取裝置及數(shù)據(jù)提取方法
- 數(shù)據(jù)管理裝置、數(shù)據(jù)編輯裝置、數(shù)據(jù)閱覽裝置、數(shù)據(jù)管理方法、數(shù)據(jù)編輯方法以及數(shù)據(jù)閱覽方法
- 數(shù)據(jù)發(fā)送和數(shù)據(jù)接收設備、數(shù)據(jù)發(fā)送和數(shù)據(jù)接收方法
- 數(shù)據(jù)發(fā)送裝置、數(shù)據(jù)接收裝置、數(shù)據(jù)收發(fā)系統(tǒng)、數(shù)據(jù)發(fā)送方法、數(shù)據(jù)接收方法和數(shù)據(jù)收發(fā)方法
- 數(shù)據(jù)發(fā)送方法、數(shù)據(jù)再現(xiàn)方法、數(shù)據(jù)發(fā)送裝置及數(shù)據(jù)再現(xiàn)裝置
- 數(shù)據(jù)發(fā)送方法、數(shù)據(jù)再現(xiàn)方法、數(shù)據(jù)發(fā)送裝置及數(shù)據(jù)再現(xiàn)裝置





