一、下载和安装

#服务端(监听)
wget https://github.com/alibaba/canal/releases/download/canal-1.1.6/canal.deployer-1.1.6.tar.gz
#客户端(调用端)
wget https://github.com/alibaba/canal/releases/download/canal-1.1.6/canal.adapter-1.1.6.tar.gz
#可视化界面
https://github.com/alibaba/canal/releases/download/canal-1.1.6/canal.admin-1.1.6.tar.gz

二、canal的工作原理

1、mysql的主从复制过程

  • Master主库将改变记录、写到二进制日志binlog中
  • Slaver从库向MysqlMaster发送dump协议,将master主库的binary log events拷贝到中继日志(relay log)
  • Salver读取并重做中继日志中的事件,将改变的数据同步到自己的数据库

2、canal工作原理

伪装成slaver,从master复制数据

3、使用场景

canal是阿里otter(阿里用于异步数据库之间的同步框架)的一部分

常用场景1:更新缓存

常用场景2:抓取业务表的增量变化(同步数据到另外一个数据库中)

三、mysql开启binlog日志

vim /etc/mysql/my.cnf
server-id=1
# 指定binlog日志存储位置
log-bin=/var/lib/mysql/mysql-bin
# 开启GTID模式
gtid-mode=ON
# 设置主从强一致性
enforce-gtid-consistency=1
# 记录日志
log-slave-updates=1
binlog_format=ROW
#binlog-do-db 具体要同步的数据库
binlog-do-db = yfc

重启mysql使配置生效:

sudo service mysql restart

查看binlog日志文件列表:

show binary logs;

四、安装部署canal

1、canal-devloper

1、解压文件

tar -zxvf canal.deployer-1.1.6.tar.gz

2、更改配置

1、canal.properties (系统根配置文件)

指定目的文件

2、instance.properties(instance.properties的优先级高于canal.properties)

实际需要修改的配置文件:

需要修改的几处配置

#源数据库地址
canal.instance.master.address=localhotse:3306
#查询元数据库中的配置
canal.instance.master.journal.name=mysql-bin.000003
canal.instance.master.position=194#........
#数据的账号和密码
canal.instance.dbUsername=root
canal.instance.dbPassword=123456
canal.instance.connectionCharset = UTF-8

show master status命令列出了日志位点信息,包括binlog file,binlog position等

canal.instance.dbUsername=root
canal.instance.dbPassword=123456
canal.instance.connectionCharset = UTF-8

回到主目录启动服务:

sh bin/startup.sh

查看启动日志

tail -n 100 logs/canal/canal.log #查看实例的日志
tail -n 100 logs/example/example.log 

至此:canal服务端启动成功

2、canal-adapter

注:我在搭建cklickhouse的时候没有默认没有设置账户和密码,所以账号密码不用填

 srcDataSources:defaultDS:url: jdbc:mysql://localhost:3306/yfc?useUnicode=trueusername: rootpassword: Aa123123canalAdapters:- instance: example # canal instance Name or mq topic namegroups:- groupId: g1outerAdapters:- name: logger- name: rdbkey: mysql1properties:jdbc.driverClassName: ru.yandex.clickhouse.ClickHouseDriverjdbc.url: jdbc:clickhouse://localhost:8123/yfc?useUnicode=truejdbc.username: defaultjdbc.password:

修改同步表文件:

dataSourceKey: defaultDS
destination: example
groupId: g1
outerAdapterKey: mysql1
concurrent: true
dbMapping:database: yfctable: sku_infotargetTable: yfc.sku_infotargetPk:id: id
#  mapAll: truetargetColumns:id:name:role_id:c_time:test1:etlCondition: "where c_time>={}"commitBatch: 3000 # 批量提交的大小## Mirror schema synchronize config
#dataSourceKey: defaultDS
#destination: example
#groupId: g1
#outerAdapterKey: mysql1
#concurrent: true
#dbMapping:
#  mirrorDb: true
#  database: mytest

加载顺序:bootstrap.yml (配置如下)> application.yml

3、canal-admin

进入conf配置文件编辑

如下图:

执行sql脚本(使用可视化客户端需要在sql中初始化脚本canal_manager.sql)

成功标志:

新增一条数据看看:

修改

删除:

至此,mysql通过canal同步数据结束

