我是靠谱客的博主 糟糕电源,这篇文章主要介绍canal===docker部署canal一、canal介绍二、docker部署canal三、docker-compose部署canal,现在分享给大家,希望可以做个参考。

一、canal介绍

canal译为水道,管道,主要用途是基于 MySQL 数据库增量日志解析,提供增量数据订阅和消费。
canal的工作原理就是把自己伪装成MySQL slave,模拟MySQL slave的交互协议向MySQL Mater发送 dump协议,MySQL mater收到canal发送过来的dump请求,开始推送binary log给canal,然后canal解析binary log,再发送到存储目的地,比如MySQL,Kafka,Elastic Search等等。

canal的作用:

  • 数据库镜像

  • 数据库实时备份

  • 索引构建和实时维护

  • 业务cache(缓存)刷新

  • 带业务逻辑的增量数据处理
    在这里插入图片描述
    说明:
    server代表一个canal运行实例,对应于一个jvm
    instance对应于一个数据队列

    instance模块:
    eventParser (数据源接入,模拟slave协议和master进行交互,协议解析)
    eventSink (Parser和Store链接器,进行数据过滤,加工,分发的工作)
    eventStore (数据存储)
    metaManager (增量订阅&消费信息管理器)

二、docker部署canal

1.部署canal-admin

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#1.下载包 cd /opt wget https://github.com/alibaba/canal/releases/download/canal-1.1.5/cana l.admin-1.1.5.tar.gz mkdir canal-admin tar -zxvf canal.admin-1.1.5.tar.gz -C canal-admin #2.登录数据库,创建库---mysql安装略(开启binlog) create database canal_manager; grant all privileges on canal_manager.* to canal@'%' identified by 'canal' flush privileges; exit mysql -ucanal -pcanal use canal_manager; source /Users/jing/Opt/canal-admin/conf/canal_manager.sql #3.启动镜像canal-admin docker pull canal/canal-admin:v1.1.5 docker run --network mynet -p 8089:8089 -v /Opt/canal-admin/conf:/home/admin/canal-admin/conf -v /opt/canal-admin/logs:/home/admin/canal-admin/logs --name canal-admin -e spring.datasource.addres s="mysqlip:3306/canal_manager?allowMultiQueries=true&useUnicod=true&charac terEncodin=utf-8&serverTimezone=CTT&allowPublicKeyRetrieval=true&useSSL= false" -e spring.datasource.username=canal -e spring.datasource.password =canal -e canal.adminPasswd=123456 -d canal/canal-admin:v1.1.5 注:canal_manager.sql 提供的脚本中,canal_user 表提供的默认⽤户名为: canal,密码为:6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9,也就是 SELECT PASSWORD('123456'); 的值 所以登陆 canal-admin 管理平台的⽤户名就是 admin/123456。 但当你登录进 canal-admin 容器中,会发现在 /home/admin/canal-admin/conf ⽬录存在⼀个 application.yml ⽂件 该⽂件中的配置项正是我们 docker 命令 -e 所指定的选项。 application.yml ⽂件中存在这样⼀个配置: canal: adminUser: admin adminPasswd: admin 这⾥请把 adminPasswd 改成 123456,或者在启动容器时指定: -e canal.adminPasswd=123456 ,以保证和 canal_manager 的 canal_user 表下 admin 账号的密 码保持⼀致 浏览器访问:IP:8089 默认用户名密码:admin/123456

2.创建集群

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

复制代码
1
2
3
4
5
6
7
8
9
10
#修改配置 # zk 的地址需要指定 canal.zkServers = zookeeper:2181 # tcp, kafka, rocketMQ, rabbitMQ canal.serverMode = tcp # 此配置需要修改成 default-instance canal.instance.global.spring.xml = classpath:spring/default-instance.xml # 这个不需要指定,在admin上⼿动添加 canal.destinations

3.启动canal-server镜像

复制代码
1
2
3
#1.启动canal-server docker run --network mynet -p 11111:11111 -v /opt/canal-serve r/logs:/home/admin/canal-server/logs/canal --name canal-server01 -e cana l.admin.register.auto=true -e canal.admin.register.cluster=test -e cana l.admin.register.name=canal-server01 -e canal.admin.manager=canal-admin: 8089 -e canal.admin.port=11110 -e canal.admin.user=admin -e canal.admin. passwd=6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 -e canal.admin.register. cluster=test -d canal/canal-server:v1.1.5

