哎!也算是记录自己的踩坑日记吧
注意: MySQL和ES7请自己自行安装好,请大家一定确定自己MySQL的版本。
使用的系统:Centos,Ubuntu。windows请移步

# 这里的版本不能低于5.7, 如果小于5.7的请移步,使用8的也请移步
SELECT VERSION();

好,步入正文

MySQL配置

1.设置MySQL

# 使用已有的账号和密码登录
myql -u root -p
# CREATE USER 用户名 IDENTIFIED BY '密码';
CREATE USER canal IDENTIFIED BY 'canal';  # 赋予权限
GRANT SELECT, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'canal'@'%';
-- GRANT ALL PRIVILEGES ON *.* TO 'canal'@'%' ;# 刷新权限
FLUSH PRIVILEGES;

2.设置binlog

使用yum安装的,文件位置大概都是这个/etc/my.cnf
所以请 vim /etc/my.cnf

[mysqld]
log-bin=mysql-bin # 开启 binlog
binlog-format=ROW # 选择 ROW 模式
server_id=1 # 配置 MySQL replaction 需要定义,不要和 canal 的 slaveId 重复!如果相把日志单独放的朋友请一定设置权限,好吧!如
log-bin=/usr/local/mysql/binlogs/mysql-bin # 开启 binlog
chown -R mysql:mysql  /usr/local/mysql/binlogs # 设置权限mysql> show variables like 'binlog_format%';       #查看binlog模式,如果显示如下,就说明成功了
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| binlog_format | ROW   |
+---------------+-------+
1 row in set (0.06 sec)
# 创建数据库
create database `fgn-user` character set utf8;# 创建表
CREATE TABLE `users` (  `id` int(11) NOT NULL,`age` int(11) NOT NULL,`name` varchar(200) NOT NULL,`address` varchar(1000) DEFAULT NULL,`created_at` datetime DEFAULT NULL,`updated_at` datetime DEFAULT NULL,`deleted_at` datetime DEFAULT NULL,PRIMARY KEY (id)) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

部署Canal-deployer服务端

1.下载并解压

wget https://github.com/alibaba/canal/releases/download/canal-1.1.5-alpha-1/canal.deployer-1.1.5-SNAPSHOT.tar.gz
#如果下载不下来,试试看我保存的
wget https://file.hytwfy.top/canal.deployer-1.1.5-SNAPSHOT.tar.gz
mkdir /usr/local/canal-deployer
tar xf canal.deployer-1.1.5-SNAPSHOT.tar.gz -C /usr/local/canal-deployer/

2.修改配置文件

# 如果前面和我设置路径一样的话,就直接复制吧,如果不是请使用自己的
[root@wfy]# vim /usr/local/canal-deployer/conf/example/instance.properties
## mysql serverId , v1.0.26+ will autoGen
canal.instance.mysql.slaveId=3     #修改ID,不能和MySQL数据库一致# enable gtid use true/false
canal.instance.gtidon=false# position info
canal.instance.master.address=127.0.0.1:3306    #指定mysql数据库地址及端口
canal.instance.master.journal.name=
canal.instance.master.position=
canal.instance.master.timestamp=
canal.instance.master.gtid=# rds oss binlog
canal.instance.rds.accesskey=
canal.instance.rds.secretkey=
canal.instance.rds.instanceId=# table meta tsdb info
canal.instance.tsdb.enable=true
#canal.instance.tsdb.url=jdbc:mysql://127.0.0.1:3306/canal_tsdb
#canal.instance.tsdb.dbUsername=canal
#canal.instance.tsdb.dbPassword=canal#canal.instance.standby.address =
#canal.instance.standby.journal.name =
#canal.instance.standby.position =
#canal.instance.standby.timestamp =
#canal.instance.standby.gtid=# username/password
canal.instance.dbUsername=canal    #MySQL账号
canal.instance.dbPassword=canal    #MySQL密码
canal.instance.connectionCharset = UTF-8    #字符集格式,需要与mysql保持一致
# enable druid Decrypt database password
canal.instance.enableDruid=false
#canal.instance.pwdPublicKey=MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBALK4BUxdDltRRE5/zXpVEVPUgunvscYFtEip3pmLlhrWpacX7y7GCMo2/JM6LeHmiiNdH1FWgGCpUfircSwlWKUCAwEAAQ==# table regex
canal.instance.filter.regex=.*\\..*     #表名监控的正则
# table black regex
canal.instance.filter.black.regex=mysql\\.slave_.*
# table field filter(format: schema1.tableName1:field1/field2,schema2.tableName2:field1/field2)
#canal.instance.filter.field=test1.t_product:id/subject/keywords,test2.t_company:id/name/contact/ch
# table field black filter(format: schema1.tableName1:field1/field2,schema2.tableName2:field1/field2)
#canal.instance.filter.black.field=test1.t_product:subject/product_image,test2.t_company:id/name/contact/ch# mq config
canal.mq.topic=example
# dynamic topic route by schema or table regex
#canal.mq.dynamicTopic=mytest1.user,mytest2\\..*,.*\\..*
canal.mq.partition=0
# hash partition config
#canal.mq.partitionsNum=3
#canal.mq.partitionHash=test.table:id^name,.*\\..*
#canal.mq.dynamicTopicPartitionNum=test.*:4,mycanal:6

