码农知识堂 - 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

     

  • 相关阅读:
    mysql常用语句之DQL:查询语句
    安卓系统开发之systrace
    开源纯粹主义:每一颗螺丝钉都是自由的
    详解JVM(运行时数据区)
    MySQL---触发器详解
    【java期末复习题】第3章 运算符与流程控制
    Linux常用基本命令详解(一)
    一幅长文细学Spring(二)——IOC
    批量插入数据,自定义分页器,forms组件,钩子函数,forms组件重要参数,modelform组件
    vue router 路由跳转获取不到参数
  • 原文地址:https://www.cnblogs.com/sportsky/p/16536264.html
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号