CN111858747A - 将MySQL数据库同步到Elasticsearch的方法 - Google Patents
将MySQL数据库同步到Elasticsearch的方法 Download PDFInfo
- Publication number
- CN111858747A CN111858747A CN202010473984.0A CN202010473984A CN111858747A CN 111858747 A CN111858747 A CN 111858747A CN 202010473984 A CN202010473984 A CN 202010473984A CN 111858747 A CN111858747 A CN 111858747A
- Authority
- CN
- China
- Prior art keywords
- data
- mysql
- synchronizing
- log file
- kafka
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1095—Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
- H04L67/565—Conversion or adaptation of application format or content
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/548—Queue
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Computing Systems (AREA)
- Data Mining & Analysis (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及数据库领域,具体涉及一种能够降低资源占用率、缩短查询时间、提高实时性的将MySQL数据库同步到Elasticsearch的方法。本发明的将MySQL数据库同步到Elasticsearch的方法,首先Canal组件实时拉取MySQL的binary log文件;然后Canal组件解析binary log文件;Canal组件将binary log文件解析后形成的数据发送至消息队列kafka;应用程序消费kafka的数据,并将数据转换成行数据row data;应用程序将行数据row data写入到Elasticsearch,这样就大大降低了数据同步延迟,使得业务系统响应更快,性能更高,新写入到MySQL的数据在很短的时间内就能被用户查询到。
Description
技术领域
本发明涉及数据库领域,具体涉及一种能够降低资源占用率、缩短查询时间、提高实时性的将MySQL数据库同步到Elasticsearch的方法。
背景技术
关系型数据库MySQL内的数据在查询大数据量和频繁查询的时候往往会出现性能瓶颈,造成系统响应变慢,而ElasticSearch(简称:ES)刚好能解决关系型数据库的查询缺陷,支持分布式部署、查询,性能较关系型数据库有非常大的提升,因此,系统设计往往采用的方案就是将数据写入MySQL,而后异步的方式同步到ES,从ES进行查询。
目前往往采用定时任务扫描MySQL表的变化,将变化同步到ES。其缺点主要有:
(1)实时性较低,定时任务是在固定时间间隔定时的去扫描,比如1分钟扫描一次,那么ES就存在0至1分钟的延时才能更新到MySQL的数据。
(2)由于定时任务需要读取数据库数据,定时任务本身就会对数据库性能造成损耗,会占用其他用户访问数据库的资源。
发明内容
针对现有技术中的缺陷,本发明提供一种将MySQL数据库同步到Elasticsearch的方法,能够降低资源占用率、缩短查询时间、提高实时性。
本发明采用的技术方案是:将MySQL数据库同步到Elasticsearch的方法,包括以下步骤:
a、通过Canal组件实时拉取MySQL的binary log文件;
b、Canal组件解析binary log文件;
c、Canal组件将binary log文件解析后形成的数据发送至消息队列kafka;
d、应用程序消费kafka的数据,并将数据转换成行数据row data;
e、应用程序将行数据row data写入到Elasticsearch。
为更好地实现本发明,所述的步骤a中,Canal组件实时拉取MySQL的binary log文件时,模拟mysql slave交互协议,将自己伪装成mysql slave,向mysql master发送dump请求,mysql master收到dump请求则开始推送binary log给canal组件。
为更好地实现本发明,所述的步骤b中,Canal组件拉取binary log文件后,进行解析,并翻译成protobuf格式的数据,再将该数据通过CanalMessageDeserializer进行解码。
为更好地实现本发明,所述的步骤b中,Canal组件拉取binary log文件后,进行解析,并翻译成json格式的数据。
为更好地实现本发明,所述的步骤c中,将json格式的数据或者protobuf格式解码后的数据发送至消息队列kafka,排队等待处理。
为更好地实现本发明,所述的步骤d中,所述的应用程序创建多个消费者,形成消费者群消费kafka的数据。
为更好地实现本发明,所述的消费者群配合有群组协调器的broker发送心跳,维持消费者群的从属关系以及它们对kafka数据分区的所有权关系。
为更好地实现本发明,所述的Kafka通过Connect在Kafka和外部存储系统之间移动数据提供一种可靠且伸缩的方式,它为连接器插件提供了一组API和一个运行时-Connect负责运行插件以及相应的数据。
本发明的有益效果体现在:本发明的将MySQL数据库同步到Elasticsearch的方法,首先Canal组件实时拉取MySQL的binary log文件;然后Canal组件解析binary log文件;Canal组件将binary log文件解析后形成的数据发送至消息队列kafka;应用程序消费kafka的数据,并将数据转换成行数据row data;应用程序将行数据row data写入到Elasticsearch,这样就大大降低了数据同步延迟,使得业务系统响应更快,性能更高,新写入到MySQL的数据在很短的时间内就能被用户查询到。
附图说明
为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍。在所有附图中,类似的元件或部分一般由类似的附图标记标识。附图中,各元件或部分并不一定按照实际的比例绘制。
图1为本发明的将MySQL数据库同步到Elasticsearch的方法的一种结构框图。
具体实施方式
下面将结合附图对本发明技术方案的实施例进行详细的描述。以下实施例仅用于更加清楚地说明本发明的技术方案,因此只作为示例,而不能以此来限制本发明的保护范围。
需要注意的是,除非另有说明,本申请使用的技术术语或者科学术语应当为本发明所属领域技术人员所理解的通常意义。
实施例1:
如图1所示,本发明的将MySQL数据库同步到Elasticsearch的方法,包括以下步骤:
a、通过Canal组件实时拉取MySQL的binary log文件;
b、Canal组件解析binary log文件;
c、Canal组件将binary log文件解析后形成的数据发送至消息队列kafka;
d、应用程序消费kafka的数据,并将数据转换成行数据row data;
e、应用程序将行数据row data写入到Elasticsearch。
本发明的将MySQL数据库同步到Elasticsearch的方法,首先Canal组件实时拉取MySQL的binary log文件;然后Canal组件解析binary log文件;Canal组件将binary log文件解析后形成的数据发送至消息队列kafka;应用程序消费kafka的数据,并将数据转换成行数据row data;应用程序将行数据row data写入到Elasticsearch,这样就大大降低了数据同步延迟,使得业务系统响应更快,性能更高,新写入到MySQL的数据在很短的时间内就能被用户查询到。
实施例2:
在上述实施例的基础上,为进一步更好地实施本发明,所述的步骤a中,Canal组件实时拉取MySQL的binary log文件时,模拟mysql slave交互协议,将自己伪装成mysqlslave,向mysql master发送dump请求,mysql master收到dump请求则开始推送binary log给canal组件。Canal组件实时拉取MySQL的binary log文件,模拟mysql slave交互协议,将自己伪装成mysql slave,向mysql master发送dump请求,mysql master收到dump请求则开始推送binary log给canal组件,实现数据拉取。
实施例3:
在上述实施例的基础上,为进一步更好地实施本发明,所述的步骤b中,Canal组件拉取binary log文件后,进行解析,并翻译成protobuf格式的数据,再将该数据通过CanalMessageDeserializer进行解码。由于protobuf格式是一种效率和兼容性都很优秀的二进制数据传输格式,可以用于诸如网络传输、配置文件、数据存储等诸多领域,因此采用这种格式,能够提高MySQL数据库同步到Elasticsearch的速度。
实施例4:
在上述实施例的基础上,为进一步更好地实施本发明,所述的步骤b中,Canal组件拉取binary log文件后,进行解析,并翻译成json格式的数据。json格式的数据没有结束标签,读写速度更快,不使用保留字,结构简单,生成和解析都比较方便。在实际应用中,经常使用ajax配合json来完成任务,比和XML配合容易的多,速度快,如果使用XML,需要读取XML文档,然后用XML DOM来遍历文档并读取值并存储在变量中。使用json格式的数据,只需读取json字符串,大大减少了延迟时间,提高了相应速度。
实施例5:
在上述实施例的基础上,为进一步更好地实施本发明,所述的步骤c中,将json格式的数据或者protobuf格式解码后的数据发送至消息队列kafka,排队等待处理。所述的步骤d中,所述的应用程序创建多个消费者,形成消费者群消费kafka的数据。所述的消费者群配合有群组协调器的broker发送心跳,维持消费者群的从属关系以及它们对kafka数据分区的所有权关系。
实施例6:
在上述实施例的基础上,为进一步更好地实施本发明,所述的Kafka通过Connect在Kafka和外部存储系统之间移动数据提供一种可靠且伸缩的方式,它为连接器插件提供了一组API和一个运行时-Connect负责运行插件以及相应的数据。Connect以worker进程集群的方式运行,基于work进程安装连接器插件,然后使用REST API管理和配置connector,这些work进程都是长时间运行的作业。connector启动额外的task,利用work节点的资源以并行的方式移动大量的数据。SourceConnector负责从源系统读取数据,并把数据对象提供给work进程,SinkConnector负责从work进程获取数据,并把它们写入目标系统。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围,其均应涵盖在本发明的权利要求和说明书的范围当中。
Claims (8)
1.将MySQL数据库同步到Elasticsearch的方法,其特征在于包括以下步骤:
a、通过Canal组件实时拉取MySQL的binary log文件;
b、Canal组件解析binary log文件;
c、Canal组件将binary log文件解析后形成的数据发送至消息队列kafka;
d、应用程序消费kafka的数据,并将数据转换成行数据row data;
e、应用程序将行数据row data写入到Elasticsearch。
2.根据权利要求1所述的将MySQL数据库同步到Elasticsearch的方法,其特征在于:所述的步骤a中,Canal组件实时拉取MySQL的binary log文件时,模拟mysql slave交互协议,将自己伪装成mysql slave,向mysqlmaster发送dump请求,mysql master收到dump请求则开始推送binary log给canal组件。
3.根据权利要求2所述的将MySQL数据库同步到Elasticsearch的方法,其特征在于:所述的步骤b中,Canal组件拉取binary log文件后,进行解析,并翻译成protobuf格式的数据,再将该数据通过CanalMessageDeserializer进行解码。
4.根据权利要求2所述的将MySQL数据库同步到Elasticsearch的方法,其特征在于:所述的步骤b中,Canal组件拉取binary log文件后,进行解析,并翻译成json格式的数据。
5.根据权利要求3或4所述的将MySQL数据库同步到Elasticsearch的方法,其特征在于:所述的步骤c中,将json格式的数据或者protobuf格式解码后的数据发送至消息队列kafka,排队等待处理。
6.根据权利要求5所述的将MySQL数据库同步到Elasticsearch的方法,其特征在于:所述的步骤d中,所述的应用程序创建多个消费者,形成消费者群消费kafka的数据。
7.根据权利要求6所述的将MySQL数据库同步到Elasticsearch的方法,其特征在于:所述的消费者群配合有群组协调器的broker发送心跳,维持消费者群的从属关系以及它们对kafka数据分区的所有权关系。
8.根据权利要求1所述的将MySQL数据库同步到Elasticsearch的方法,其特征在于:所述的Kafka通过Connect在Kafka和外部存储系统之间移动数据提供一种可靠且伸缩的方式,它为连接器插件提供了一组API和一个运行时-Connect负责运行插件以及相应的数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010473984.0A CN111858747A (zh) | 2020-05-29 | 2020-05-29 | 将MySQL数据库同步到Elasticsearch的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010473984.0A CN111858747A (zh) | 2020-05-29 | 2020-05-29 | 将MySQL数据库同步到Elasticsearch的方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111858747A true CN111858747A (zh) | 2020-10-30 |
Family
ID=72985336
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010473984.0A Pending CN111858747A (zh) | 2020-05-29 | 2020-05-29 | 将MySQL数据库同步到Elasticsearch的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111858747A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114584574A (zh) * | 2022-04-28 | 2022-06-03 | 武汉四通信息服务有限公司 | 数据同步方法、装置、计算机设备及存储介质 |
CN116431734A (zh) * | 2023-06-12 | 2023-07-14 | 成都信息工程大学 | 一种es数据实时同步方法、系统及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107783975A (zh) * | 2016-08-24 | 2018-03-09 | 北京京东尚科信息技术有限公司 | 分布式数据库同步处理的方法和装置 |
CN109241072A (zh) * | 2018-08-31 | 2019-01-18 | 携程计算机技术(上海)有限公司 | 基于Canal的缓存更新方法及系统 |
CN109325077A (zh) * | 2018-08-03 | 2019-02-12 | 北京马上慧科技术有限公司 | 一种基于canal和kafka实现实时数仓的系统 |
-
2020
- 2020-05-29 CN CN202010473984.0A patent/CN111858747A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107783975A (zh) * | 2016-08-24 | 2018-03-09 | 北京京东尚科信息技术有限公司 | 分布式数据库同步处理的方法和装置 |
CN109325077A (zh) * | 2018-08-03 | 2019-02-12 | 北京马上慧科技术有限公司 | 一种基于canal和kafka实现实时数仓的系统 |
CN109241072A (zh) * | 2018-08-31 | 2019-01-18 | 携程计算机技术(上海)有限公司 | 基于Canal的缓存更新方法及系统 |
Non-Patent Citations (1)
Title |
---|
NEHA NARKHEDE等,薛命灯译: "《Kafka权威指南》", vol. 2018, 人民邮电出版社, pages: 69 - 72 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114584574A (zh) * | 2022-04-28 | 2022-06-03 | 武汉四通信息服务有限公司 | 数据同步方法、装置、计算机设备及存储介质 |
CN116431734A (zh) * | 2023-06-12 | 2023-07-14 | 成都信息工程大学 | 一种es数据实时同步方法、系统及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109284334B (zh) | 实时数据库同步方法、装置、电子设备及存储介质 | |
CN111339186B (zh) | 工作流引擎数据同步方法、装置、介质及电子设备 | |
CN108965355B (zh) | 用于数据传输的方法、装置及计算机可读存储介质 | |
US10824537B2 (en) | Method, device, and computer readable medium for tracing computing system | |
CA2997061C (en) | Method and system for parallelization of ingestion of large data sets | |
CN104731956A (zh) | 同步数据的方法、系统及相关数据库 | |
CN111858747A (zh) | 将MySQL数据库同步到Elasticsearch的方法 | |
CN112286941A (zh) | 一种基于Binlog+HBase+Hive的大数据同步方法和装置 | |
US11934287B2 (en) | Method, electronic device and computer program product for processing data | |
CN111625585A (zh) | 硬件加速数据库的访问方法、装置、主机及存储介质 | |
CN113900810A (zh) | 分布式图处理方法、系统及存储介质 | |
CN112612799A (zh) | 一种数据同步方法及终端 | |
CN112905618A (zh) | 数据处理方法以及装置 | |
WO2023000785A1 (zh) | 用于处理数据的方法、装置、系统、服务器和介质 | |
US20100269034A1 (en) | High-speed web server | |
CN106293862B (zh) | 一种可扩展标记语言xml数据的解析方法和装置 | |
CN110674221B (zh) | 一种空间数据同步方法、终端及计算机可读存储介质 | |
CN112883088A (zh) | 一种数据处理方法、装置、设备及存储介质 | |
CN113076343B (zh) | 数据查询方法、装置、设备及存储介质 | |
CN113448757B (zh) | 消息处理方法、装置、设备、存储介质和系统 | |
CN115277707A (zh) | 业务处理方法、装置、电子设备和存储介质 | |
CN114493875A (zh) | 交易执行方法、计算机设备和存储介质 | |
CN113760920A (zh) | 一种数据同步方法、装置、电子设备和存储介质 | |
CN113051244A (zh) | 数据访问方法和装置、数据获取方法和装置 | |
CN114647686A (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 |