• Canal-1.1.6推送数据至Elasticsearch7.16.2(整合版)


    一、环境

    1.系统环境

    screenfetch
    
    • 1

    在这里插入图片描述
    2.软件版本

    • Mysql-5.7.36
    • Elasticsearch7.16.2
    • Kibana-7.16.2
    • Canal.Admin-1.1.7-SNAPSHOT
    • Canal.Deployer-1.1.7-SNAPSHOT
    • Canal.Adapter-1.1.6(tcp模块插件用的1.1.7-SNAPSHOT版)
      (说明:adapter1.1.7存在es-mapping映射问题,adapter1.1.6存在tcp通讯问题故此缝合了一下,顺带修复了日期格式转换错误)
      alibaba官方下载地址alibaba.canal.com
      csdn阿坤缝合版地址canal.all-1.6.7.tar.gz
    ./bin/mysql -S ./mysql.sock -P${port}  -uroot  -e"select version();"
    
    • 1

    在这里插入图片描述

     curl --user elastic:Csdn@123 192.168.200.154:9200
    
    • 1

    在这里插入图片描述
    在这里插入图片描述

    二、部署

    1.配置Canal-Admin
    (注意:我用的自己缝合好的包,大家也可以根据需求没时间研究的话可以直接区下载已整合好的包:canal.all-1.6.7.tar.gz

    tar -xf canal.all-1.6.7.tar.gz 
    
    • 1

    在这里插入图片描述
    创建canal_manager库

    CREATE SCHEMA `canal_manager` DEFAULT CHARACTER SET utf8mb4 ;
    
    • 1

    配置数据库将canal_manager.sql表结构导入mysql

    use canal_manager;
    source /srv/program/canal/admin/conf/canal_manager.sql
    CREATE USER canaladmin IDENTIFIED BY 'Csdn@123.';
    GRANT ALL ON canal_manager.* TO 'canaladmin'@'%';
    FLUSH PRIVILEGES;
    
    • 1
    • 2
    • 3
    • 4
    • 5

    在这里插入图片描述
    修改配置文件

    vim conf/application.yml
    ...
    spring.datasource:
      address: 127.0.0.1:3307
      database: canal_manager
      username: canaladmin
      password: Csdn@123.
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    在这里插入图片描述
    启动

     ./bin/startup.sh
    
    • 1

    在这里插入图片描述
    访问:http://ip:8089
    用户:admin
    密码:123456
    在这里插入图片描述
    2.配置Canal-Deployer
    数据库开启binlog和row模式

    #未开启的数据库
    vim my.cnf
    
    [mysqld]
    log-bin=mysql-bin # 开启 binlog
    binlog-format=ROW # 选择 ROW 模式
    server_id=1 # 配置 MySQL replaction 需要定义,不要和 canal 的 slaveId 重复
    
    #已经开启的数据库
     SET SESSION binlog_format = 'ROW';
     show variables like "%binlog_format%";
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    在这里插入图片描述

    创建instance实例所需的数据库账户

    #授权 canal 链接 MySQL 账号具有作为 MySQL slave 的权限, 如果已有账户可直接 grant
    CREATE USER canal IDENTIFIED BY 'Csdn@123.';  
    GRANT SELECT, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'canal'@'%';
    -- GRANT ALL PRIVILEGES ON *.* TO 'canal'@'%' ;
    FLUSH PRIVILEGES;
    
    • 1
    • 2
    • 3
    • 4
    • 5

    修改配置文件

    vim conf/canal_local.properties
    
    canal.ip = 192.168.200.152
    
    canal.admin.manager = 192.168.200.152:8089
    ...
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    在这里插入图片描述
    启动

    ./bin/startup.sh local
    
    • 1

    在这里插入图片描述

    回admin平台查看(deployer服务会自动注册进去)
    在这里插入图片描述
    canal日志正常
    在这里插入图片描述
    instance实例日志正常(缝合包自带一个es7同步实例)
    在这里插入图片描述
    (注意:由于是本人整合过的安装包所以这些配置都是自带的,正常情况需要自己去创建instance实例并且绑定主机的)
    3.配置Canal-Adapter
    注释conf下的远程数据库链接地址bootstrap.yml

    vim  conf/bootstrap.yml
    
    • 1

    在这里插入图片描述
    修改配置文件

    vim conf/application.yml
    ...
      consumerProperties:
        # canal tcp consumer
        canal.tcp.server.host: 192.168.200.152:11111
       #canal.tcp.zookeeper.hosts:
        canal.tcp.batch.size: 500
        canal.tcp.username:
        canal.tcp.password:
      srcDataSources:
        defaultDS:
          url: jdbc:mysql://192.168.200.152:3307/jsjb_prod?useUnicode=true&characterEncoding=utf8
          username: canal
          password: Csdn@123.
      canalAdapters:
      - instance: jsjb_prod_sync_es # canal instance Name or mq topic name
        groups:
        - groupId: g1
          outerAdapters:
          - name: logger
          - name: es7
            hosts: http://192.168.200.153:9200,http://192.168.200.154:9200,http://192.168.200.155:9200
            properties:
              mode: rest # or rest
              security.auth: elastic:Csdn@123 #  only used for rest mode
              cluster.name: devops-es
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26

    在这里插入图片描述
    在conf创建es7映射配置文件order_complete_query_t.yml

    vim conf/es7/order_complete_query_t.yml
    dataSourceKey: defaultDS #数据源
    destination: jsjb_prod_sync_es #instance实例名字
    groupId: g1
    esMapping:
      _index: order_complete_query_t  #es7索引名字
      _id: _id
      #  pk: 
      ...
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    根据自己业务需要写sql就行了
    在这里插入图片描述
    (注意:先不要启动,需要先去es7创建对应的索引)
    4.创建es7对应索引
    从kibana开发者工具创建(映射索引涉及线上数据所以就不公布了)
    在这里插入图片描述
    启动adapter

     ./bin/startup.sh 
    
    • 1

    在这里插入图片描述
    通过日志可以看到已经成功了
    在这里插入图片描述
    实践是检验真理的唯一标准!

    三、测试

    1.查询所有订阅同步的canal instance或MQ topic

    curl http://127.0.0.1:8081/destinations
    
    • 1

    2.手动全部同步

    curl http://localhost:8081/etl/es7/order_complete_query_t.yml -X POST
    
    • 1

    3.数据同步开关状态

    curl http://127.0.0.1:8081/syncSwitch/example
    
    • 1

    4.查看相关库总数据

    curl http://127.0.0.1:8081/count/es7/order_complete_query_t.yml
    
    • 1

    在这里插入图片描述在这里插入图片描述

    到此结束!

  • 相关阅读:
    【gmoj】【动态规划】投票
    python之集合的创建与使用,遍历,集合常见的操作函数,集合与列表,元组,字典的嵌套
    计算机网络——网络可靠性及网络出口配置
    图像处理之图像质量评价指标SSIM(结构相似性)
    【C++】string类
    前端---知识
    spring的annotation-driven配置事务管理器详解
    Linux TCP 通信并发
    系统架构之微服务架构
    HTML+CSS-项目:学成在线
  • 原文地址:https://blog.csdn.net/qq_43417559/article/details/127127477