CN112835918A - 一种MySQL数据库增量同步实现方法 - Google Patents

一种MySQL数据库增量同步实现方法 Download PDF

Info

Publication number
CN112835918A
CN112835918A CN202110188538.XA CN202110188538A CN112835918A CN 112835918 A CN112835918 A CN 112835918A CN 202110188538 A CN202110188538 A CN 202110188538A CN 112835918 A CN112835918 A CN 112835918A
Authority
CN
China
Prior art keywords
data
transaction
mysql
increment
event
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202110188538.XA
Other languages
English (en)
Inventor
苗亚囡
方建勋
李朝铭
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Inspur Cloud Information Technology Co Ltd
Original Assignee
Inspur Cloud Information Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Inspur Cloud Information Technology Co Ltd filed Critical Inspur Cloud Information Technology Co Ltd
Priority to CN202110188538.XA priority Critical patent/CN112835918A/zh
Publication of CN112835918A publication Critical patent/CN112835918A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2365Ensuring data consistency and integrity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • G06F16/275Synchronous replication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/284Relational databases

Landscapes

  • Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明涉及数据库数据采集技术领域,具体提供了一种MySQL数据库增量同步实现方法,其特征在于,该方法会在同步增量之前获取唯一的全局事务标识符即GTID值,并以该值为基点去解析MySQL的二进制日志文件的增量事务,将解析后的增量数据以自定义标准字节流的形式暂存到CMSP消息队列中,借助CMSP的加密压缩传输机制传输到入库端,再通过解析入库的消息队列,用于实现MySQL从源库到目标库的数据同步。与现有技术相比,本发明能够实现数据库大事务以及有无主键的数据增、删和改增量同步,具有良好的推广应用价值。

Description

