2016 - 2024

感恩一路有你

mysql时间延迟怎么解决 如何把mysql中的数据同步到elasticsearch中?

浏览量:2924 时间:2023-06-30 23:37:05 作者:采采

如何把mysql中的数据同步到elasticsearch中?

近年来接触了比较多的有同步需求的项目,文件同步以及各种主流和非主流数据库之间的同步。要把数据从 MySQL 同步到 Elasticsearch,可以通过以下办法实现。

自实现

数据同步的关键的就是提取变化数据,MySQL 中捕获数据变化的有:

触发器:简单直接,使用触发器把变化记录的主键插入到一个中间表中,程序定时扫描提取数据

Binlog:基于数据库二进制日志,日志中记录了数据的增删改操作,一般都是使用程序模拟 Slave 接收并解析日志,从而获取数据

冗余字段:可以在同步表中添加一个更新时间字段,定时扫描并提取大于某个时间点的数据

自实现是需要成本的,当然了,也有很多开源工具可以使用。

使用其他工具

logstash-input-jdbc:这是 logstash 官方提供的一个插件,支持全量同步和增量同步,原理也比较简单,就是定时执行SQL,可使用上述使用**冗余字段**的方法。地址: go-mysql-elasticsearch:基于 Go 开发的,使用 Binlog 进行同步的第三方开源工具。地址: elasticsearch-jdbc:第三方工具,基于 SQL 进行全量和增量的同步。地址:

推荐使用 logstash-input-jdbc,比较易用且稳定。

powerjob优缺点?

PowerJob特点:

使用简单:提供前端Web界面,允许开发者可视化地完成调度任务的管理(增、删、改、查)、任务运行状态监控和运行日志查看等功能。

定时策略完善:支持CRON表达式、固定频率、固定延迟和API四种定时调度策略。

执行模式丰富:支持单机、广播、Map、MapReduce四种执行模式,其中Map/MapReduce处理器能使开发者寥寥数行代码便获得集群分布式计算的能力。

DAG工作流支持:支持在线配置任务依赖关系,可视化得对任务进行编排,同时还支持上下游任务间的数据传递

执行器支持广泛:支持Spring Bean、内置/外置Java类、Shell、Python等处理器,应用范围广。

运维便捷:支持在线日志功能,执行器产生的日志可以在前端控制台页面实时显示,降低debug成本,极大地提高开发效率。

依赖精简:最小仅依赖关系型数据库(MySQL/Oracle/MS SQLServer...),扩展依赖为MongoDB(用于存储庞大的在线日志)。

高可用高性能:调度服务器经过精心设计,一改其他调度框架基于数据库锁的策略,实现了无锁化调度。部署多个调度服务器可以同时实现高可用和性能的提升(支持无限的水平扩展)。

故障转移与恢复:任务执行失败后,可根据配置的重试策略完成重试,只要执行器集群有足够的计算节点,任务就能顺利完成。

数据 任务 数据库 日志 策略

版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。