CN116431734A - 一种es数据实时同步方法、***及存储介质 - Google Patents
一种es数据实时同步方法、***及存储介质 Download PDFInfo
- Publication number
- CN116431734A CN116431734A CN202310688859.5A CN202310688859A CN116431734A CN 116431734 A CN116431734 A CN 116431734A CN 202310688859 A CN202310688859 A CN 202310688859A CN 116431734 A CN116431734 A CN 116431734A
- Authority
- CN
- China
- Prior art keywords
- data
- mysql
- cluster
- configuring
- environment
- 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
- 238000000034 method Methods 0.000 title claims abstract description 32
- 230000006870 function Effects 0.000 claims description 18
- 238000012986 modification Methods 0.000 claims description 13
- 230000004048 modification Effects 0.000 claims description 13
- 238000012360 testing method Methods 0.000 claims description 13
- 238000012545 processing Methods 0.000 claims description 10
- 230000011218 segmentation Effects 0.000 claims description 9
- 230000008859 change Effects 0.000 claims description 7
- 238000005192 partition Methods 0.000 claims description 7
- 230000008569 process Effects 0.000 claims description 7
- 230000005856 abnormality Effects 0.000 claims description 3
- 238000003780 insertion Methods 0.000 claims description 3
- 230000037431 insertion Effects 0.000 claims description 3
- 238000013507 mapping Methods 0.000 claims description 3
- 230000004044 response Effects 0.000 claims description 3
- 230000007547 defect Effects 0.000 abstract description 4
- 238000004590 computer program Methods 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 4
- 230000006872 improvement Effects 0.000 description 3
- 238000010586 diagram Methods 0.000 description 2
- 238000001914 filtration Methods 0.000 description 2
- 239000012634 fragment Substances 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 238000012544 monitoring process Methods 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 241000579895 Chlorostilbon Species 0.000 description 1
- 230000006978 adaptation Effects 0.000 description 1
- 230000004075 alteration Effects 0.000 description 1
- 238000009530 blood pressure measurement Methods 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 230000006837 decompression Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 239000010976 emerald Substances 0.000 description 1
- 229910052876 emerald Inorganic materials 0.000 description 1
- 238000009434 installation Methods 0.000 description 1
- 239000010977 jade Substances 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000004806 packaging method and process Methods 0.000 description 1
- ZLIBICFPKPWGIZ-UHFFFAOYSA-N pyrimethanil Chemical compound CC1=CC(C)=NC(NC=2C=CC=CC=2)=N1 ZLIBICFPKPWGIZ-UHFFFAOYSA-N 0.000 description 1
- 230000010076 replication Effects 0.000 description 1
- 239000010979 ruby Substances 0.000 description 1
- 229910001750 ruby Inorganic materials 0.000 description 1
- 230000033772 system development Effects 0.000 description 1
- 230000036642 wellbeing Effects 0.000 description 1
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
- 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/22—Indexing; Data structures therefor; Storage structures
- G06F16/2282—Tablespace storage structures; Management thereof
-
- 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/24—Querying
- G06F16/245—Query processing
- G06F16/2458—Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
- G06F16/2474—Sequence data queries, e.g. querying versioned data
-
- 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/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/284—Relational databases
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Software Systems (AREA)
- Computing Systems (AREA)
- Fuzzy Systems (AREA)
- Mathematical Physics (AREA)
- Probability & Statistics with Applications (AREA)
- Computational Linguistics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供了一种es数据实时同步方法、***及存储介质,其方法包括如下:S1.配置mysql集群环境;S2.使用logstash连接mysql和es集群,将mysql中原有的数据全量同步到es中;S3.配置canal环境;S4.使用java编写canal客户端,获取增量数据信息;S5.配置kafka环境,并使用canal客户端将增量数据信息推送给kafka;S6.使用Kafka连接es集群,将增量数据以http请求的方式发送给es端口进行数据同步;S7.使用es接收请求,将增量数据同步到指定索引中。本发明使用canal做增量数据同步,克服了使用logstash做增量数据同步所带来的缺陷。
Description
技术领域
本发明涉及elasticSearch数据同步技术领域,尤其是涉及一种es数据实时同步方法、***及存储介质。
背景技术
elasticSearch(简称es)数据同步主要针对需要将mysql集群数据同步到elasticSearch集群的互联网项目,实现能够以极少的代价以及延迟,将mysql数据变化实时更新到elasticSearch中。其主要目标是在互联网项目应用中,用户能够快速感知到数据的更新,并在使用搜索(该搜索需要通过elasticSearch来实现)功能时能快速搜索出,以增加用户体验。
目前会使用logstash做增量数据同步,但是因为logstash的高资源消耗和缓慢的处理速度并不适合在服务器运行期间将增量数据从mysql同步到es。logstash无法实时感知mysql数据的变化,只能根据架构师配置的固定时间间隔来同步数据,而这个时间的设定必定会带来一定的不合理性,设置的过短会导致服务器资源快速消耗和占用,过长会降低用户的好感和体验,并且在数据变化不大的时期依然按照固定的时间间隔进行数据同步的话,必然会导致服务器资源的不必要消耗。
而目前也会用canal来进行增量数据同步,但canal无法承担复杂的同步业务,不具有幂等性,无法灵活对数据进行二次处理和过滤。
发明内容
本发明提供一种es数据实时同步方法、***及存储介质,通过lostash、canal、kibana、kafka、java等技术来做到mysql集群数据到elasticSearch集群的实时同步,其中,使用canal做增量数据同步,克服了使用logstash做增量数据同步所带来的缺陷,还引入了java、canal客户端和es客户端,克服了现有采用canal做增量数据同步所带来的缺陷。
本说明书实施例的第一方面公开了一种es数据实时同步方法,包括如下步骤:
S1.配置mysql集群环境,并开启mysql的binlog写入功能;
S2.使用logstash连接mysql和es集群,将mysql中原有的数据全量同步到es中;
S3.配置canal环境,连接mysql集群,订阅master主节点的binlog日志;
S4.使用java编写canal客户端,获取canal订阅到的增量数据信息;
S5.配置kafka环境,并使用canal客户端将增量数据信息推送给kafka;
S6.使用Kafka连接es集群,编写消费逻辑,调用es开放的接口,将增量数据以http请求的方式发送给es端口进行数据同步;
S7.使用es接收请求,将增量数据同步到指定索引中。
本说明书的一实施例中,S1包括:
S11.安装多个MYSQL软件或服务器,从中选择一个作为主节点,即为主机,其余为从机;并在my.cnf配置文件中,将server-id属性设置为1,开启binlog日志功能,以记录主节点上所有数据的修改变化;
S12.为所有从机设置不同的server-id值,并配置从机连接主机的相关参数;
S13.配置完成后需要进行连通性测试,必须保证主机上进行写操作时主机的binlog日志能够同步更新,且从机数据也能实时更新到;
S14.使用mysqldump将主节点中已有数据全量同步到从机中,以保证数据的一致性;
S15.通过模拟各种故障场景测试集群环境,并根据条件进行压测,以保证MYSQL集群在恶劣高压环境下依然能正常工作;
S16.创建数据库、表、索引和视图。
本说明书的一实施例中,S2包括:
S21.配置elasticSearch集群环境;
S211.安装下载多个elasticSearch软件,区分节点类型为主节点、数据节点或主数据节点,以便各个节点在所处集群中分配到角色和任务;
S212.为每个集群节点配置elasticsearch.yml配置文件,并定义集群名称、节点名称、网络地址和开启跨域访问,以让集群节点之间能够相互连通并进行数据同步;
S213.启动各个elasticSearch节点,使用kibana客户端工具检测集群状态,并对集群环境做适当调整;
S214.根据条件优化集群性能;
S215.添加ik中文分词器,为中文文本做智能分词,以更好兼容中文数据,并添加扩展分词和停用词;
S216.依据mysql集群中的表和字段,一一对应建立索引和映射,并给需要的字段添加analyzer和search_analyzer属性,以依据该字段做合适的倒排索引。
本说明书的一实施例中,S2还包括:
S22.配置logstash环境,做全量数据同步;
S221.下载安装logstash软件,检查版本是否对应;
S222.上传对应的mysql驱动依赖,以让logstash能够连接数据库;
S223.为每一个es索引创建logstash配置文件,其中需要配置连接Mysql集群的环境、查询mysql数据的sql语句、es连接环境、对应的es索引名称、mysql主键字段以及日志相关参数;
S224.编写pipelines.yml配置文件,为每一个es索引对应配置文件添加pipeline.id和path.config属性,以支持多表数据的同时***;
S225.启动logstash,检查并测试es数据的全量同步。
本说明书的一实施例中,S3包括:
S31.下载canal软件,根据版本修改源码以及软件依赖,以支持项目使用的mysql版本和elasticsearch版本;
S32.下载jdk,配置jdk环境;
S33.修改canal deployer的配置文件,设置数据库地址、账号、密码以及salveId值,确保与mysql集群中各节点的server-id值不同;
S34.修改mysql驱动版本,并修改驱动器权限;
S35.启动服务,观察日志变化,查看是否正常成功连接mysql并读取到binlog增量日志信息。
本说明书的一实施例中,S4包括:
S41.安装配置java环境以及springboot环境;
S42.上传canal客户端的maven依赖;
S43.编写客户端连接代码,指定canal软件的连接地址、端口、实例名称和账号密码;
S44.编写canal客户端消费逻辑,将得到的增量数据信息转换为json数据格式,并以http请求的方式发送出去。
本说明书的一实施例中,S5包括:
S51.安装并解压kafka软件;
S52.修改server.properties文件,配置kafka进程端口号、主机地址及名称和日志相关属性;
S53.修改zookeeper.properties文件,配置客户端连接端口数据目录等属性;
S54.启动zookeeper和kafka,检测是否有启动错误和异常;
S55.创建topic,指定名称、zookeeper连接环境、分区和副本因子。
本说明书的一实施例中,S6包括:
S61.创建kafka生产者,接收http请求,提取并转换数据格式,编写回调函数并对失败进行补偿处理,配置application.prpertise,自定义分区器和重试次数等属性,并将增量数据信息发送到topic中;
S62.添加连接es的客户端依赖,并配置连接es集群的相关参数;
S63.创建kafka消费者,指定监听的topic、partition、offset,配置application.prpertise,开启批量消费和自动应答等属性,接收topic内的增量数据;
S64.以json数据格式拼接http请求,使用restHighLevelClient对象将增量数据以http请求的形式发送至es集群。
本说明书实施例的第二方面公开了一种es数据实时同步***,包括:
第一配置模块,用于配置mysql集群环境,并开启mysql的binlog写入功能;
全量数据同步模块,用于使用logstash连接mysql和es集群,将mysql中原有的数据全量同步到es中;
第二配置模块,用于配置canal环境,连接mysql集群,订阅master主节点的binlog日志;
增量数据获取模块,用于使用java编写canal客户端,获取canal订阅到的增量数据信息;
第三配置模块,用于配置kafka环境,并使用canal客户端将增量数据信息推送给kafka;
第一数据同步模块,用于使用Kafka连接es集群,编写消费逻辑,调用es开放的接口,将增量数据以http请求的方式发送给es端口进行数据同步;
第二数据同步模块,用于使用es接收请求,将增量数据同步到指定索引中。
本说明书实施例的第三方面公开了一种计算机可读存储介质,所述存储介质存储计算机指令,当计算机读取所述计算机指令时,所述计算机执行上述的es数据实时同步方法。
综上所述,本发明至少具有以下有益效果:
本发明通过lostash、canal、kibana、kafka,java等技术来做到mysql集群数据到elasticSearch集群的实时同步。Logstash用于将mysql集群中已有的数据全部同步至elasticSearch。canal用于连接mysql集群并订阅binlog日志的增量日志数据。kibana用于查看和监控elasticSearch中数据的变化,编写java canal客户端代码用于连接canal,获取canal订阅到的增量日志数据,并推送至kafka消息队列。Kafka用于接收canal客户端推送的数据,连接elasticSearch集群后将增量数据推送至elasticSearch集群中,以此做到mysql数据到elasticSearch的实时同步。
其中,使用logstash做全量数据同步:因为它提供了强大的数据过滤和转换功能,可以对数据进行处理、解析和转换,且插件化的架构使得它可以方便地扩展,满足各种数据处理需求。在***开发和测试阶段,方便做***功能测试和canal技术的引入、维护和有效性检测。
使用canal做增量数据同步,解决了使用logstash做增量数据同步所带来的实时性不足以及资源不合理消耗等问题;同时引入了java、canal客户端和es客户端,使用程序代码根据的业务需求对数据进行二次处理和包装,比如算数运算、日期格式转换、过滤等等,克服了现有采用canal做增量数据同步所带来的缺陷。
用java编写canal客户端的消费逻辑,而不直接使用canal本身自带的消费逻辑(canal在本发明中只使用了其订阅功能,而未使用消费功能):1、因为要使用canal消费功能在配置上相当繁琐,且现今canal还无法很好地支持elasticsearch7以上的版本;2、无法针对特殊场景进行定制化操作和处理,无法承担复杂业务,不具备数据重试、幂等性等机制。
使用kafka做为中间件连接canal客户端和es集群,而不直接让canal客户端对接es集群:1、可根据业务需求创建多topic、多分区,采用多消费者模式,增加多线程并发消费能力,提高***同步性能。2、kafka是分布式流处理平台,更适合分布式很集群环境,能处理大规模的实时数据流;3、高性能、可扩展、可靠性、灵活性、可观测性、峰值处理能力;4、能够做到java程序和es集群之间的解耦,有助于控制和优化生产消息和消费消息的处理速度不一致问题,减轻服务器压力,并提高了***的健壮性。
附图说明
为了更清楚地说明本发明实施例技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明中所涉及的es数据实时同步方法的步骤示意图。
图2为本发明中所涉及的es数据实时同步方法的流程示意图。
图3为本发明中所涉及的es数据实时同步***的模块示意图。
具体实施方式
在下文中,仅简单地描述了某些示例性实施例。正如本领域技术人员可认识到的那样,在不脱离本发明实施例的精神或范围的情况下,可通过各种不同方式修改所描述的实施例。因此,附图和描述被认为本质上是示例性的而非限制性的。
下文的公开提供了许多不同的实施方式或例子用来实现本发明实施例的不同结构。为了简化本发明实施例的公开,下文中对特定例子的部件和设置进行描述。当然,它们仅仅为示例,并且目的不在于限制本发明实施例。此外,本发明实施例可以在不同例子中重复参考数字和/或参考字母,这种重复是为了简化和清楚的目的,其本身不指示所讨论各种实施方式和/或设置之间的关系。
下面结合附图对本发明的实施例进行详细说明。
如图1和图2所示,本说明书实施例提供了一种es数据实时同步方法,包括:
S1.配置mysql集群环境(这里我们使用MYSQL Replication的集群方案,区分出主从机)。
在一些实施例中,S1包括:
S11.安装多个MYSQL软件或服务器,从中选择一个作为主节点;在my.cnf配置文件中,将server-id属性设置为1,开启binlog日志功能,以记录主节点上所有数据的修改变化,并可做相应的性能调整;
S12.为所有从机设置不同的server-id值,并配置从机连接主机的相关参数(master-host、master-user等);
S13.配置完成后需要进行连通性测试,必须保证主机上进行写操作时主机的binlog日志能够同步更新,且从机数据也能实时更新到;
S14.使用mysqldump等工具将主节点中已有数据全量同步到从机中,以保证数据的一致性;
S15.测试集群环境,可通过模拟各种故障场景,并根据条件进行适当的压测,以保证MYSQL集群在恶劣高压环境下依然能正常工作(可采用Nginx等技术做mysql集群的负载均衡,以减少单节点的压力,提高集群的可用性);
S16.根据自身项目情况创建数据库、表、索引、视图等对象。
S2使用logstash连接mysql和es集群,将mysql中原有的数据全量同步到es中。
在一些实施例中,S2包括:
S21.配置elasticSearch集群环境:
S211.安装下载多个elasticSearch软件,区分节点类型为主节点、数据节点或主数据节点,以便各个节点可以在所处集群中分配到角色和任务;
S212.为每个集群节点配置elasticsearch.yml配置文件,需要定义集群名称,节点名称,网络地址,开启跨域访问等等属性,以让集群节点之间能够相互连通并进行数据同步;
S213.启动各个elasticSearch节点,使用kibana客户端工具检测集群状态,并对集群环境做适当调整,比如可选择分片策略,重新分配分片,添加或删除节点;
S214.根据条件优化集群性能,如决策分片数量,控制分片大小,横向扩展节点,提高副本数量等;
S215.添加ik中文分词器,为中文文本做智能分词,以更好兼容中文数据,并适当添加扩展分词和停用词,为用户提供更强大的搜索功能;
S216.依据mysql集群中的表和字段,一一对应建立索引和映射,并给需要的字段添加analyzer和search_analyzer属性,以依据该字段做合适的倒排索引;
在一些实施例中,S2还包括:
S22.配置logstash环境,做全量数据同步:
S221.下载安装logstash软件,检查版本是否对应(es、kibana、logstash版本需要对应正确);
S222.上传对应的mysql驱动依赖,以让logstash能够连接数据库;
S223.为每一个es索引创建logstash配置文件,其中需要配置连接Mysql集群的环境、查询mysql数据的sql语句、es连接环境、对应的es索引名称、mysql主键字段以及日志相关参数;
S224.编写pipelines.yml配置文件,为每一个es索引对应配置文件添加pipeline.id和path.config属性,以支持多表数据的同时***;
S225.启动logstash,检查并测试es数据的全量同步。
S3.配置canal环境,连接mysql集群,订阅master主节点的binlog日志。
在一些实施例中,S3包括:
S31.下载canal软件,根据版本修改源码以及软件依赖,以支持项目使用的mysql版本和elasticsearch版本;
S32.下载jdk,配置jdk环境(版本需对应);
S33.修改canal deployer的配置文件,设置数据库地址、账号、密码以及salveId值,确保与mysql集群中各节点的server-id值不同;
S34.修改mysql驱动版本(现今canal默认支持mysql5.7版本,若版本不一致,需重新上传mysql驱动以做相应的适配),并修改驱动器权限;
S35.启动服务,观察日志变化,查看是否正常成功连接mysql并读取到binlog增量日志信息.
S4.使用java编写canal客户端,获取canal订阅到的增量数据信息。
在一些实施例中,S4包括:
S41.安装配置java环境以及springboot环境;
S42.上传canal客户端的maven依赖;
S43.编写客户端连接代码,指定canal软件的连接地址、端口、实例名称、账号密码等信息;
S44.编写canal客户端消费逻辑,能够将得到的增量数据信息转换为json数据格式,并以http请求的方式发送出去。
S5.配置kafka环境。
在一些实施例中,S5包括:
S51.安装解压kafka软件;
S52.修改server.properties文件,配置kafka进程端口号、主机地址及名称、日志相关属性等;
S53.修改zookeeper.properties文件,配置客户端连接端口数据目录,并可根据条件做适当优化,如配置最大连接数、超时时间、允许最大同步进程数等,提高kafka工作的性能和效率;
S54.启动zookeeper和kafka,检测是否有启动错误和异常;
S55.创建topic,指定名称、zookeeper连接环境、分区、副本因子等信息。
S6.使用Kafka连接es集群,编写生产消费逻辑,将增量数据发送至es集群。
在一些实施例中,S6包括:
S61.创建kafka生产者,接收http请求,提取并转换数据格式,编写回调函数并对失败进行补偿处理,配置application.prpertise,自定义分区器和重试次数等属性,并将增量数据信息发送到topic中;
S62.添加连接es的客户端依赖,并配置连接es集群的相关参数;
S63.创建kafka消费者,指定监听的topic、partition、offset,配置application.prpertise,开启批量消费和自动应答等属性,接收topic内的增量数据;
S64.以json数据格式拼接http请求,使用restHighLevelClient对象将增量数据以http请求的形式发送至es集群。
S7.es监听指定端口,接收请求,自动将增量数据同步到指定索引中。
如图3所示,本说明书实施例的第二方面公开了一种es数据实时同步***,包括:
第一配置模块,用于配置mysql集群环境,并开启mysql的binlog写入功能;
全量数据同步模块,用于使用logstash连接mysql和es集群,将mysql中原有的数据全量同步到es中;
第二配置模块,用于配置canal环境,连接mysql集群,订阅master主节点的binlog日志;
增量数据获取模块,用于使用java编写canal客户端,获取canal订阅到的增量数据信息;
第三配置模块,用于配置kafka环境,并使用canal客户端将增量数据信息推送给kafka;
第一数据同步模块,用于使用Kafka连接es集群,编写消费逻辑,调用es开放的接口,将增量数据以http请求的方式发送给es端口进行数据同步;
第二数据同步模块,用于使用es接收请求,将增量数据同步到指定索引中。
在一些实施例中,es数据实时同步***还包括:
处理器,与第一配置模块、全量数据同步模块、第二配置模块、增量数据获取模块、第三配置模块、第一数据同步模块和第二数据同步模块连接;
存储器,与处理器连接,并存储有可在处理器上运行的计算机程序;其中,当处理器执行计算机程序时,处理器控制第一配置模块、全量数据同步模块、第二配置模块、增量数据获取模块、第三配置模块、第一数据同步模块和第二数据同步模块工作,以实现上述的es数据实时同步方法。
本说明书实施例的第三方面公开了一种计算机可读存储介质,存储介质存储计算机指令,当计算机读取计算机指令时,计算机执行上述的es数据实时同步方法。
以上所述实施例是用以说明本发明,并非用以限制本发明,所以举例数值的变更或等效元件的置换仍应隶属本发明的范畴。
由以上详细说明,可使本领域普通技术人员明了本发明的确可达成前述目的,实已符合专利法的规定。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,应当指出的是,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
应当注意的是,上述有关流程的描述仅仅是为了示例和说明,而不限定本说明书的适用范围。对于本领域技术人员来说,在本说明书的指导下可以对流程进行各种修正和改变。然而,这些修正和改变仍在本说明书的范围之内。
上文已对基本概念做了描述,显然,对于阅读此申请后的本领域的普通技术人员来说,上述发明披露仅作为示例,并不构成对本申请的限制。虽然此处并未明确说明,但本领域的普通技术人员可能会对本申请进行各种修改、改进和修正。该类修改、改进和修正在本申请中被建议,所以该类修改、改进、修正仍属于本申请示范实施例的精神和范围。
同时,本申请使用了特定词语来描述本申请的实施例。例如“一个实施例”、“一实施例”、和/或“一些实施例”意指与本申请至少一个实施例有关的某一特征、结构或特性。因此,应当强调并注意的是,本说明书中在不同位置两次或以上提及的“一实施例”或“一个实施例”或“一替代性实施例”并不一定是指同一实施例。此外,本申请的一个或多个实施例中的某些特征、结构或特点可以进行适当的组合。
此外,本领域的普通技术人员可以理解,本申请的各方面可以通过若干具有可专利性的种类或情况进行说明和描述,包括任何新的和有用的过程、机器、产品或物质的组合,或对其任何新的和有用的改进。因此,本申请的各个方面可以完全由硬件实施、可以完全由软件(包括固件、常驻软件、微代码等)实施、也可以由硬件和软件组合实施。以上硬件或软件均可被称为“单元”、“模块”或“***”。此外,本申请的各方面可以采取体现在一个或多个计算机可读介质中的计算机程序产品的形式,其中计算机可读程序代码包含在其中。
本申请各部分操作所需的计算机程序代码可以用任意一种或以上程序设计语言编写,包括如Java、Scala、Smalltalk、Eiffel、JADE、Emerald、C++、C#、VB.NET、Python等的面向对象程序设计语言、如C程序设计语言、VisualBasic、Fortran2103、Perl、COBOL2102、PHP、ABAP的常规程序化程序设计语言、如Python、Ruby和Groovy的动态程序设计语言或其它程序设计语言等。该程序代码可以完全在用户计算机上运行、或作为独立的软件包在用户计算机上运行、或部分在用户计算机上运行部分在远程计算机运行、或完全在远程计算机或服务器上运行。在后种情况下,远程计算机可以通过任何网络形式与用户计算机连接,比如局域网(LAN)或广域网(WAN),或连接至外部计算机(例如通过因特网),或在云计算环境中,或作为服务使用如软件即服务(SaaS)。
此外,除非权利要求中明确说明,本申请所述处理元素和序列的顺序、数字字母的使用、或其他名称的使用,并非用于限定本申请流程和方法的顺序。尽管上述披露中通过各种示例讨论了一些目前认为有用的发明实施例,但应当理解的是,该类细节仅起到说明的目的,附加的权利要求并不仅限于披露的实施例,相反,权利要求旨在覆盖所有符合本申请实施例实质和范围的修正和等价组合。例如,尽管上述各种组件的实现可以体现在硬件设备中,但是它也可以实现为纯软件解决方案,例如,在现有服务器或移动设备上的安装。
同理,应当注意的是,为了简化本申请披露的表述,从而帮助对一个或多个发明实施例的理解,前文对本申请的实施例的描述中,有时会将多种特征归并至一个实施例、附图或对其的描述中。然而,本申请的该方法不应被解释为反映所申明的客体需要比每个权利要求中明确记载的更多特征的意图。相反,发明的主体应具备比上述单一实施例更少的特征。
Claims (10)
1.一种es数据实时同步方法,其特征在于,包括如下步骤:
S1.配置mysql集群环境,并开启mysql的binlog写入功能;
S2.使用logstash连接mysql和es集群,将mysql中原有的数据全量同步到es中;
S3.配置canal环境,连接mysql集群,订阅master主节点的binlog日志;
S4.使用java编写canal客户端,获取canal订阅到的增量数据信息;
S5.配置kafka环境,并使用canal客户端将增量数据信息推送给kafka;
S6.使用Kafka连接es集群,编写消费逻辑,调用es开放的接口,将增量数据以http请求的方式发送给es端口进行数据同步;
S7.使用es接收请求,将增量数据同步到指定索引中。
2.根据权利要求1所述的es数据实时同步方法,其特征在于,S1包括如下步骤:
S11.安装多个MYSQL软件或服务器,从中选择一个作为主节点,即为主机,其余为从机;并在my.cnf配置文件中,将server-id属性设置为1,开启binlog日志功能,以记录主节点上所有数据的修改变化;
S12.为所有从机设置不同的server-id值,并配置从机连接主机的相关参数;
S13.配置完成后需要进行连通性测试,必须保证主机上进行写操作时主机的binlog日志能够同步更新,且从机数据也能实时更新到;
S14.使用mysqldump将主节点中已有数据全量同步到从机中,以保证数据的一致性;
S15.通过模拟各种故障场景测试集群环境,并根据条件进行压测,以保证正常工作;
S16.创建数据库、表、索引和视图。
3.根据权利要求1所述的es数据实时同步方法,其特征在于,S2包括如下步骤:
S21.配置elasticSearch集群环境;
S211.安装下载多个elasticSearch软件,区分节点类型为主节点、数据节点或主数据节点,以便各个节点在所处集群中分配到角色和任务;
S212.为每个集群节点配置elasticsearch.yml配置文件,并定义集群名称、节点名称、网络地址和开启跨域访问,以让集群节点之间能够相互连通并进行数据同步;
S213.启动各个elasticSearch节点,使用kibana客户端工具检测集群状态,并对集群环境做调整;
S214.根据条件优化集群性能;
S215.添加ik中文分词器,为中文文本做智能分词,以更好兼容中文数据,并添加扩展分词和停用词;
S216.依据mysql集群中的表和字段,一一对应建立索引和映射,并给需要的字段添加analyzer和search_analyzer属性,以依据该字段做合适的倒排索引。
4.根据权利要求3所述的es数据实时同步方法,其特征在于,S2还包括如下步骤:
S22.配置logstash环境,做全量数据同步;
S221.下载安装logstash软件,检查版本是否对应;
S222.上传对应的mysql驱动依赖,以让logstash能够连接数据库;
S223.为每一个es索引创建logstash配置文件,其中需要配置连接Mysql集群的环境、查询mysql数据的sql语句、es连接环境、对应的es索引名称、mysql主键字段以及日志相关参数;
S224.编写pipelines.yml配置文件,为每一个es索引对应配置文件添加pipeline.id和path.config属性,以支持多表数据的同时***;
S225.启动logstash,检查并测试es数据的全量同步。
5.根据权利要求1所述的es数据实时同步方法,其特征在于,S3包括如下步骤:
S31.下载canal软件,根据版本修改源码以及软件依赖,以支持项目使用的mysql版本和elasticsearch版本;
S32.下载jdk,配置jdk环境;
S33.修改canal deployer的配置文件,设置数据库地址、账号、密码以及salveId值,确保与mysql集群中各节点的server-id值不同;
S34.修改mysql驱动版本,并修改驱动器权限;
S35.启动服务,观察日志变化,查看是否正常成功连接mysql并读取到binlog增量日志信息。
6.根据权利要求1所述的es数据实时同步方法,其特征在于,S4包括如下步骤:
S41.安装配置java环境以及springboot环境;
S42.上传canal客户端的maven依赖;
S43.编写客户端连接代码,指定canal软件的连接地址、端口、实例名称和账号密码;
S44.编写canal客户端消费逻辑,将得到的增量数据信息转换为json数据格式,并以http请求的方式发送出去。
7.根据权利要求1所述的es数据实时同步方法,其特征在于,S5包括如下步骤:
S51.安装并解压kafka软件;
S52.修改server.properties文件,配置kafka进程端口号、主机地址及名称和日志相关属性;
S53.修改zookeeper.properties文件,配置客户端连接端口数据目录;
S54.启动zookeeper和kafka,检测是否有启动错误和异常;
S55.创建topic,指定名称、zookeeper连接环境、分区和副本因子。
8.根据权利要求1所述的es数据实时同步方法,其特征在于,S6包括如下步骤:
S61.创建kafka生产者,接收http请求,提取并转换数据格式,编写回调函数并对失败进行补偿处理,配置application.prpertise,自定义分区器和重试次数,并将增量数据信息发送到topic中;
S62.添加连接es的客户端依赖,并配置连接es集群的相关参数;
S63.创建kafka消费者,指定监听的topic、partition、offset,配置application.prpertise,开启批量消费和自动应答,接收topic内的增量数据;
S64.以json数据格式拼接http请求,使用restHighLevelClient对象将增量数据以http请求的形式发送至es集群。
9.一种es数据实时同步***,包括:
第一配置模块,用于配置mysql集群环境,并开启mysql的binlog写入功能;
全量数据同步模块,用于使用logstash连接mysql和es集群,将mysql中原有的数据全量同步到es中;
第二配置模块,用于配置canal环境,连接mysql集群,订阅master主节点的binlog日志;
增量数据获取模块,用于使用java编写canal客户端,获取canal订阅到的增量数据信息;
第三配置模块,用于配置kafka环境,并使用canal客户端将增量数据信息推送给kafka;
第一数据同步模块,用于使用Kafka连接es集群,编写消费逻辑,调用es开放的接口,将增量数据以http请求的方式发送给es端口进行数据同步;
第二数据同步模块,用于使用es接收请求,将增量数据同步到指定索引中。
10.一种计算机可读存储介质,其特征在于,所述存储介质存储计算机指令,当计算机读取所述计算机指令时,所述计算机执行权利要求1至8中任一项所述的es数据实时同步方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310688859.5A CN116431734A (zh) | 2023-06-12 | 2023-06-12 | 一种es数据实时同步方法、***及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310688859.5A CN116431734A (zh) | 2023-06-12 | 2023-06-12 | 一种es数据实时同步方法、***及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116431734A true CN116431734A (zh) | 2023-07-14 |
Family
ID=87091078
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310688859.5A Pending CN116431734A (zh) | 2023-06-12 | 2023-06-12 | 一种es数据实时同步方法、***及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116431734A (zh) |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109325077A (zh) * | 2018-08-03 | 2019-02-12 | 北京马上慧科技术有限公司 | 一种基于canal和kafka实现实时数仓的*** |
CN111400362A (zh) * | 2020-02-19 | 2020-07-10 | 北京值得买科技股份有限公司 | 一种基于Elasticsearch的分布式搜索***搭建方法以及装置 |
CN111858747A (zh) * | 2020-05-29 | 2020-10-30 | 大数金科网络技术有限公司 | 将MySQL数据库同步到Elasticsearch的方法 |
CN113220706A (zh) * | 2021-04-07 | 2021-08-06 | 深圳市猎芯科技有限公司 | 元器件产品查询方法、装置、设备和介质 |
CN113282555A (zh) * | 2021-06-18 | 2021-08-20 | 北京奇艺世纪科技有限公司 | 一种数据处理方法、装置、设备及存储介质 |
CN113535668A (zh) * | 2021-04-23 | 2021-10-22 | 中国建设银行股份有限公司 | 日志数据处理方法及装置 |
CN115982231A (zh) * | 2022-12-13 | 2023-04-18 | 浪潮云信息技术股份公司 | 分布式实时搜索***及方法 |
-
2023
- 2023-06-12 CN CN202310688859.5A patent/CN116431734A/zh active Pending
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109325077A (zh) * | 2018-08-03 | 2019-02-12 | 北京马上慧科技术有限公司 | 一种基于canal和kafka实现实时数仓的*** |
CN111400362A (zh) * | 2020-02-19 | 2020-07-10 | 北京值得买科技股份有限公司 | 一种基于Elasticsearch的分布式搜索***搭建方法以及装置 |
CN111858747A (zh) * | 2020-05-29 | 2020-10-30 | 大数金科网络技术有限公司 | 将MySQL数据库同步到Elasticsearch的方法 |
CN113220706A (zh) * | 2021-04-07 | 2021-08-06 | 深圳市猎芯科技有限公司 | 元器件产品查询方法、装置、设备和介质 |
CN113535668A (zh) * | 2021-04-23 | 2021-10-22 | 中国建设银行股份有限公司 | 日志数据处理方法及装置 |
CN113282555A (zh) * | 2021-06-18 | 2021-08-20 | 北京奇艺世纪科技有限公司 | 一种数据处理方法、装置、设备及存储介质 |
CN115982231A (zh) * | 2022-12-13 | 2023-04-18 | 浪潮云信息技术股份公司 | 分布式实时搜索***及方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10353913B2 (en) | Automating extract, transform, and load job testing | |
CN112131237B (zh) | 数据同步方法、装置、设备及计算机可读介质 | |
US9342784B1 (en) | Rule based module for analyzing computing environments | |
US9256509B1 (en) | Computing environment analyzer | |
CN112148578A (zh) | 基于机器学习的it故障缺陷预测方法 | |
CN110063042A (zh) | 一种数据库故障的响应方法及其终端 | |
CN111339118A (zh) | 基于Kubernetes的资源变更历史记录方法及装置 | |
CN111831508A (zh) | 一种动态监控数据采集方法及装置 | |
CN114328250A (zh) | 软件***自动自检方法、介质和装置 | |
CN116501700B (zh) | 一种app格式化文件离线存储方法、装置、设备及存储介质 | |
CN117851163A (zh) | 一种基于自研openstack平台的服务巡检工具 | |
CN113157701A (zh) | 一种oracle数据库的双活机制部署方法及装置 | |
CN116431734A (zh) | 一种es数据实时同步方法、***及存储介质 | |
CN115905413A (zh) | 一种基于Python协程和DataX的数据同步平台 | |
CN115587141A (zh) | 一种数据库同步方法和装置 | |
CN112685486B (zh) | 数据库集群的数据管理方法、装置、电子设备及存储介质 | |
CN115221242A (zh) | 一种数据同步方法、装置及计算机可读存储介质 | |
CN109144788B (zh) | 一种重建osd的方法、装置及*** | |
WO2021050111A1 (en) | Replication configuration for multiple heterogeneous data stores | |
CN117194390B (zh) | 数据库迁移方法和装置 | |
US20240160559A1 (en) | Automated decoupling of unit tests | |
WO2023002606A1 (ja) | 生成装置、生成方法、モデルデータのデータ構造、リレーションデータのデータ構造および生成プログラム | |
Data | User's Guide | |
CN117725130A (zh) | 数据同步方法及装置、存储介质和电子设备 | |
CN116610755A (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: 20230714 |