一种MySQL数据库增量同步实现方法
技术领域
本发明涉及数据库数据采集技术领域,具体提供一种MySQL数据库增量同步实现方法。
背景技术
随着信息时代的飞速发展,大数据、人工智能的兴起,数据作为一种资源,越来越被一些企业、单位重视,数据产出的经济和社会价值也越来越明显。当今社会,企业数据越来越庞大、复杂,呈现数据量巨大、数据种类繁多包括结构化数据和非结构化数据、数据存放单一等特点,这势必给数据带来安全和不可靠的隐患,因此数据的同步和备份显得越来越重要。MySQL数据库作为常用数据库之一,其数据的同步和备份尤为重要。
MySQL数据库常用的同步方式有以下几种:
1)触发器方式
触发器方式是较为普遍存在的一种同步方式,SQL触发器是存储在数据库目录中的一组SQL语句,该方式根据抽取的要求在源表建立插入、更新、删除三种触发器,每当源表发生变化时,就会由相应的触发器将变化数据写入到增量日志表。
该方法对更新、删除操作时,需要支持原表中存在主键字段,否则无法实现对应记录的更新、删除操作。
2)时间戳方式
时间戳方式是指增量抽取时,抽取进程通过比较系统时间与抽取源表的时间戳字段的值来决定抽取哪些数据。这种方式需要在源表上增加一个时间戳字段,系统中更新修改表数据的时候,同时修改时间戳字段的值。
使用时间戳方式可以正常捕获源表的插入操作,但对于更新、删除操作则无能为力,需要结合其它机制才能完成。
3)全表删除插入方式
全表删除插入方式是指每次抽取前先删除目标表数据,抽取时全新加载数据。该方式实际上将增量抽取等同于全量抽取。对于数据量不大,全量抽取的时间代价小于执行增量抽取的算法和条件代价时,可以采用该方式。
4)基于二进制日志方式
该方式是目前最有效、准确的获取增、删、改增量数据的方法之一。该方式同步数据时需要查找日志文件的log_name和log_pos,同时log_pos只在单个日志文件中唯一,对于整个源库而言不唯一。该方式需要记录每个增、删、改事件的log_pos值,对于大事务而言显得繁琐。
上述各方式均存在一定的缺点:触发器方式需要业务表建立触发器,对业务存在一定的影响,同时对于没有主键的表不能实现更新和删除操作。时间戳方式业务表需要存在标识新旧数据的时间戳字段,只能进行插入操作。全表删除插入方式,高网络负载、性能代价高、无法反映数据的历史状态。日志方式对于大事务的解析会降低效率。
发明内容
本发明是针对上述现有技术的不足,提供一种实用性强的MySQL 数据库增量同步实现方法。
本发明解决其技术问题所采用的技术方案是:
一种MySQL数据库增量同步实现方法,该方法会在同步增量之前获取唯一的全局事务标识符即GTID值,并以该值为基点去解析MySQL 的二进制日志文件的增量事务,将解析后的增量数据以自定义标准字节流的形式暂存到CMSP消息队列中,借助CMSP的加密压缩传输机制传输到入库端,再通过解析入库的消息队列,用于实现MySQL从源库到目标库的数据同步。
进一步的,MySQL的全局事务标识符是对于每个已提交的事务的编号,且是连续并全局唯一;所述全局事务标识符由 server_uuid:transaction_id组成,每个所述的MySQL服务器有一个全局唯一的server_uuid以及有内部不会重复且是连续递增的事务序号transaction_id。
进一步的,当开启GTID模式后,MySQL数据库会在新增、更新、删除增量操作事务提交后创建唯一的全局事务序号,并把对应值以事件形式记录在二进制日志文件中。
进一步的,当增量采集开始时以增量同步前获取的全局事务序号为起点进行数据事件类型的解析,当解析表为配置表,同时存在已提交的新增、变更和删除事务时,对GTID事件解析获取该事务的全局事务标识符,然后对数据事件内容进行按行解析获取数据记录,直到解析完本事务才开始新事务得解析,并获取对应的全局事务序号。
作为优选,创建一张数据类型为一个整型和一个可变长度的字符串的测试表,向所述测试表中插入一条数据并提交,MySQL源库首先会在二进制日志文件的gtid事件中记录下所述事务的全局事务标识符,并在write_rows事件中记录新增的数据内容。
进一步的,对于MySQL数据中执行新增操作时,依据全局事务序号解析新增事件中对应的每个字段的新增数据,并将解析的新增数据以标准字节流形式存储在CMSP消息队列中,通过CMSP的加密传输及入库组件的解析,将插入的增量数据转存到目标库。
进一步的,在MySQL数据库中执行更新操作时,类似插入操作,修改测试表的一条记录数据并提交,MySQL源库会在二进制日志文件的gtid事件中记录该事务的序号,同时在update_rows更新事件中记录更新列数和数据值。
进一步的,对于MySQL数据库中执行更新操作时,依据全局事务序号解析更新事件的内容,并将解析出的数据值以标准字节流的形式存储到CMSP的消息队列中,经过CMSP的加密传输和入库组件的解析,将更新数据转存的目标库。
进一步的,在MySQL数据库中执行删除操作时,删除测试表的一条数据并提交,执行删除数据操作时,MySQL源库会在二进制日志文件的gtid事件中记录该事务的提交序号,并在delete_row删除事件中记录删除的数据列。
进一步的,对于MySQL数据库中执行删除操作时,依据该事务的全局事务序号解析删除事件的内容,并将删除数据信息以标准字节流的形式存储到CMSP的消息队列中,通过CMSP的加密压缩传输及入库组件的解析,将删除数据转存到目标库。
本发明的一种MySQL数据库增量同步实现方法和现有技术相比,具有以下突出的有益效果:
复制安全性更高,由于一个事务在每个实例中只会被执行一次,因此解析时的安全性更高。切换简单,只需要全局事务序号即可,不需要像已有技术需追踪二进制日志文件名和事件位置。
具体实施方式
为了使本技术领域的人员更好的理解本发明的方案,下面结合具体的实施方式对本发明作进一步的详细说明。显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例都属于本发明保护的范围。
下面给出一个最佳实施例:
本发明的一种MySQL数据库增量同步实现方法,以增量同步前获取的唯一全局事务标识符为起点解析增量事务。尤其当一个增量事务中存在批量操作产生多个增量事件时,该方法也只获取一次待解析事务的全局事务序号,不再像传统的日志解析记录每个事件的log_pos。本发明将解析后的增量数据以标准字节流形式暂存到CMSP消息队列中,借助CMSP加密压缩传输,再通过解析入库端的CMSP传输消息队列,实现MySQL从源库到目标库数据同步。
首先在部署CMSP的用户下安装MySQL数据采集模块和MySQL入库模块。
当增量采集开始时以增量前获取的全局事务标识符为起点进行增量事务的解析,当解析表为配置表,对增量事务内容按行解析,同时记录该事务的唯一全局事务序号。
每次查询增量都在上次获取的全局事务序号的基础上获取新的事务序号,根据新事务序号进行新增、更新和删除事务的解析,从而实现对增量数据的持续同步。
以MySQL数据库的新增、更新、删除增量事务操作为例,对增量事务解析过程进行说明。
首先创建一张测试表,测试表中元素数据类型为一个整型和一个可变长度的字符串,create table test_1(t1 int(11)not null,t2 varchar(255)null,PRIMARY KEY(t1))。
(一)MySQL数据库新增事务操作
在该测试表中插入数据:INSERT INTO test_1(t1,t2)VALUES(1,'test1')。
MySQL执行新增事务时,源库在二进制日志中记录该事务的唯一事务序号和新增数据内容。
如下表所示,为MySQL提交新增事务时,存到二进制日志中gtid 事件的基本信息:
Figure RE-GDA0003016970610000051
Figure RE-GDA0003016970610000061
如下表所示,为MySQL数据库新增数据的具体解析:
Figure RE-GDA0003016970610000062
具体过程为首先获取全局事务序号,在此基础上解析该事务数据。尤其当一个事务中包含多个新增事件时,该方法也只解析一次gtid 事件获取全局事务序号,不再像传统的二进制日志解析需要记录每个事件的log_pos。该方法将解析的新增数据以标准字节流形式存储到 CMSP消息队列中,实现对新增事务的采集和存储,通过CMSP的加密传输及入库组件的解析,将插入的增量数据转存到目标库,实现MySQL 从源库到目标库的新增数据同步。
(二)MySQL更新事务操作
对该测试表中数据做修改:update test_1set t2='test2'。
MySQL执行更新事务时,源库在二进制日志中记录该事务的唯一事务序号和更新数据内容。
如下表所示,为MySQL更新事务时,二进制日志中的gtid事件的基本信息:
Figure RE-GDA0003016970610000071
Figure RE-GDA0003016970610000081
如下表所示,为MySQL更新数据的具体解析:
Figure RE-GDA0003016970610000082
Figure RE-GDA0003016970610000091
具体过程为,首先获取全局事务序号,在此基础上解析该事务数据。尤其当一个事务中包含多个更新事件时,该方法也只解析一次 gtid事件获取全局事务序号,不再像传统的二进制日志解析方式需要记录每个事件的log_pos。该方法将解析的新增数据以标准字节流的形式存储到CMSP的消息队列中,实现对MySQL数据库更新事务的采集和存储,经过CMSP的加密传输和入库组件的解析,将更新数据转存的目标库,实现MySQL从源库到目标库的更新同步。
(三)MySQL删除事务操作
对该测试表中数据做删除操作。delete from test_1where t1=1。
MySQL执行删除事务时,源库在二进制日志中记录该事务的唯一事务序号和删除数据内容。
如下表所示,为Mysql删除事务在二进制日志的gtid事件的基本内容:
Figure RE-GDA0003016970610000092
Figure RE-GDA0003016970610000101
如下表所示,为MySQL更新数据的具体解析:
Figure RE-GDA0003016970610000102
Figure RE-GDA0003016970610000111
具体过程为,首先获取全局事务序号,在此基础上解析该事务数据。尤其当一个事务中包含多个删除事件时,该方法也只解析一次 gtid事件获取全局事务序号,不再像传统的二进制日志解析方式需要记录每个事件的log_pos。该方法将解析的删除数据信息以标准字节流的形式存储到CMSP的消息队列中,实现对MySQL数据库删除事务的采集和存储,通过CMSP的加密压缩传输及入库组件的解析,将删除数据转存到目标库,实现MySQL从源库到目标库的删除同步。
上述具体的实施方式仅是本发明具体的个案,本发明的专利保护范围包括但不限于上述具体的实施方式,任何符合本发明的一种 MySQL数据库增量同步实现方法权利要求书的且任何所述技术领域普通技术人员对其做出的适当变化或者替换,皆应落入本发明的专利保护范围。
尽管已经示出和描述了本发明的实施例,对于本领域的普通技术人员而言,可以理解在不脱离本发明的原理和精神的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由所附权利要求及其等同物限定。

