本發(fā)明屬于數(shù)據(jù)庫,涉及一種mysql通過binlog實(shí)現(xiàn)庫數(shù)據(jù)實(shí)時(shí)同步的方法、系統(tǒng)、設(shè)備及介質(zhì)。
背景技術(shù):
::1、在當(dāng)今的企業(yè)級(jí)應(yīng)用和數(shù)據(jù)處理場(chǎng)景中,常常需要在不同的數(shù)據(jù)庫之間保持?jǐn)?shù)據(jù)的一致性和實(shí)時(shí)性。例如,在一個(gè)分布式系統(tǒng)中,可能存在主數(shù)據(jù)庫用于處理主要業(yè)務(wù)操作,而從數(shù)據(jù)庫用于備份、數(shù)據(jù)分析或其他特定用途。傳統(tǒng)的數(shù)據(jù)同步方法往往存在延遲高、效率低、配置復(fù)雜等問題,無法滿足實(shí)時(shí)性要求較高的業(yè)務(wù)場(chǎng)景。mysql的binlog記錄了數(shù)據(jù)庫的所有變更操作,為實(shí)現(xiàn)高效、實(shí)時(shí)的數(shù)據(jù)同步提供了可能。然而,如何準(zhǔn)確地解析和利用binlog來實(shí)現(xiàn)兩個(gè)數(shù)據(jù)庫之間的數(shù)據(jù)實(shí)時(shí)同步,仍然是一個(gè)需要解決的技術(shù)難題。技術(shù)實(shí)現(xiàn)思路1、本發(fā)明的目的在于克服上述現(xiàn)有技術(shù)的缺點(diǎn),提供了一種mysql通過binlog實(shí)現(xiàn)庫數(shù)據(jù)實(shí)時(shí)同步的方法、系統(tǒng)、設(shè)備及介質(zhì),該方法、系統(tǒng)、設(shè)備及介質(zhì)能夠?qū)崿F(xiàn)兩個(gè)數(shù)據(jù)庫之間數(shù)據(jù)的實(shí)時(shí)同步。2、為達(dá)到上述目的,本發(fā)明公開了一種mysql通過binlog實(shí)現(xiàn)庫數(shù)據(jù)實(shí)時(shí)同步的方法,包括:3、創(chuàng)建mysqlbinloglistener實(shí)例,并傳入配置信息conf進(jìn)行初始化;4、對(duì)于需要同步的數(shù)據(jù)庫表,調(diào)用reglistener方法注冊(cè)相應(yīng)的監(jiān)聽器;5、調(diào)用parse方法啟動(dòng)監(jiān)聽及消費(fèi)流程。6、本發(fā)明所述mysql通過binlog實(shí)現(xiàn)庫數(shù)據(jù)實(shí)時(shí)同步的方法的進(jìn)一步改進(jìn)在于:7、進(jìn)一步的,所述調(diào)用reglistener方法注冊(cè)相應(yīng)的監(jiān)聽器的過程中,獲取數(shù)據(jù)庫表的字段信息并保存,同時(shí)將監(jiān)聽器與數(shù)據(jù)庫表進(jìn)行關(guān)聯(lián)。8、進(jìn)一步的,所述調(diào)用parse方法啟動(dòng)監(jiān)聽和消費(fèi)流程的過程為:9、將binarylogclient實(shí)例連接到mysql服務(wù)器,并開始接收binlog事件;10、當(dāng)接收到table_map事件時(shí),記錄數(shù)據(jù)庫表的相關(guān)信息;11、對(duì)于write事件、update事件及delete事件,則將write事件、update事件及delete事件的相關(guān)數(shù)據(jù)轉(zhuǎn)換為binlogitem,并放入阻塞隊(duì)列queue;12、消費(fèi)線程從阻塞隊(duì)列queue中取出binlogitem,根據(jù)dbtable字符串找到對(duì)應(yīng)的監(jiān)聽器列表,并調(diào)用監(jiān)聽器列表中監(jiān)聽器的onevent方法進(jìn)行處理,其中,監(jiān)聽器將接收到的插入操作、更新操作或刪除操作轉(zhuǎn)換為相應(yīng)的sql語句,并在目標(biāo)數(shù)據(jù)庫中執(zhí)行,以實(shí)現(xiàn)數(shù)據(jù)的實(shí)時(shí)同步。13、進(jìn)一步的,所述創(chuàng)建mysqlbinloglistener實(shí)例,并傳入配置信息conf進(jìn)行初始化的過程中的初始變量包括但不限于:阻塞隊(duì)列queue、監(jiān)聽器的multimap及map。14、本發(fā)明公開了一種mysql通過binlog實(shí)現(xiàn)庫數(shù)據(jù)實(shí)時(shí)同步的系統(tǒng),包括:15、創(chuàng)建模塊,用于創(chuàng)建mysqlbinloglistener實(shí)例,并傳入配置信息conf進(jìn)行初始化;16、第一調(diào)用模塊,用于對(duì)于需要同步的數(shù)據(jù)庫表,調(diào)用reglistener方法注冊(cè)相應(yīng)的監(jiān)聽器;17、第二調(diào)用模塊,用于調(diào)用parse方法啟動(dòng)監(jiān)聽及消費(fèi)流程。18、本發(fā)明所述mysql通過binlog實(shí)現(xiàn)庫數(shù)據(jù)實(shí)時(shí)同步的系統(tǒng)的進(jìn)一步改進(jìn)在于:19、進(jìn)一步的,所述調(diào)用reglistener方法注冊(cè)相應(yīng)的監(jiān)聽器的過程中,獲取數(shù)據(jù)庫表的字段信息并保存,同時(shí)將監(jiān)聽器與數(shù)據(jù)庫表進(jìn)行關(guān)聯(lián)。20、進(jìn)一步的,所述第二調(diào)用模塊包括:21、接收模塊,用于將binarylogclient實(shí)例連接到mysql服務(wù)器,并開始接收binlog事件;22、記錄模塊,用于當(dāng)接收到table_map事件時(shí),記錄數(shù)據(jù)庫表的相關(guān)信息;23、寫入模塊,用于對(duì)于write事件、update事件及delete事件,則將write事件、update事件及delete事件的相關(guān)數(shù)據(jù)轉(zhuǎn)換為binlogitem,并放入阻塞隊(duì)列queue;24、同步模塊,用于消費(fèi)線程從阻塞隊(duì)列queue中取出binlogitem,根據(jù)dbtable字符串找到對(duì)應(yīng)的監(jiān)聽器列表,并調(diào)用監(jiān)聽器列表中監(jiān)聽器的onevent方法進(jìn)行處理,其中,監(jiān)聽器將接收到的插入操作、更新操作或刪除操作轉(zhuǎn)換為相應(yīng)的sql語句,并在目標(biāo)數(shù)據(jù)庫中執(zhí)行,以實(shí)現(xiàn)數(shù)據(jù)的實(shí)時(shí)同步。25、進(jìn)一步的,所述創(chuàng)建mysqlbinloglistener實(shí)例,并傳入配置信息conf進(jìn)行初始化的過程中的初始變量包括但不限于:阻塞隊(duì)列queue、監(jiān)聽器的multimap及map。26、本發(fā)明公開了一種計(jì)算機(jī)設(shè)備,包括存儲(chǔ)器、處理器以及存儲(chǔ)在所述存儲(chǔ)器中并可在所述處理器上運(yùn)行的計(jì)算機(jī)程序,所述處理器執(zhí)行所述計(jì)算機(jī)程序時(shí)實(shí)現(xiàn)所述mysql通過binlog實(shí)現(xiàn)庫數(shù)據(jù)實(shí)時(shí)同步的方法的步驟。27、本發(fā)明公開了一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),所述計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)存儲(chǔ)有計(jì)算機(jī)程序,所述計(jì)算機(jī)程序被處理器執(zhí)行時(shí)實(shí)現(xiàn)所述mysql通過binlog實(shí)現(xiàn)庫數(shù)據(jù)實(shí)時(shí)同步的方法的步驟。28、本發(fā)明具有以下有益效果:29、本發(fā)明所述的mysql通過binlog實(shí)現(xiàn)庫數(shù)據(jù)實(shí)時(shí)同步的方法、系統(tǒng)、設(shè)備及介質(zhì)在具體操作時(shí),通過直接監(jiān)聽mysql的binlog,能夠?qū)崟r(shí)捕獲數(shù)據(jù)庫的變更操作,幾乎無延遲地將數(shù)據(jù)同步到目標(biāo)數(shù)據(jù)庫中,滿足對(duì)數(shù)據(jù)實(shí)時(shí)性要求較高的業(yè)務(wù)場(chǎng)景。另外,本發(fā)明采用多線程的方式進(jìn)行事件的消費(fèi)處理,提高了數(shù)據(jù)同步的效率,能夠快速處理大量的binlog事件,避免數(shù)據(jù)積壓。另外,在實(shí)際操作時(shí),只需要提供源數(shù)據(jù)庫和目標(biāo)數(shù)據(jù)庫的連接信息以及需要同步的表信息,即可通過簡單的注冊(cè)監(jiān)聽器操作實(shí)現(xiàn)數(shù)據(jù)同步,降低了配置的復(fù)雜性。30、進(jìn)一步,本發(fā)明利用阻塞隊(duì)列和線程池等機(jī)制,保證了數(shù)據(jù)的有序處理和系統(tǒng)的穩(wěn)定性,即使在高并發(fā)的情況下,也能夠可靠地同步數(shù)據(jù),減少數(shù)據(jù)丟失和錯(cuò)誤的可能性。技術(shù)特征:1.一種mysql通過binlog實(shí)現(xiàn)庫數(shù)據(jù)實(shí)時(shí)同步的方法,其特征在于,包括:2.根據(jù)權(quán)利要求1所述的mysql通過binlog實(shí)現(xiàn)庫數(shù)據(jù)實(shí)時(shí)同步的方法,其特征在于,所述調(diào)用reglistener方法注冊(cè)相應(yīng)的監(jiān)聽器的過程中,獲取數(shù)據(jù)庫表的字段信息并保存,同時(shí)將監(jiān)聽器與數(shù)據(jù)庫表進(jìn)行關(guān)聯(lián)。3.根據(jù)權(quán)利要求1所述的mysql通過binlog實(shí)現(xiàn)庫數(shù)據(jù)實(shí)時(shí)同步的方法,其特征在于,所述調(diào)用parse方法啟動(dòng)監(jiān)聽和消費(fèi)流程的過程為:4.根據(jù)權(quán)利要求1所述的mysql通過binlog實(shí)現(xiàn)庫數(shù)據(jù)實(shí)時(shí)同步的方法,其特征在于,所述創(chuàng)建mysqlbinloglistener實(shí)例,并傳入配置信息conf進(jìn)行初始化的過程中的初始變量包括但不限于:阻塞隊(duì)列queue、監(jiān)聽器的multimap及map。5.一種mysql通過binlog實(shí)現(xiàn)庫數(shù)據(jù)實(shí)時(shí)同步的系統(tǒng),其特征在于,包括:6.根據(jù)權(quán)利要求5所述的mysql通過binlog實(shí)現(xiàn)庫數(shù)據(jù)實(shí)時(shí)同步的系統(tǒng),其特征在于,所述調(diào)用reglistener方法注冊(cè)相應(yīng)的監(jiān)聽器的過程中,獲取數(shù)據(jù)庫表的字段信息并保存,同時(shí)將監(jiān)聽器與數(shù)據(jù)庫表進(jìn)行關(guān)聯(lián)。7.根據(jù)權(quán)利要求5所述的mysql通過binlog實(shí)現(xiàn)庫數(shù)據(jù)實(shí)時(shí)同步的系統(tǒng),其特征在于,所述第二調(diào)用模塊包括:8.根據(jù)權(quán)利要求5所述的mysql通過binlog實(shí)現(xiàn)庫數(shù)據(jù)實(shí)時(shí)同步的系統(tǒng),其特征在于,所述創(chuàng)建mysqlbinloglistener實(shí)例,并傳入配置信息conf進(jìn)行初始化的過程中的初始變量包括但不限于:阻塞隊(duì)列queue、監(jiān)聽器的multimap及map。9.一種計(jì)算機(jī)設(shè)備,包括存儲(chǔ)器、處理器以及存儲(chǔ)在所述存儲(chǔ)器中并可在所述處理器上運(yùn)行的計(jì)算機(jī)程序,其特征在于,所述處理器執(zhí)行所述計(jì)算機(jī)程序時(shí)實(shí)現(xiàn)如權(quán)利要求1-4任一項(xiàng)所述mysql通過binlog實(shí)現(xiàn)庫數(shù)據(jù)實(shí)時(shí)同步的方法的步驟。10.一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),所述計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)存儲(chǔ)有計(jì)算機(jī)程序,其特征在于,所述計(jì)算機(jī)程序被處理器執(zhí)行時(shí)實(shí)現(xiàn)如權(quán)利要求1-4任一項(xiàng)所述mysql通過binlog實(shí)現(xiàn)庫數(shù)據(jù)實(shí)時(shí)同步的方法的步驟。技術(shù)總結(jié)本發(fā)明公開了一種MySQL通過Binlog實(shí)現(xiàn)庫數(shù)據(jù)實(shí)時(shí)同步的方法、系統(tǒng)、設(shè)備及介質(zhì),包括:創(chuàng)建MysqlBinLogListener實(shí)例,并傳入配置信息conf進(jìn)行初始化;對(duì)于需要同步的數(shù)據(jù)庫表,調(diào)用regListener方法注冊(cè)相應(yīng)的監(jiān)聽器;調(diào)用parse方法啟動(dòng)監(jiān)聽及消費(fèi)流程,該方法、系統(tǒng)、設(shè)備及介質(zhì)能夠?qū)崿F(xiàn)兩個(gè)數(shù)據(jù)庫之間數(shù)據(jù)的實(shí)時(shí)同步。技術(shù)研發(fā)人員:虎勇,付壯壯,陳婷婷,王珊珊,高越受保護(hù)的技術(shù)使用者:北京華能新銳控制技術(shù)有限公司技術(shù)研發(fā)日:技術(shù)公布日:2025/5/15