前言:本文章将采用docker方式安装canal
canal主要用途是基于 MySQL 数据库增量日志解析,并能提供增量数据订阅和消费。
- github地址:https://github.com/alibaba/canal
- 版本下载地址:https://github.com/alibaba/canal/releases
- 文档地址:https://github.com/alibaba/canal/wiki/Docker-QuickStart
Canal应用场景
1.电商场景下商品、用户实时更新同步到至Elasticsearch、solr等搜索引擎;
2.价格、库存发生变更实时同步到redis;
3.数据库异地备份、数据同步;
4.代替使用轮询数据库方式来监控数据库变更,有效改善轮询耗费数据库资源。
一、安装mysql
1、在/tmp目录下创建mysql数据卷挂载目录
注:创建数据卷是为了方便修改mysql的配置
1.1、创建配置文件挂载目录:
[root@k8s-master1 /]# mkdir -p /tmp/mysql/conf
1.2、创建配置文件并添加如下内容
[root@k8s-master1 /]# vim /tmp/mysql/conf/hmy.cnf
[mysqld]
skip-name-resolve
character_set_server=utf8
datadir=/var/lib/mysql
# 开启 binlog,方便后续对接canal
log-bin=/var/lib/mysql/mysql-bin
# 选择 ROW 模式,方便后续对接canal
binlog-format=ROW
# 配置 MySQL replaction 需要定义,不要和 canal 的 slaveId 重复
server-id=1000
1.3、创建mysql数据卷挂载目录
[root@k8s-master1 /]# mkdir -p /tmp/mysql/data
2、docker安装mysql
[root@k8s-master1 /]# docker run --name mysql -e MYSQL_ROOT_PASSWORD=123456 -p 3306:3306 -v /tmp/mysql/conf/hmy.cnf:/etc/mysql/conf.d/hmy.cnf -v /tmp/mysql/data:/var/lib/mysql -d mysql:5.7.25
3、创建数据库用户并授权
授权 canal 链接 MySQL 账号具有作为 MySQL slave 的权限,在数据库连接工具里面,执行下面的语句即可:
create user canal@'%' IDENTIFIED by 'canal';
GRANT SELECT, REPLICATION SLAVE, REPLICATION CLIENT,SUPER ON *.* TO 'canal'@'%';
FLUSH PRIVILEGES;
4、查看bin-log是否已开启
二、安装canal
1、拉取镜像
[root@k8s-master1 /]# docker pull canal/canal-server:v1.1.1
2、安装canal-server容器
[root@k8s-master1 /]# docker run -