Claims (10)

1.一种MySQL数据库增量同步实现方法,其特征在于,该方法会在同步增量之前获取唯一的全局事务标识符即GTID值,并以该值为基点去解析MySQL的二进制日志文件的增量事务,将解析后的增量数据以自定义标准字节流的形式暂存到CMSP消息队列中,借助CMSP的加密压缩传输机制传输到入库端,再通过解析入库的消息队列,用于实现MySQL从源库到目标库的数据同步。
2.根据权利要求1所述的一种MySQL数据库增量同步实现方法,其特征在于,MySQL的全局事务标识符是对于每个已提交的事务的编号,且是连续并全局唯一;所述全局事务标识符由server_uuid:transaction_id组成,每个所述的MySQL服务器有一个全局唯一的server_uuid以及有内部不会重复且是连续递增的事务序号transaction_id。
3.根据权利要求2所述的一种MySQL数据库增量同步实现方法,其特征在于,当开启GTID模式后,MySQL数据库会在新增、更新、删除增量操作事务提交后创建唯一的全局事务序号,并把对应值以事件形式记录在二进制日志文件中。
4.根据权利要求3所述的一种MySQL数据库增量同步实现方法,其特征在于,当增量采集开始时以增量同步前获取的全局事务序号为起点进行数据事件类型的解析,当解析表为配置表,同时存在已提交的新增、变更和删除事务时,对GTID事件解析获取该事务的全局事务标识符,然后对数据事件内容进行按行解析获取数据记录,直到解析完本事务才开始新事务得解析,并获取对应的全局事务序号。
5.根据权利要求4所述的一种MySQL数据库增量同步实现方法,其特征在于,创建一张数据类型为一个整型和一个可变长度的字符串的测试表,向所述测试表中插入一条数据并提交,MySQL源库首先会在二进制日志文件的gtid事件中记录下所述事务的全局事务标识符,并在write_rows事件中记录新增的数据内容。
6.根据权利要求5所述的一种MySQL数据库增量同步实现方法,其特征在于,对于MySQL数据中执行新增操作时,依据全局事务序号解析新增事件中对应的每个字段的新增数据,并将解析的新增数据以标准字节流形式存储在CMSP消息队列中,通过CMSP的加密传输及入库组件的解析,将插入的增量数据转存到目标库。
7.根据权利要求6所述的一种MySQL数据库增量同步实现方法,其特征在于,在MySQL数据库中执行更新操作时,类似插入操作,修改测试表的一条记录数据并提交,MySQL源库会在二进制日志文件的gtid事件中记录该事务的序号,同时在update_rows更新事件中记录更新列数和数据值。
8.根据权利要求7所述的一种MySQL数据库增量同步实现方法,其特征在于,对于MySQL数据库中执行更新操作时,依据全局事务序号解析更新事件的内容,并将解析出的数据值以标准字节流的形式存储到CMSP的消息队列中,经过CMSP的加密传输和入库组件的解析,将更新数据转存的目标库。
9.根据权利要求8所述的一种MySQL数据库增量同步实现方法,其特征在于,在MySQL数据库中执行删除操作时,删除测试表的一条数据并提交,执行删除数据操作时,MySQL源库会在二进制日志文件的gtid事件中记录该事务的提交序号,并在delete_row删除事件中记录删除的数据列。
10.根据权利要求9所述的一种MySQL数据库增量同步实现方法,其特征在于,对于MySQL数据库中执行删除操作时,依据该事务的全局事务序号解析删除事件的内容,并将删除数据信息以标准字节流的形式存储到CMSP的消息队列中,通过CMSP的加密压缩传输及入库组件的解析,将删除数据转存到目标库。
CN202110188538.XA 2021-02-19 2021-02-19 一种MySQL数据库增量同步实现方法 Pending CN112835918A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110188538.XA CN112835918A (zh) 2021-02-19 2021-02-19 一种MySQL数据库增量同步实现方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110188538.XA CN112835918A (zh) 2021-02-19 2021-02-19 一种MySQL数据库增量同步实现方法

