canal实现mysql数据实时同步到es

这篇具有很好参考价值的文章主要介绍了canal实现mysql数据实时同步到es。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

问题背景

最近有一个需求:原有一些mysql数据,这些数据量很大,且包含文本信息,需要对其进行搜索,这时如果使用mysql的like来匹配,效率会很低,且很可能影响整个系统的运行,经过和同事的讨论,最终决定使用es来做搜索。
但是源数据有很多关联关系,搜索的时候也会带上这些条件,因此需要将文本信息同步到es,且当mysql数据有新增、更新或删除操作时,也实时同步到es.

工具调研

从mysql同步到es的工具,目前市面上比较火的是logstash和canal

logstash

logstash经过调研就能知道,它依赖于更新字段,也就是说,需要有一个字段如update_time,当这个时间大于当前时间,就表明数据做了更新。但由于我们的数据来源于多个渠道,大家规范不统一(很可能时区都不统一),且update_time字段没有做触发更新,因此不考虑使用logstash

canal

canal是可以使用队列的,但考虑到部署难度,以及尽量少引入其他工具的原则,不使用队列,而是直接监听消息。
事实上,想要启动canal参考这篇文档就足够了canal QuickStart
但实际部署时会踩很多坑,比如canal的readme以及wiki首页都没有明显提到ClientAdapter这个工具,事实上这个工具是很好用的,它可以批量将mysql数据导入es,也可以自动同步mysql数据变动到es,非常好用,因此,下载的时候最好就把deployer和adapter一块下载了
canal基本按照官方文档来部署就行,没有多大坑,但记得在这之前确认下bin_log是否真的开启了,否则canal会报错,而且报错信息难以发现原因。

clientAdapter

第一个坑,es的监听。我本机随便下的一个es,实际上是有默认账号密码的,但是不知道是我版本原因还是怎么样,总之用默认账号密码无法登录,这时我生成了以下账号密码,参考的这篇文章:es账号密码设置,注意要记得存一下生成的账号密码。
然后,我发现adapter依旧报错(这里报错信息找不到了),发现是es没有设置
。。。
暂时没时间来写这篇文章,先直接写下途中会遇到的坑及解决方案
注意事项:
(1)adapter的sql语句配置中,不要使用反引号"`",否则会报奇怪的错(报错信息忘了)
(2)adapter1.16的bug:所有表都需要别名,哪怕是一个表,也要写成如:select u.name from user as u
(3)大量数据导入,需要设置并发数,提高并发数可解决导入失败的问题
(4)记得设置下es账号密码,以及, es的配置中network.host要改成network.host: 0.0.0.0(如果遇到了adapter同步500,INternal Server Error,不要问,先这么改吧,我也是查issue查出来的)
(5)有可能跑一段时间adapter不再同步了,临时的解决方案是把instance下的mate.bat、h2.mv.db删掉,会自动继续同步的,治本的方案暂时没时间考虑文章来源地址https://www.toymoban.com/news/detail-604048.html

