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)

大家都在看

  • CentOS7为php7.2安装php-redis扩展

    先下载phpredis-develop 安装unzip、zip解压工具 解压后会多了个phpredis-develop的目录。进入目录 安装phpize模块 执行phpize 查找…

    Linux 2023年5月28日
    080
  • python串口助手

    最近项目中要使用模拟数据源通过向外发送数据,以前都是用C#编写,最近在研究python,所以就用python写了一个串口助手,方便以后的测试。 在电脑上通过虚拟串口助手产生两个虚拟…

    Linux 2023年6月14日
    0101
  • MSSQL·CONCAT函数的基础使用

    | 0.47分钟 | 752.8字符 | 1、应用场景 2、基础使用 3、声明与参考资料 | SCscHero | 2022/5/13 PM10:18 | 系列 | 已完成 每一个…

    Linux 2023年6月14日
    089
  • 二、Java分布式(第二章)—-Demo

    这一章简单搭建一个分布式服务: 1、Dubbo简介:Dubbo 是一个分布式服务框架,是阿里巴巴开源项目。 Dubbo 致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA…

    Linux 2023年6月7日
    0121
  • 超好用的UnixLinux 命令技巧 大神为你详细解读

    1、删除一个大文件 我在生产服务器上有一个很大的200GB的日志文件需要删除。我的rm和ls命令已经崩溃,我担心这是由于巨大的磁盘IO造成的,要删除这个大文件,输入: > /…

    Linux 2023年6月14日
    0102
  • 逆波兰表达式

    运用lambda表达式和包装器 150. 逆波兰表达式求值 – 力扣(LeetCode) class Solution { public: int evalRPN(ve…

    Linux 2023年6月13日
    0113
  • Redis 缓存更新一致性

    在使用 Redis 作为数据库缓存的场景中对数据的读取流程通常是先读取缓存如果命中则返回,未命中则从数据库读取并把数据写到缓存中。 当更新数据时则数据库和缓存都要进行更新,此时我们…

    Linux 2023年5月28日
    091
  • Harbor私有镜像仓库登录报错 x509: cannot validate certificate for 192.168.40.132 because it doesn’t contain any IP SANs

    私有镜像仓库配置好之后,登录提示[root@harbor /data/install/harbor]# docker loginLogin with your Docker ID …

    Linux 2023年6月14日
    0128
  • phpcms如何在前台文章列表前显示所属类别名称

    最近做单位网站模版遇到的问题,欲实现的效果: 但是phpcms中自带的文章列表标签没有这个功能,数据库中文章表中也只有类别id的字段,因此不能通过简单的{$r[catname]}读…

    Linux 2023年6月13日
    092
  • 扑克牌大小—牛客网

    扑克牌大小_牛客题霸_牛客网 (nowcoder.com) #include #include<string> #include using namespace std…

    Linux 2023年6月13日
    0124
  • 学习linux(centos7)记录的笔记

    此随笔用于记录学习《linux鸟哥的私房菜》过程中1.遇到的问题及解决的过程 2.有必要记录的重要内容 3.对应书上操作的记录 开始于2021年6月18号 一个磁盘的分区通过格式化…

    Linux 2023年6月6日
    087
  • IDEA快捷键总结

    一、关于IDEA工具的快捷键 1.1、字体设置  file –> settings –> 输入font –> 设置字体样式以及字号大小​1.1、快速生成ma…

    Linux 2023年6月7日
    086
  • 最短的可通过编译的C语言程序

    要求:写一个最短的,能通过编译的C语言程序,但不要求能正确运行。 一般人首先想到的是除0。即 除0会引发SIGFPE信号(浮点异常)。 我们也可以删掉return,但是这样做的话编…

    Linux 2023年6月14日
    088
  • linux 修改文件的创建时间—–touch命令

    1、首先不会用touch 可以自己man touch查看并学习,推出man按q 2、举例 给文件修改时间 touch -mt 201909052248 test.log -m mo…

    Linux 2023年6月13日
    097
  • Java学生管理系统(详解)

    下面会分享我在做这个练习时的一些方法以及程序代码 供大家参考(最后附上完整的项目代码)。 首本人只是个初学Java的小白,可能项目中有许多地方使用不规范的以及代码的格式问题会引起各…

    Linux 2023年6月6日
    088
  • Centos7 找回root密码

    在开机界面,按”e”进入编辑界面 按”e”进图下图界面后,找到开头为”linux16″行,在行后面加入 &#…

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