Publications (1)

Publication Number Publication Date
CN112835918A true CN112835918A (zh) 2021-05-25

Family

ID=75933721

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110188538.XA Pending CN112835918A (zh) 2021-02-19 2021-02-19 一种MySQL数据库增量同步实现方法

Country Status (1)

Country Link
CN (1) CN112835918A (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114003622A (zh) * 2021-12-30 2022-02-01 天津南大通用数据技术股份有限公司 一种事务型数据库之间巨大事务增量同步方法
CN114884975A (zh) * 2022-04-29 2022-08-09 青岛海尔科技有限公司 业务消息的处理方法和装置、存储介质及电子装置
CN117992257A (zh) * 2024-04-07 2024-05-07 天津南大通用数据技术股份有限公司 一种分布式数据库并行数据采集处理方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150347547A1 (en) * 2014-05-30 2015-12-03 Zardosht Kasheff Replication in a NoSQL System Using Fractal Tree Indexes
CN109144790A (zh) * 2018-09-30 2019-01-04 广州鼎甲计算机科技有限公司 MySQL数据库的合成备份方法和装置
CN110019140A (zh) * 2017-12-29 2019-07-16 华为技术有限公司 数据迁移方法、装置、设备以及计算机可读存储介质
CN110879813A (zh) * 2019-11-20 2020-03-13 浪潮软件股份有限公司 一种基于二进制日志解析的MySQL数据库增量同步实现方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150347547A1 (en) * 2014-05-30 2015-12-03 Zardosht Kasheff Replication in a NoSQL System Using Fractal Tree Indexes
CN110019140A (zh) * 2017-12-29 2019-07-16 华为技术有限公司 数据迁移方法、装置、设备以及计算机可读存储介质
CN109144790A (zh) * 2018-09-30 2019-01-04 广州鼎甲计算机科技有限公司 MySQL数据库的合成备份方法和装置
CN110879813A (zh) * 2019-11-20 2020-03-13 浪潮软件股份有限公司 一种基于二进制日志解析的MySQL数据库增量同步实现方法

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114003622A (zh) * 2021-12-30 2022-02-01 天津南大通用数据技术股份有限公司 一种事务型数据库之间巨大事务增量同步方法
CN114003622B (zh) * 2021-12-30 2022-04-08 天津南大通用数据技术股份有限公司 一种事务型数据库之间巨大事务增量同步方法
CN114884975A (zh) * 2022-04-29 2022-08-09 青岛海尔科技有限公司 业务消息的处理方法和装置、存储介质及电子装置
CN114884975B (zh) * 2022-04-29 2024-03-22 青岛海尔科技有限公司 业务消息的处理方法和装置、存储介质及电子装置
CN117992257A (zh) * 2024-04-07 2024-05-07 天津南大通用数据技术股份有限公司 一种分布式数据库并行数据采集处理方法
CN117992257B (zh) * 2024-04-07 2024-06-18 天津南大通用数据技术股份有限公司 一种分布式数据库并行数据采集处理方法

Similar Documents

Publication Publication Date Title
CN110879813B (zh) 一种基于二进制日志解析的MySQL数据库增量同步实现方法
CN112835918A (zh) 一种MySQL数据库增量同步实现方法
CN111046034B (zh) 管理内存数据及在内存中维护数据的方法和系统
US8626717B2 (en) Database backup and restore with integrated index reorganization
US7552130B2 (en) Optimal data storage and access for clustered data in a relational database
CN113986873B (zh) 一种海量物联网数据模型化的处理、存储与共享方法
US20180011861A1 (en) Managing storage of individually accessible data units
EP3435256B1 (en) Optimal sort key compression and index rebuilding
US20130346364A1 (en) Method and system for capturing change of data
US20130191523A1 (en) Real-time analytics for large data sets
CN111259004B (zh) 一种存储引擎中数据索引的方法以及相关装置
CN109086382B (zh) 一种数据同步方法、装置、设备及存储介质
CN110245037B (zh) 一种基于日志的Hive用户操作行为还原方法
CN111897813B (zh) 针对数据库资源的流控方法及装置
CN111651519A (zh) 数据同步方法、数据同步装置、电子设备及存储介质
CN103440265A (zh) 基于MapReduce的MYSQL数据库的变化数据捕获方法
US11748495B2 (en) Systems and methods for data usage monitoring in multi-tenancy enabled HADOOP clusters
CN112749167A (zh) 确定断链数据的方法、装置及非易失性存储介质
CN110222121A (zh) 一种基于CDC方式的SQL Server数据库增量同步实现方法及系统
CN115237914A (zh) 防篡改索引结构及其构建、存储和查询方法
CN113656384B (zh) 数据处理方法、分布式数据库系统、电子设备及存储介质
CN109246102B (zh) 一种支撑大规模认证数据快速存储及检索的系统及方法
US20220222146A1 (en) Versioned backup on an object addressable storage system
CN114490865A (zh) 数据库同步方法、装置、设备及计算机存储介质
CN113076313B (zh) 一种应急广播数据仓储方法

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
RJ01 Rejection of invention patent application after publication
RJ01 Rejection of invention patent application after publication

Application publication date: 20210525