3.启动canal-deployer
因为canal-depaloyer由java开发,所以需要jdk环境,jdk版本使用1.8

yum install java-1.8.0-openjdk.x86_64 java-1.8.0-openjdk-devel.x86_64 -y
/usr/local/canal-deployer/bin/startup.sh

4.查看日志及端口

[root@wfy]# ss -anplt | grep java
LISTEN     0      50           *:11110                    *:*                   users:(("java",pid=7577,fd=91))
LISTEN     0      50           *:11111                    *:*                   users:(("java",pid=7577,fd=87))
LISTEN     0      3            *:11112                    *:*                   users:(("java",pid=7577,fd=70))
LISTEN     0      100          *:8081                     *:*                   users:(("java",pid=7657,fd=109))
[root@wfy]# tail -f /usr/local/canal-deployer/logs/example/example.log
2021-03-13 00:47:23.588 [main] INFO  c.a.o.c.i.spring.support.PropertyPlaceholderConfigurer - Loading properties file from class path resource [example/instance.properties]
2021-03-13 00:47:23.755 [main] INFO  c.a.o.c.i.spring.support.PropertyPlaceholderConfigurer - Loading properties file from class path resource [canal.properties]
2021-03-13 00:47:23.756 [main] INFO  c.a.o.c.i.spring.support.PropertyPlaceholderConfigurer - Loading properties file from class path resource [example/instance.properties]
2021-03-13 00:47:24.121 [main] INFO  c.a.otter.canal.instance.spring.CanalInstanceWithSpring - start CannalInstance for 1-example
2021-03-13 00:47:24.129 [main] WARN  c.a.o.canal.parse.inbound.mysql.dbsync.LogEventConvert - --> init table filter : ^.*\..*$
2021-03-13 00:47:24.129 [main] WARN  c.a.o.canal.parse.inbound.mysql.dbsync.LogEventConvert - --> init table black filter : ^mysql\.slave_.*$
2021-03-13 00:47:24.216 [destination = example , address = /127.0.0.1:3306 , EventParser] WARN  c.a.o.c.p.inbound.mysql.rds.RdsBinlogEventParserProxy - ---> begin to find start position, it will be long time for reset or first position
2021-03-13 00:47:24.236 [main] INFO  c.a.otter.canal.instance.core.AbstractCanalInstance - start successful....
2021-03-13 00:47:24.238 [destination = example , address = /127.0.0.1:3306 , EventParser] WARN  c.a.o.c.p.inbound.mysql.rds.RdsBinlogEventParserProxy - prepare to find start position just show master status
2021-03-13 00:47:24.548 [destination = example , address = /127.0.0.1:3306 , EventParser] WARN  c.a.o.c.p.inbound.mysql.rds.RdsBinlogEventParserProxy - ---> find start position successfully, EntryPosition[included=false,journalName=mysql-bin.000001,position=4,serverId=1,gtid=<null>,timestamp=1615567588000] cost : 320ms , the next step is binlog dump

部署Canal-adapter客户端

1.下载并解压

wget https://github.com/alibaba/canal/releases/download/canal-1.1.5-alpha-1/canal.adapter-1.1.5-SNAPSHOT.tar.gz
#如果下载不下来,试试看我保存的
wget https://file.hytwfy.top/canal.adapter-1.1.5-SNAPSHOT.tar.gz
mkdir /usr/local/canal-adapter
tar xf canal.adapter-1.1.5-SNAPSHOT.tar.gz -C /usr/local/canal-adapter/

2.修改application.yml

