码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • canal-1.1.5实时同步MySQL数据到Elasticsearch


    一、环境准备

    1、jkd 8+

    2、mysql 5.7+

    3、Elasticsearch 7+

    4、kibana 7+

    5、canal.adapter 1.1.5 

    二、部署

    一、创建数据库CanalDb和表UserInfo

    复制代码
    SET NAMES utf8mb4;
    SET FOREIGN_KEY_CHECKS = 0;
    
    -- ----------------------------
    -- Table structure for UserInfo
    -- ----------------------------
    DROP TABLE IF EXISTS `UserInfo`;
    CREATE TABLE `UserInfo`  (
      `id` int(11) NOT NULL AUTO_INCREMENT,
      `user_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL,
      `phone` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL,
      `age` int(11) DEFAULT NULL,
      PRIMARY KEY (`id`) USING BTREE
    ) ENGINE = InnoDB AUTO_INCREMENT = 5 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;
    
    SET FOREIGN_KEY_CHECKS = 1;
    复制代码

     

     

     

    二、kibana创建索引

    复制代码
    PUT canal_product 
    {
      "mappings": {
        "properties": {
          "user_name": {
            "type": "text"
          },
          "phone": {
            "type": "text"
          },
          "age": {
            "type": "integer"
          }
        }
      }
    }
    复制代码

     

     

     

     

     

     

     

    三、下载安装canal.adapter

    github:https://github.com/alibaba/canal/releases/tag/canal-1.1.5

    额外需要下载v1.1.5-alpha-2快照版本的canal.adapter-1.1.5.tar.gz(release1.1.5版本的jar包有bug)

    分别解压缩后,将v1.1.5-alpha-2解压缩文件夹下plugin文件夹中的 client-adapter.es7x-1.1.5-SNAPSHOT-jar-with-dependencies.jar 替换掉release版本的plugin文件的 client-adapter.es7x-1.1.5-jar-with-dependencies.jar,并重命名,再将该jar赋予权限 chmod 777 client-adapter.es7x-1.1.5-jar-with-dependencies.jar

     

     

     

    1、解压并修改配置文件 conf/application.yml

    只需要修改特定的几处即可,关于各节点说明可参考官方说明:https://help.aliyun.com/document_detail/135297.html

     

    srcDataSources:
        defaultDS:
          url: jdbc:mysql://127.0.0.1:3306/CanalDb?useUnicode=true&characterEncoding=utf-8&useSSL=false
          username: canal
          password: canal

     

    复制代码
    - name: es7
            hosts: 127.0.0.1:9200 # 127.0.0.1:9200 for rest mode ,127.0.0.1:9003 for transport mode 
            properties:
              mode: rest #transport  or rest 
              security.auth: es:22222 #  only used for rest mode
              cluster.name: elasticsearch  # es集群节点名称
    复制代码

     

     

     

     

     2、启动服务

    # 启动服务
    ./bin/startup.sh

    3、查看日志是否启动成功

    cat logs/adapter/adapter.log

    如图所示

     

     4、实时同步

    向数据库中插入一条数据

    INSERT INTO `CanalDb`.`UserInfo`( `user_name`, `phone`, `age`) VALUES ('张三', '10086', 99);

    查看日志

     

    kibana查看索引数据

    GET canal_product/_search

     

     

    5、全量同步,修改conf/es7/mytest_user.yml配置文件,或者新建一个yml文件也可

    复制代码
    dataSourceKey: defaultDS # 源数据源的key, 对应上面配置的srcDataSources中的值
    destination: example  # canal的instance或者MQ的topic
    groupId: g1 # 对应MQ模式下的groupId, 只会同步对应groupId的数据
    esMapping:
      _index: canal_product # es 的索引名称
      _id: _id  # es 的_id, 如果不配置该项必须配置下面的pk项_id则会由es自动分配
      sql: "SELECT
             p.id as _id,
             p.user_name,
             p.phone,
             p.age
            FROM
             UserInfo p "        # sql映射
      etlCondition: "where p.id>={}"   #etl的条件参数
      commitBatch: 3000   # 提交批大小
    复制代码

     

     

     

    curl -X POST http://127.0.0.1:8081/etl/es7/mytest_user.yml

     

     

     

     

     

     

     学习链接:https://help.aliyun.com/document_detail/135297.html

                       https://blog.csdn.net/zh1998wx/article/details/123101442?spm=1001.2101.3001.6650.1&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7Edefault-1-123101442-blog-125808233.pc_relevant_aa&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7Edefault-1-123101442-blog-125808233.pc_relevant_aa&utm_relevant_index=1

     

  • 相关阅读:
    滴滴9.17笔试题复盘(差分数组和前缀和数组)
    聊聊Peewee框架
    获取淘宝/天猫购买到商品的订单详情——buyer_order_detail
    振弦传感器和无线振弦采集仪在隧道安全监测的解决方案
    为什么重写 equals() 就一定要重写 hashCode() 方法
    (八)DDR_PHY架构及功能——(PUB组成、初始化及Training流程、Clock关系)
    Kubernetes — Calico
    UI 学习 二 可访问性 模式
    tomcat的安装和解析
    【论文阅读笔记】Revisiting RCAN: Improved Training for Image Super-Resolution
  • 原文地址:https://www.cnblogs.com/sportsky/p/16536264.html
  • 最新文章
  • 沪漂五周年了:我越来越迷茫了
    Agentic Skill Routing 实战:别再把所有 Skill 塞进 AI Agent 上下文
    MySQL-Seconds_behind_master的精度误差
    [MAF预定义ChatClient中间件-03]CachingChatClient——利用缓存省钱省时间
    AI的至暗历史:从万众期待到被政府撤资,AI的两次死亡徘徊
    Agent OS :五种驯服不确定性的范式
    PortSwigger SQL注入LAB11
    数据库即时编译JIT
    [Begin]AI Learn Data Day 0
    深度学习进阶(二十七)现代 LLM 的核心架构设计其二:SwiGLU
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号