基于canal和kafka同步,实现binlog同步ElasticSearch

在这里插入图片描述

前言

中间件版本
elasticsearch7.5.2
canal1.1.4
client-adapter1.1.5-alpha-1
zookeeper3.4.13
kafka2.6.0
mysql5.7.31

elasticsearch 安装

docker-compose.yaml脚本

version: '2.2'
services:
  elasticsearch:
    image: docker.elastic.co/elasticsearch/elasticsearch:7.5.2
    container_name: es7_01
    environment:
      - cluster.name=dockeres
      - node.name=es7_01
      - bootstrap.memory_lock=true
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
      - discovery.type=single-node
    ulimits:
      memlock:
        soft: -1
        hard: -1
    #volumes:
    #  - ./data:/usr/share/elasticsearch/data
    #  - ./plugins:/usr/share/elasticsearch/plugins
    ports:
      - 9200:9200
    networks:
      - es7net

networks:
  es7net:
    driver: bridge

{"settings":{"number_of_shards":"12","number_of_replicas":"1","refresh_interval":"5s","similarity":{"similarity_halfh":{"type":"BM25","k1":1.2,"b":0.2}}},"mappings":{"properties":{"id":{"type":"long","index":true},"order_id":{"type":"keyword","index":true},"amount":{"type":"long","index":true},"create_time":{"type":"date","index":true}}}}

canal安装

可以查看前一个章节的安装方法。基于canal和kafka同步,实现binlog同步mysql

canal-adapter 安装及配置

在这里插入图片描述

主要修改有两处

order.yml

dataSourceKey: defaultDS
destination: test
groupId: test
esMapping:
  _index: order
  _id: _id
  sql: "select concat(o.id,'_',o.order_id) as _id,o.id, o.order_id, o.amount from t_order o"
  etlCondition: "where o.create_time>={}"
  commitBatch: 3000

application.yml

server:
  port: 8081
logging:
  level:
    org.springframework: INFO
    com.alibaba.otter.canal.client.adapter.hbase: DEBUG
    com.alibaba.otter.canal.client.adapter.es: DEBUG
    com.alibaba.otter.canal.client.adapter.rdb: DEBUG
spring:
  jackson:
    date-format: yyyy-MM-dd HH:mm:ss
    time-zone: GMT+8
    default-property-inclusion: non_null

canal.conf:
  mqServers: 192.168.56.120:9092 #or rocketmq
  flatMessage: true
  batchSize: 500
  syncBatchSize: 1000
  retries: 0
  timeout:
  accessKey:
  secretKey:
  mode: kafka # tcp kafka rocketMQ
  srcDataSources:
    defaultDS:
      url: jdbc:mysql://192.168.56.120:33065/test?useUnicode=true
      username: root
      password: root
  canalAdapters:
    - instance: test # canal instance Name or mq topic name
      groups:
        - groupId: test
          outerAdapters:
            - name: es7
              hosts: #{ip}:9200
              properties:
                mode: rest
                cluster.name: ddmc-es-re

mysql 安装

查看上篇文章

zk及kafaka安装

参考上篇文章,这里补充一点,如何查看版本号

  • kafka 查看版本号
docker exec a2cb6ca0bb9f find / -name \*kafka_\* | head -1 | grep -o '\kafka[^\n]*'

kafka_2.13-2.6.0

这表示Scala 的版本为2.13,kafka的版本是2.6.0;

  • zk查看版本号
docker exec bb6e6bdec415 pwd

/opt/zookeeper-3.4.13

查看效果

mysql中添加更新数据、即可看到es中数据更新

注意事项

  • com.alibaba.otter.canal.client.adapter.es.core.service.ESSyncService#delete

在这里插入图片描述

翻到源代码时,复杂id会有问题,这个打算在以后博客中给出解决方案。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值