[root@wfy]# vim /usr/local/canal-adapter/conf/application.yml
server:port: 8081
spring:jackson:date-format: yyyy-MM-dd HH:mm:sstime-zone: GMT+8default-property-inclusion: non_nullcanal.conf:mode: tcp #tcp kafka rocketMQ rabbitMQflatMessage: truezookeeperHosts:syncBatchSize: 1000retries: 0timeout:accessKey:secretKey:consumerProperties:# canal tcp consumercanal.tcp.server.host: 127.0.0.1:11111canal.tcp.zookeeper.hosts:canal.tcp.batch.size: 500canal.tcp.username:canal.tcp.password:# kafka consumerkafka.bootstrap.servers: 127.0.0.1:9092kafka.enable.auto.commit: falsekafka.auto.commit.interval.ms: 1000kafka.auto.offset.reset: latestkafka.request.timeout.ms: 40000kafka.session.timeout.ms: 30000kafka.isolation.level: read_committedkafka.max.poll.records: 1000# rocketMQ consumerrocketmq.namespace:rocketmq.namesrv.addr: 127.0.0.1:9876rocketmq.batch.size: 1000rocketmq.enable.message.trace: falserocketmq.customized.trace.topic:rocketmq.access.channel:rocketmq.subscribe.filter:# rabbitMQ consumerrabbitmq.host:rabbitmq.virtual.host:rabbitmq.username:rabbitmq.password:rabbitmq.resource.ownerId:srcDataSources:defaultDS:url: jdbc:mysql://127.0.0.1:3306/fgn-user?useUnicode=trueusername: canalpassword: canalcanalAdapters:- instance: example # canal instance Name or mq topic namegroups:- groupId: g1outerAdapters:- name: logger
#      - name: rdb
#        key: mysql1
#        properties:
#          jdbc.driverClassName: com.mysql.jdbc.Driver
#          jdbc.url: jdbc:mysql://127.0.0.1:3306/mytest2?useUnicode=true
#          jdbc.username: root
#          jdbc.password: 121212
#      - name: rdb
#        key: oracle1
#        properties:
#          jdbc.driverClassName: oracle.jdbc.OracleDriver
#          jdbc.url: jdbc:oracle:thin:@localhost:49161:XE
#          jdbc.username: mytest
#          jdbc.password: m121212
#      - name: rdb
#        key: postgres1
#        properties:
#          jdbc.driverClassName: org.postgresql.Driver
#          jdbc.url: jdbc:postgresql://localhost:5432/postgres
#          jdbc.username: postgres
#          jdbc.password: 121212
#          threads: 1
#          commitSize: 3000
#      - name: hbase
#        properties:
#          hbase.zookeeper.quorum: 127.0.0.1
#          hbase.zookeeper.property.clientPort: 2181
#          zookeeper.znode.parent: /hbase- name: es7         #请改成es7key: fgnKey       #请一定要添加keyhosts: 127.0.0.1:9200 # 127.0.0.1:9200 for rest modeproperties:mode: rest # transport or rest
#          # security.auth: test:123456 #  only used for rest modecluster.name: docker-cluster   #es集群名,按照自己的设置
#        - name: kudu
#          key: kudu
#          properties:
#            kudu.master.address: 127.0.0.1 # ',' split multi address

3.修改适配器映射文件

[root@wfy]#vim /usr/local/canal-adapter/conf/es7/mytest_user.ymldataSourceKey: defaultDS   #指定在application.yml文件中srcDataSources源数据源自定义的名称
outerAdapterKey: fgnKey    #和上面的配置文件的key一致。
destination: example
groupId: g1
esMapping:_index: fgn-article     #指定索引名称_id: _id            #指定文档id,_id 此值则由es自动分配文档ID
#  upsert: true
#  pk: idsql: "select id as _id, user_id, title, content, issue_time, created_at, updated_at, deleted_at from article_profiles"   # 这里请特别注意,写成这个样子默认的是bug。。。
#  objFields:
#rticle    _labels: array:;
#  etlCondition: "where a.c_time>={}"commitBatch: 3000

**4.在ES7创建相对应的mapping

#    建议把索引设置成为和数据库名一样
PUT /fgn-user
{"mappings": {"properties": {"created_at": {"type": "date"},"deleted_at": {"type": "date"}"updated_at": {"type": "date"},"age": {"type": "keyword"},"address": {"type": "text"}}}
}

5.启动Canal-adapter并写入数据

/usr/local/canal-adapter/bin/startup.shtail -f /usr/local/canal-adapter/logs/adapter/adapter.log
# 如果这个不存在,请回到/usr/local/canal-adapter/bin/查看错误
cd /usr/local/canal-adapter/bin

参考的博客地址

