[發(fā)明專利]一種用于數(shù)據(jù)庫的寫入互斥方法及裝置有效
| 申請?zhí)枺?/td> | 201410401476.6 | 申請日: | 2014-08-15 |
| 公開(公告)號(hào): | CN105447012B | 公開(公告)日: | 2019-03-15 |
| 發(fā)明(設(shè)計(jì))人: | 劉杰 | 申請(專利權(quán))人: | 阿里巴巴集團(tuán)控股有限公司 |
| 主分類號(hào): | G06F16/28 | 分類號(hào): | G06F16/28 |
| 代理公司: | 北京清源匯知識(shí)產(chǎn)權(quán)代理事務(wù)所(特殊普通合伙) 11644 | 代理人: | 馮德魁 |
| 地址: | 英屬開曼群島大開*** | 國省代碼: | 開曼群島;KY |
| 權(quán)利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關(guān)鍵詞: | 一種 用于 數(shù)據(jù)庫 寫入 方法 裝置 | ||
本申請公開了一種用于數(shù)據(jù)庫的寫入互斥方法,包括:采用預(yù)先指定的統(tǒng)一的用戶名創(chuàng)建用于向目標(biāo)數(shù)據(jù)庫寫入數(shù)據(jù)的連接,所述目標(biāo)數(shù)據(jù)庫為每個(gè)與其建立的連接分配唯一的連接標(biāo)識(shí);獲取已創(chuàng)建連接的連接標(biāo)識(shí),作為本地連接標(biāo)識(shí);獲取所述目標(biāo)數(shù)據(jù)庫中采用所述用戶名的所有連接的連接標(biāo)識(shí)列表;判斷所述連接標(biāo)識(shí)列表中是否存在不同于所述本地連接標(biāo)識(shí)的其他連接標(biāo)識(shí);若是,關(guān)閉已創(chuàng)建的連接;若否,使用已創(chuàng)建的連接向所述目標(biāo)數(shù)據(jù)庫寫入數(shù)據(jù)。本申請同時(shí)提供一種用于數(shù)據(jù)庫的寫入互斥裝置。采用本申請?zhí)峁┑姆椒ǎ軌虮苊鈨蓚€(gè)進(jìn)程同時(shí)向目標(biāo)數(shù)據(jù)庫執(zhí)行同樣的寫入操作,從而有效保證目標(biāo)數(shù)據(jù)庫中的數(shù)據(jù)的正確性。
技術(shù)領(lǐng)域
本申請涉及數(shù)據(jù)庫領(lǐng)域,具體涉及一種用于數(shù)據(jù)庫的寫入互斥方法。本申請同時(shí)提供一種用于數(shù)據(jù)庫的寫入互斥裝置。
背景技術(shù)
MySQL是一個(gè)開放源碼的關(guān)系型數(shù)據(jù)庫管理系統(tǒng),通常采用主從同步的架構(gòu)方式,即:一臺(tái)主服務(wù)器負(fù)責(zé)處理寫入操作和少量的讀操作,一臺(tái)或者多臺(tái)從服務(wù)器(或稱備用服務(wù)器)負(fù)責(zé)處理讀操作,從而實(shí)現(xiàn)負(fù)載均衡,縮短對用戶訪問請求的響應(yīng)時(shí)間。針對上述主從同步的架構(gòu)方式,MySQL數(shù)據(jù)庫系統(tǒng)提供了采用二進(jìn)制日志文件Binlog來實(shí)現(xiàn)主、從數(shù)據(jù)庫之間的數(shù)據(jù)復(fù)制功能。
然而隨著數(shù)據(jù)庫技術(shù)以及數(shù)據(jù)庫業(yè)務(wù)的發(fā)展,上述主從復(fù)制功能已無法滿足多變的用戶需求,例如,有的數(shù)據(jù)庫業(yè)務(wù)只需要將MySQL數(shù)據(jù)庫中的部分庫或者表中的數(shù)據(jù)同步到目標(biāo)MySQL數(shù)據(jù)庫中;有的業(yè)務(wù)則需要把其他關(guān)系型數(shù)據(jù)庫,甚至nosql數(shù)據(jù)庫中的數(shù)據(jù)同步到目的MySQL數(shù)據(jù)庫中。基于這些需求,出現(xiàn)了采用外部程序?qū)崿F(xiàn)數(shù)據(jù)庫之間數(shù)據(jù)同步的實(shí)現(xiàn)方式。
通過外部程序?qū)崿F(xiàn)數(shù)據(jù)庫之間的同步時(shí),通常由一個(gè)進(jìn)程負(fù)責(zé)兩個(gè)數(shù)據(jù)庫的同步,即:從源數(shù)據(jù)庫中讀取數(shù)據(jù),經(jīng)過必要的處理后,再通過與目標(biāo)數(shù)據(jù)庫之間建立的一條或者多條連接將數(shù)據(jù)寫入目標(biāo)數(shù)據(jù)庫中。為了保障數(shù)據(jù)同步過程的順利執(zhí)行,通常還會(huì)啟動(dòng)一個(gè)負(fù)責(zé)容災(zāi)的模塊(簡稱容災(zāi)模塊),該模塊通過偵聽同步進(jìn)程定期(例如每隔5秒或者10秒)發(fā)送的心跳數(shù)據(jù)包來監(jiān)測同步進(jìn)程的工作狀態(tài),當(dāng)容災(zāi)模塊在預(yù)先設(shè)定的一段時(shí)間內(nèi)(例如1分鐘)沒有收到同步進(jìn)程的心跳數(shù)據(jù)包,則認(rèn)為同步進(jìn)程出現(xiàn)故障,容災(zāi)模塊會(huì)啟動(dòng)一個(gè)新的同步進(jìn)程來接管當(dāng)前的數(shù)據(jù)同步過程,從而使得數(shù)據(jù)同步過程依然正常進(jìn)行。
上述實(shí)現(xiàn)方式,通常可以保證數(shù)據(jù)同步過程的順利執(zhí)行,然而在具體實(shí)現(xiàn)中,可能出現(xiàn)容災(zāi)模塊發(fā)生誤判的情況,例如,因?yàn)榫W(wǎng)絡(luò)連接故障(網(wǎng)線斷開),導(dǎo)致同步進(jìn)程和容災(zāi)模塊之間的網(wǎng)絡(luò)通信被中斷,容災(zāi)模塊在預(yù)先設(shè)定的一段時(shí)間內(nèi)沒有接收到同步進(jìn)程的心跳數(shù)據(jù)包,容災(zāi)模塊會(huì)因此啟動(dòng)新的同步進(jìn)程,在這種情況下,就會(huì)出現(xiàn)兩個(gè)同步進(jìn)程同時(shí)向同一個(gè)目標(biāo)MySQL數(shù)據(jù)庫寫入數(shù)據(jù)的問題,從而導(dǎo)致目標(biāo)MySQL數(shù)據(jù)庫中的數(shù)據(jù)錯(cuò)誤。
發(fā)明內(nèi)容
本申請?zhí)峁┮环N用于數(shù)據(jù)庫的寫入互斥方法,以解決兩個(gè)執(zhí)行同一寫入任務(wù)的進(jìn)程同時(shí)向目標(biāo)數(shù)據(jù)庫寫入數(shù)據(jù)而導(dǎo)致數(shù)據(jù)錯(cuò)誤的問題。本申請另外提供一種用于數(shù)據(jù)庫的寫入互斥裝置。
本申請?zhí)峁┮环N用于數(shù)據(jù)庫的寫入互斥方法,所述方法在向同一個(gè)目標(biāo)數(shù)據(jù)庫執(zhí)行同一寫入任務(wù)的進(jìn)程中實(shí)施,包括:
采用為所述進(jìn)程預(yù)先指定的統(tǒng)一的用戶名創(chuàng)建用于向目標(biāo)數(shù)據(jù)庫寫入數(shù)據(jù)的連接,所述目標(biāo)數(shù)據(jù)庫為每個(gè)與其建立的連接分配唯一的連接標(biāo)識(shí);
獲取已創(chuàng)建連接的連接標(biāo)識(shí),作為本地連接標(biāo)識(shí);
獲取所述目標(biāo)數(shù)據(jù)庫中采用所述用戶名的所有連接的連接標(biāo)識(shí)列表;
判斷所述連接標(biāo)識(shí)列表中是否存在不同于所述本地連接標(biāo)識(shí)的其他連接標(biāo)識(shí);
若是,關(guān)閉已創(chuàng)建的連接;若否,使用已創(chuàng)建的連接向所述目標(biāo)數(shù)據(jù)庫寫入數(shù)據(jù)。
可選的,所述目標(biāo)數(shù)據(jù)庫為MySQL數(shù)據(jù)庫。
可選的,所述采用為所述進(jìn)程預(yù)先指定的統(tǒng)一的用戶名創(chuàng)建用于向目標(biāo)數(shù)據(jù)庫寫入數(shù)據(jù)的連接,采用如下方式實(shí)現(xiàn):
該專利技術(shù)資料僅供研究查看技術(shù)是否侵權(quán)等信息,商用須獲得專利權(quán)人授權(quán)。該專利全部權(quán)利屬于阿里巴巴集團(tuán)控股有限公司,未經(jīng)阿里巴巴集團(tuán)控股有限公司許可,擅自商用是侵權(quán)行為。如果您想購買此專利、獲得商業(yè)授權(quán)和技術(shù)合作,請聯(lián)系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201410401476.6/2.html,轉(zhuǎn)載請聲明來源鉆瓜專利網(wǎng)。
- 數(shù)據(jù)庫
- 數(shù)據(jù)庫管理系統(tǒng)及數(shù)據(jù)庫
- 數(shù)據(jù)庫構(gòu)筑裝置、數(shù)據(jù)庫檢索裝置、數(shù)據(jù)庫裝置、數(shù)據(jù)庫構(gòu)筑方法、以及數(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ù)庫對象復(fù)制延遲監(jiān)控方法和裝置
- 數(shù)據(jù)分布式存儲(chǔ)方法、裝置、電子設(shè)備及存儲(chǔ)介質(zhì)
- 數(shù)據(jù)庫語句執(zhí)行方法及裝置
- 一種數(shù)據(jù)庫讀寫分離的方法和裝置
- 一種手機(jī)動(dòng)漫人物及背景創(chuàng)作方法
- 一種通訊綜合測試終端的測試方法
- 一種服裝用人體測量基準(zhǔn)點(diǎn)的獲取方法
- 系統(tǒng)升級(jí)方法及裝置
- 用于虛擬和接口方法調(diào)用的裝置和方法
- 線程狀態(tài)監(jiān)控方法、裝置、計(jì)算機(jī)設(shè)備和存儲(chǔ)介質(zhì)
- 一種JAVA智能卡及其虛擬機(jī)組件優(yōu)化方法
- 檢測程序中方法耗時(shí)的方法、裝置及存儲(chǔ)介質(zhì)
- 函數(shù)的執(zhí)行方法、裝置、設(shè)備及存儲(chǔ)介質(zhì)