canal.admin.passwd 的密码,可在 canal_manager 的 canal_user 表下找到,实际上就是: SELECT upper(sha1(unhex(sha1(‘123456’)))); 的值 我这⾥只起了⼀个 Canal Server,根据需要可以起多个 此时 Canal Admin 将⾃动出现刚刚启动的 Canal Server:
在这里插入图片描述

4.创建 instance

Canal Admin 界⾯上新建 Instance,选择载⼊模板,修改如下配置项:

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# mysql集群配置中的serverId概念,需要保证和当前mysql集群中id唯⼀ (v1.1.x版本之后c anal会⾃动⽣成,不需要⼿⼯指定) # canal.instance.mysql.slaveId=0 # mysql主库链接地址 canal.instance.master.address=mysql:3306 # mysql主库链接时起始的binlog⽂件 canal.instance.master.journal.name= # mysql主库链接时起始的binlog偏移量 canal.instance.master.position= # mysql主库链接时起始的binlog的时间戳 canal.instance.master.timestamp= # mysql数据库帐号(此处的⽤户名和密码为 安装canal#mysql配置相关#创建canal⽤户 这⼀步 创建的⽤户名和密码) canal.instance.dbUsername=canal # mysql数据库密码 canal.instance.dbPassword=canal # mysql 数据解析编码 canal.instance.connectionCharset = UTF-8 # mysql 数据解析关注的表,Perl正则表达式,即我们需要关注那些库和那些表的binlog数据, 也可以在canal client api中⼿动覆盖 canal.instance.filter.regex=.*..* # table black regex # mysql 数据解析表的⿊名单,表达式规则⻅⽩名单的规则 canal.instance.filter.black.regex=mysql.slave_.*

三、docker-compose部署canal

1.部署canal-admin

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#1.安装docker-compose sudo yum -y install epel-release sudo yum -y update sudo yum -y install python-pip yum install -y docker-compose docker-compose -v #1.将docker部署的配置文件放到相应目录 mv /opt/canal-admin /data/ota/config/canal-admin #2.在相应的目录下编写yml文件 cd /data/ota/yaml vim canal-admin.yml version: '3.1' services: ota-canal-admin: image: canal/canal-admin:v1.1.5 container_name: ota-canal-admin restart: always environment: spring.datasource.address: 172.17:3306 spring.datasource.database: canal_manager spring.datasource.username: canal spring.datasource.password: canal driver-class-name: com.mysql.jdbc.Driver volumes: - ../logs/canal-admin:/home/admin/canal-admin/logs - ../config/canal-admin/conf:/home/admin/canal-admin/conf ports: - "18089:8089" networks: - otanet extra_hosts: - "ota-mysql:172.17" - "ota-canal-admin:172.17" networks: otanet: external: true #3.启动 docker-compose -p ota-canal-admin -f canal-admin.yml up -d docker-compose -p ota-canal-admin -f canal-admin.yml down #停止 #4.浏览器访问IP:18089

2.部署canal-server

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#1.导出手动部署的数据库配置(数据库要在canal-admin部署之前导入) mysqldump -uroot -p --databases canal_manager >canal_manager.sql 将备份的sql导入数据库 #2.编写yml文件 cd /data/ota/yaml vim canal-server01.yml version: '3.1' services: ota-canal-server: image: canal/canal-server:v1.1.5 container_name: ota-canal-server01 restart: always environment: PARAMS: "--canal.admin.register.auto=true --canal.admin.register.cluster=test --canal.admin.register.name=canal-server01 --canal.admin.manager=canal-admin:8089 --canal.admin.port=11110 --canal.admin.user=admin --canalk.admin.passwd=6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 " ports: - 11111:11111 volumes: - ../logs/canal-server01:/home/admin/canal-server/logs/canal networks: - otanet extra_hosts: - "ota-mysql:172.17" networks: otanet: external: true #3.启动 docker-compose -p canal-server01 -f canal-server01.yml up -d docker-compose -p canal-server01 -f canal-server01.yml down #停止

最后

以上就是糟糕电源最近收集整理的关于canal===docker部署canal一、canal介绍二、docker部署canal三、docker-compose部署canal的全部内容,更多相关canal===docker部署canal一、canal介绍二、docker部署canal三、docker-compose部署canal内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(58)

评论列表共有 0 条评论

立即
投稿
返回
顶部