到了这里,关于canal实现mysql数据实时同步到es的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Canal —— 一款 MySql 实时同步到 ES 的阿里开源神器

    目录 一. 前言 二. Canal 简介和使用场景 2.1. Canal 简介 2.2. Canal 使用场景 三. Canal Server 设计 3.1. 整体设计 3.2. EventParser 设计 3.3. CanalLogPositionManager 设计 3.4. CanalHAController 类图设计 3.5. EventSink 类图设计和扩展 3.6. EventStore 类图设计和扩展 3.7. MetaManager 类图设计和扩展 四. Can

    2024年01月25日
    浏览(39)
  • 基于Canal实现Mysql数据实时同步到Elasticsearch(Docker版)

    1、Canal简介   Canal主要用途是对MySQL数据库增量日志进行解析,提供增量数据的订阅和消费,简单说就是可以对MySQL的增量数据进行实时同步,支持同步到MySQL、Elasticsearch、HBase等数据存储中去。   Canal会模拟MySQL主库和从库的交互协议,从而伪装成MySQL的从库,然后向My

    2024年02月10日
    浏览(31)
  • 基于Canal实现MySQL 8.0 数据库数据同步

    主机名称 操作系统 说明 192.168.11.82 Ubuntu 22.04 主库所在服务器 192.168.11.28 Oracle Linux Server 8.7 从库所在服务器 1、Ubuntu系统下MySQL配置文件位置 2、CentOS系统下MySQL配置文件位置 3、添加如下配置,开启MySQL binlog功能 关于canal简介,这里就不再阐述,具体可以参看官方文档介绍,地

    2023年04月23日
    浏览(57)
  • 使用canal+rocketmq实现将mysql数据同步到es

    实际开发过程中,经常遇到数据库与缓存不一致的问题,造成这种问题的原因有很多,其中缓存数据没有及时更新、缓存中过期的数据没有及时更新,导致缓存中存在失效数据,导致数据库与缓存不一致。而这种问题的出现大部分都是因为同步延迟、缓存失效、过期和错误使

    2024年02月11日
    浏览(31)
  • canal实现MySQL和ES同步实践

    canal是阿里开源的数据同步工具,基于binlog可以将数据库同步到其他各类数据库中,目标数据库支持mysql,postgresql,oracle,redis,MQ,ES等。 MySQL的主从复制是依赖于binlog,也就是记录MySQL上所有操作的逻辑日志保存在磁盘上。主从复制就是将binlog中的数据从主库传输到从库上,一般这

    2024年04月14日
    浏览(42)
  • canal同步mysql数据到es中

    项目中业务数据量比较大,每类业务表都达到千万级别,虽然做了分库分表和读写分离,每张表数据控制在500W一下,但是效率还是达不到要求,为了提高查询效率,我们使用ES查询。 而将mysql实时同步到es中保证数据一致性就成了我们的工作之下。 jdk1.8(依赖jdk环境,需要先

    2023年04月08日
    浏览(38)
  • 利用Canal把MySQL数据同步到ES

    Canal是阿里巴巴开源的一个数据库变更数据同步工具,主要用于 MySQL 数据库的增量数据到下游的同步,例如同步到 Elasticsearch、HBase、Hive 等。下面是一个基本的步骤来导入 MySQL 数据库到 Elasticsearch。 安装和配置 Canal 首先,需要在你的机器上安装并配置Canal。具体步骤可在 C

    2024年02月16日
    浏览(34)
  • canal实时同步mysql数据到elasticsearch(部署,配置,测试)(一)

    canal基于MySQL数据库增量日志解析,提供增量数据订阅和消费,是阿里开源CDC工具,它可以获取MySQL binlog数据并解析,然后将数据变动传输给下游。基于canal,可以实现从MySQL到其他数据库的实时同步 MySQL主备复制原理 MySQL master 将数据变更写入二进制日志( binary log, 其中记录叫

    2023年04月08日
    浏览(34)
  • Springcloud Alibaba 使用Canal将MySql数据实时同步到Elasticsearch

    本篇文章在Springcloud Alibaba使用Canal将Mysql数据实时同步到Redis保证缓存的一致性-CSDN博客 基础上使用canal将mysql数据实时同步到Elasticsearch。 公共包 实体类Sku @Column注解 用来标识实体类中属性与数据表中字段的对应关系 name 定义了被标注字段在数据库表中所对应字段的名称;由

    2024年02月03日
    浏览(29)
  • Canal同步Mysql实时操作日志至RabbitMQ,并实现监听及解析处理

    关于Canal的介绍及原理不在此赘述,可自行查阅。笔者在使用Canal同步Mysql实时操作记录至RabbitMQ的过程中,也翻阅了一些大牛们的文章,可能是我使用的Canal版本与文中版本不一致,出现了一些问题,在此总结记录一下可行的方案。 注:本文使用的Canal为 v1.1.7 先查看目标数据

    2024年04月10日
    浏览(32)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包