使用canal1.1.5让MySQL5.7同步到ES7.x相关推荐

  1. Mysql+Canal1.1.5+Es实现数据同步

    注:关于MySql和ES的安装过程,本篇文章不做详细描述 1.配置mysql 部分(binlog日志) 1)找到mysql中的my.ini文件(如下图) 2)修改my.ini中的配置,如下图 port ...

  2. mysql 中1060怎么解决_mysql5.7同步复制报错1060故障处理

    在线QQ客服:1922638 专业的SQL Server.MySQL数据库同步软件 mysql5.7同步复制错误疑难解答 #错误1060的报告如下, Last_Errno:1060 Last_Erro ...

  3. 使用canal实现MySQL 8 增量同步数据到 ElasticSearch 7.15.2中 linux

    文章目录 一.清空控制台 1. 清空控制台 2. 修改数据 3. 监控数据 4. 数据变化 5. 索引查询 6. 预期性能评估 7. 增量同步分析 二.验证方案 2.1. 把shop索引删除 2.2. ...

  4. 利用mk-table-checksum监测Mysql主从数据一致性操作记录

    前面已经提到了mysql主从环境下数据一致性检查:mysql主从同步(3)-percona-toolkit工具(数据一致性监测.延迟监控)使用梳理 今天这里再介绍另一种Mysql数据一致性自动检测工具 ...

  5. django.core.exceptions.ImproperlyConfigured: mysqlclient 1.3.3 or newer is required; you have 0.7.11

    搭建Django2.0+Python3+MySQL5时同步数据库时报错: django.core.exceptions.ImproperlyConfigured: mysqlclient 1.3.3 ...

  6. mysql性能监控 调优_MySQL管理之道:性能调优、高可用与监控(第2版)

    MySQL管理之道:性能调优.高可用与监控(第2版) 作者:贺春旸 著 出版日期:2016年08月 文件大小:71.36M 支持设备: ¥50.00在线试读 适用客户端: 言商书局 iPad/iPho ...

  7. 禾匠榜店商城小程序4.5.14全开源独立版+微信+抖音小程序前端去后门安装教程

    榜店商城4.5.14全开源修版:含VUE小程序前端+后端管理+抖音小程序前端,新增周期.定制商品.企业微信SCRM.企业微信客服.链接生成工具(微信小程序)等插件.整体测试非常完美相比上几版本该版本基 ...

  8. Linux面试必问-vim综合命令详解

    vi编辑器是Unix的世界中一个相当强大的可视化编辑器,有人曾这样的说过在世界上有三种人:一种是使用Vi的,另一种是使用是Emacs的,剩下的是第三种人. 由此可以看出Vi和Emacs的强大.在有关L ...

  9. 关于Mysql5.6半同步主从复制的开启方法【转】

    介绍 先了解一下mysql的主从复制是什么回事,我们都知道,mysql主从复制是基于binlog的复制方式,而mysql默认的主从复制方式,其实是异步复制. 主库实际上并不关心从库是否把数据拉完没有, ...

最新文章

  1. PHP 接入(第三方登录)QQ 登录 OAuth2.0 过程中遇到的坑
  2. 灯泡亮度控制单片机_南航电赛-灯光控制系统
  3. Angular Table test
  4. 机器学习实际应用_机器学习的实际好处是什么?
  5. Flutter MaterialButton组件详细概述
  6. Linux实时/高性能任务独占CPU的操作
  7. 让电脑替你说:"I IOVE YOU"
  8. document.onreadystatechange()来判断页面加载完
  9. 关于vmware中的centos无法ping通宿主机或者是外网的解决思路
  10. sql语句查询优化总结,建议及写法技巧(汇总)
  11. easyUI的时间控件
  12. iPhone5s 换电池、修右上角翘起的悲催过程
  13. 双硬盘安装win7和Ubuntu双系统,解决系统启动引导问题
  14. 洛谷P3933 Chtholly Nota Seniorious 【二分 + 贪心 + 矩阵旋转】
  15. 使用CVXQUAD时出现,函数或变量 ‘op_rel_entr_epi_cone‘ 无法识别。
  16. 关于sqlserver身份登录失败的解决方法
  17. 关于 字号、PX像素、PT点数、em、CM厘米、MM毫米之间的换算
  18. python解常微分方程(组)
  19. MATLAB学习八(四):相关系数corrcoef
  20. asp:ScriptManager

热门文章

  1. 第2章 C语言的赋值运算符、复合运算符与逗号运算符 (十一)
  2. window自带的常见工具
  3. uestc1135邱老师看电影【概率dp】
  4. [论文阅读] EIE: Efficient Inference Engine on Compressed Neural Network
  5. Excel学习日记:L1-excel入门
  6. J2EE项目开发中常用到的公共方法
  7. C语言 printf() 函数,总结笔记记录
  8. win10微软图标点击无反应_steam图标 教你win10系统双击steam图标没反应的解决教程...
  9. C# 文字视频生成器
  10. 一个PHP程序员的职业生涯技术提升阶梯规划方案