zoukankan      html  css  js  c++  java
  • myql 实时同步数据到 ES

    需求背景

    存储在 Mysql 中的数据量比较大,在 web 端需要进行搜索框搜索,使用的是 es  ,问题是如何保证 mysql 数据与 es 数据的实时一致性

    技术选型

    canal 与 maxwell 都可以实现 mysql binlog 实时监控,将增量数据同步。最后定为使用  canal 

    环境搭建

    根据当前公司提供的 es 版本与 mysql 版本在本地搭建虚拟机服务,通过下载 canal-server 与 canal-adapter 构建环境

    遇到的问题

    在 canal-adapter 始终可以打印消费日志,但是无法同步到 es ,对问题进行了排查

    1.配置问题,查询相关资料,对配置进行分析,无果

    2.数据库与es 是否正常,数据库是确定正常,问题基本确定在下游写入问题

    3.下载源码,对配置分析,是否正确

    4.github 官网,issue 查找相关的类似问题,确定为系统 bug ,  更改当前部署版本 ,成功

    2021-07-06 17:31:34.199 [pool-2-thread-1] INFO  c.a.o.canal.client.adapter.logger.LoggerAdapterExample - DML: {"data":[{"id":1,"title":"新的title","sub_title":"这是一个title","price":1010.0,"pic":"1"}],

    "database":"canal_test","destination":"example","es":1625563894000,"groupId":"g1","isDdl":false,"old":[{"price":10.0}],"pkNames":["id"],"sql":"","table":"product","ts":1625563894199,"type":"UPDATE"} 2021-07-06 17:31:34.201 [pool-2-thread-1] DEBUG c.a.o.canal.client.adapter.es.core.service.ESSyncService - DML: {"data":[{"id":1,"title":"新的title","sub_title":"这是一个title","price":1010.0,"pic":"1"}]
    ,"database":"canal_test","destination":"example","es":1625563894000,"groupId":"g1","isDdl":false,"old":[{"price":10.0}],"pkNames":["id"],"sql":"","table":"product","ts":1625563894199,"type":"UPDATE"} Affected indexes: product

    以上为服务器上消费到的 binlog 日志 ,同时 es 也进行了实时的更新

    参考文章:https://blog.csdn.net/jcmj123456/article/details/109705562

  • 相关阅读:
    Turtlebot-导航
    Turtlebot-创建地图-Gmapping-Kinect
    Gflags
    Linux Driver 入门
    Linux Kernel 入门
    Linux Driver 入门
    Linux Driver 入门
    Linux Driver 入门
    Win10 复制文件路径
    vs2010 nuget 基础连接已经关闭:发送时发生错误
  • 原文地址:https://www.cnblogs.com/bytecodebuffer/p/14931552.html
Copyright © 2011-2022 走看看