canal-1.1.5实时同步MySQL数据到Elasticsearch

一、环境准备

1、jdk 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;

canal-1.1.5实时同步MySQL数据到Elasticsearch

二、kibana创建索引

PUT canal_product
{
  "mappings": {
    "properties": {
      "user_name": {
        "type": "text"
      },
      "phone": {
        "type": "text"
      },
      "age": {
        "type": "integer"
      }
    }
  }
}

canal-1.1.5实时同步MySQL数据到Elasticsearch

三、下载安装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

canal-1.1.5实时同步MySQL数据到Elasticsearch

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集群节点名称

canal-1.1.5实时同步MySQL数据到Elasticsearch

2、启动服务

启动服务
./bin/startup.sh

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

cat logs/adapter/adapter.log

如图所示

canal-1.1.5实时同步MySQL数据到Elasticsearch

4、实时同步

向数据库中插入一条数据

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

查看日志

canal-1.1.5实时同步MySQL数据到Elasticsearch

kibana查看索引数据

GET canal_product/_search

canal-1.1.5实时同步MySQL数据到Elasticsearch

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   # 提交批大小

canal-1.1.5实时同步MySQL数据到Elasticsearch
curl -X POST http://127.0.0.1:8081/etl/es7/mytest_user.yml

canal-1.1.5实时同步MySQL数据到Elasticsearch

canal-1.1.5实时同步MySQL数据到Elasticsearch

学习链接: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

Original: https://www.cnblogs.com/sportsky/p/16536264.html
Author: SportSky
Title: canal-1.1.5实时同步MySQL数据到Elasticsearch

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/609206/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 基于灰色模型和Bootstrap理论的大规模定制质量控制方法研究

    基于GM的生产质量预测: 原始质量指标数列为: 是的累加序列为: 经过该处理,可以使粗糙的原始离散数列变为光滑的离散数列。 建立基本的预测模型GM(1,1),其白化方程为 式中,a…

    Linux 2023年6月14日
    087
  • Linux上传下载神器之 lrzsz

    在开发的过程中,经常遇到 需要在 Linux 和 Windows 之间上传下载文件的情况 这时,一般都是使用 FTP 或者 WinSCP 工具进行上传下载, 虽然也能解决问题,但是…

    Linux 2023年6月13日
    0103
  • [ Shell ] 用 while + case 实现 GetOptions 效果

    https://www.cnblogs.com/yeungchie/ 可以用 getopt,但我还是喜欢自己写这个过程,便于我控制更多细节。 下面要实现的效果是,从命令行参数中分析…

    Linux 2023年6月7日
    0119
  • shell之常用的一些命令

    前言 自我感觉学习shell要常用man,–help这样挺方便去写的,光靠熟练远远不够的 bash;gutter:false;</p> <h1>!/bin…

    Linux 2023年6月8日
    0108
  • 文件夹图标修改软件 FolderIco

    本来文件夹图标是可以自定义的,只要找好图片,在软件中把图片格式转换成ico,再在文件夹属性中设置图标就可以了。 但是我发现转换出来的ico不够清晰,只有256*256,在大图标模式…

    Linux 2023年6月6日
    0132
  • Canal-1.1.5部署安装

    canal 模拟 MySQL slave 的交互协议,伪装自己为 MySQL slave ,向 MySQL master 发送dump 协议 MySQL master 收到 dum…

    Linux 2023年6月13日
    0105
  • ACL和NAT

    NAT 概述: NAT(网络地址翻译)一个数据包目的ip或者源ip为私网地址, 运营商的设备 无法转发数据。 NAT工作机制: 一个数据包从企业内网去往公网时,路由器将数据包当 中…

    Linux 2023年6月6日
    0112
  • Docker Compose

    https://m.runoob.com/docker/docker-compose.html https://www.cnblogs.com/minseo/p/11548177….

    Linux 2023年6月13日
    0119
  • 多态

    一.相关定义 1-1 多态 多态是同一个行为具有多个不同表现形式或形态的能力。同一个形参类型为基类的接口,使用不同的子类的实例可以执行不同操作。 1-2 绑定 绑定:将一个方法调用…

    Linux 2023年6月8日
    099
  • 阅读习惯2(选做)

    任务详情 参考https://www.cnblogs.com/rocedu/p/6528920.html 提交微信读书(或其他平台)目前的读书数据(总时长,册数,笔记数等)的截图,…

    Linux 2023年6月8日
    0117
  • 记一次centos挂载ceph存储的坑

    生产有两台服务器,准备用来跑工作流,执行的资源的是放在ceph存储集群中,第一步挂载ceph 执行命令: mount -t ceph xxx:xxx -o name=admin,s…

    Linux 2023年5月27日
    0117
  • 解决pip下载慢

    临时使用 可以在使用pip的时候加参数 -i https://pypi.tuna.tsinghua.edu.cn/simple 设为默认 pip install pip -U -i…

    Linux 2023年6月13日
    0105
  • 高速USB转4串口产品设计-TTL串口

    基于480Mbps 高速USB转8路串口芯片CH344Q,可以为各类主机扩展出4个独立的串口。CH344芯片支持使用操作系统内置的CDC串口驱动,也支持使用厂商提供的VCP串口驱动…

    Linux 2023年6月7日
    0132
  • ffmpeg 格式转换

    1.学前知识 1.1视频码率值 码率公式: 码率(kbps)=文件大小(KB)*8/时间(秒) 所以码率和视频文件大小成正比的,不过码率超过一定值后,人眼是看不出效果的. 接下来,…

    Linux 2023年6月7日
    0146
  • Linux目录操作cp、mv与rmLinux查找文件(find、which)

    cp(复制) cp [选项]… 源文件 目标 相当改名复制 文件夹 文件相当于 改名字另存为 *cp [选项]… 源文件… 文件夹 多个源文件只…

    Linux 2023年6月6日
    0102
  • IDEA 无法显示 Run Dashboard 的解决方法

    前言 最近开始接触微服务的项目,项目很多有时候本地调测需要启动多个项目,看到同事都是使用dashboard管理项目,服务和端口排列的整整齐齐。但是我dashboard里面啥都没有,…

    Linux 2023年6月14日
    0136
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球