canal实现mysql同步到clickhouse相关推荐

  1. canal实现mysql同步Elasticsearch数据linux中安装ELK

    linux中ELK数据同步 前言 ElasticSearch安装 下载安装包&&添加es用户 启动 ElasticSearch HEAD安装 下载&&安装 配置 设置跨 ...

  2. es 全量同步mysql_使用canal将mysql同步到es中

    因为自己项目中需要用到mysql数据同步到es中,查找了相关资料最后决定用canal来做,所以便有了本文,下面一起来看如何使用canal吧 canal教程 根据 https://github.com/ ...

  3. mysql 分词搜索_实战 | canal 实现Mysql到Elasticsearch实时增量同步

    题记 关系型数据库Mysql/Oracle增量同步Elasticsearch是持续关注的问题,也是社区.QQ群等讨论最多的问题之一. 问题包含但不限于: 1.Mysql如何同步到Elasticsear ...

  4. canal实现mysql数据实时同步es

    前言 canal是阿里开源的一款用于同步mysql数据到其他数据存储的中间件,主要用途是基于 MySQL 数据库增量日志解析,提供增量数据订阅和消费 在搭建mysql服务器主从同步的时候,我们知道,备 ...

  5. Canal 实现 Mysql数据库实时数据同步

    简介 1.1 canal介绍 Canal是一个基于MySQL二进制日志的高性能数据同步系统.Canal广泛用于阿里巴巴集团(包括https://www.taobao.com),以提供可靠的低延迟增量数 ...

  6. 增量同步_实战 | canal 实现Mysql到Elasticsearch实时增量同步

    题记 关系型数据库Mysql/Oracle增量同步Elasticsearch是持续关注的问题,也是社区.QQ群等讨论最多的问题之一. 问题包含但不限于: 1.Mysql如何同步到Elasticsear ...

  7. canal deployer+canal adapter自动同步MySQL数据到ElasticSearch

    一.安装Elastic Search 6.8 1.下载 Elastic Search 6.8资源下载 2.部署环境配置 创建用户(es不能使用root启动,否则报错) adduser elastic ...

  8. Mysql同步数据到Elasticsearch(实时Canal)

    这里只是作为一个想法,Canal有监听binlog文件的功能.所以简单看了一下Canal的入门使用. 后续Canal实时数据同步的功能希望不会被我阉割......当然有大佬已经实现或者有其他方法实现m ...

  9. liunx下通过Canal将MySQL数据同步到Elasticsearch

    liunx下通过Canal将MySQL数据同步到Elasticsearch 一.canal背景信息 Canal是Github中开源的ETL(Extract Transform Load)软件 cana ...

最新文章

  1. R语言:时间序列常用函数
  2. ASP.NET MVC CheckBoxFor为什么会生成hidden input控件
  3. c++builder 运行网站的api_04 将您的API Builder Docker映像发布到AMPLIFY运行时服务(ARS)...
  4. 什么是代码调试(debugging)?进行代码调试的基本方法有哪些?
  5. android 关于Uri.parse和uri.fromFile的区别
  6. 在32位windows 7下安装PyLucene
  7. 鸡肋 - cacheAsBitmap
  8. 【音效处理】Reverb 混响算法简介
  9. 如何在WordPress中使用SEO写作助手来改善SEO
  10. 操作系统实验二:银行家算法
  11. 【SpringBoot】63、SpringBoot中教你手把手封装自己的starter(xxl-job-spring-boot-starter)
  12. 【IOS网络通信】socket第三方库 AsyncSocket(GCDAsyncSocket)
  13. 【高数】交换二次积分次序时,为什么要观察上下限大小关系?
  14. conda 配置R虚拟环境并安装 monocle 包
  15. 决策树概述+模块介绍+重要参数(criterion+random_statesplitter+减枝参数+目标权重参数)+回归树(参数+实例+拟合正弦曲线)+泰坦尼克号生存者预测实例
  16. android自定义打电话界面,两种Android打电话实现方法
  17. HTML简单的网页制作期末作业【NBA勒布朗詹姆斯篮球明星】HTML+CSS+JavaScript
  18. 基于问答对的问答系统方案设计
  19. javaweb学习记录-qqzone项目-结构分析
  20. VirtualBox网络之仅主机(Host-Only)网络

热门文章

  1. 用XSSFWorkbook导出合并单元格样式的excel表格
  2. python与c语言在语法上的相同点和不同点_python与c语言的语法有哪些不一样的
  3. B1044 火星数字(python)
  4. Spark rdd之flatMap
  5. AJ-Captcha验证码使用教程源码解读
  6. 微信小程序 wxParse使用
  7. 剪辑编辑视频的软件有哪些 剪辑编辑视频怎么赚钱
  8. OpenStack手动分布式部署Nova【Queens版】
  9. 17 | 从后端到前端:微服务后,前端如何设计?
  10. element table row-style 实现列颜色区分 以及 js生成随机色,避免相近色