1. 前提准备
1.1 打开mysql主从功能(在mysql的my.cnf文件中添加以下配置)
server-id=1000
log-bin=/var/lib/mysql/mysql-bin # 设置binlog日志位置
binlog-do-db=item # 只对item这个数据库记录binary log events
1.2 添加用户权限
- 添加一个仅用于数据同步的账户
create user canal@'%' IDENTIFIED by 'canal';
GRANT SELECT, REPLICATION SLAVE, REPLICATION CLIENT,SUPER ON *.* TO 'canal'@'%' identified by 'canal';
FLUSH PRIVILEGES;
1.3 重启mysql
- 重启后客户端下输入以下指令查看mysql状态
show master status;
2. 安装Canal
2.1 拉取镜像并启动容器
docker run -p 11111:11111 --name canal \
-e canal.destinations=item \
-e canal.instance.master.address=172.17.0.3:3306 \
-e canal.instance.dbUsername=canal \
-e canal.instance.dbPassword=canal \
-e canal.instance.connectionCharset=UTF-8 \
-e canal.instance.tsdb.enable=true \
-e canal.instance.gtidon=false \
-e canal.instance.filter.regex=item\\..* \
-d canal/canal-server:v1.1.5
- -e canal.destinations=item canal集群的名字
- 其中的ip地址是你的mysql地址
- 配置了访问数据库的账户和密码
- 表名称监听器支持的语法
mysql 数据解析关注的表,Perl正则表达式.
多个正则之间以逗号(,)分隔,转义符需要双斜杠(\\)
常见例子:
1. 所有表:.* or .*\\..*
2. canal schema下所有表: canal\\..*
3. canal下的以canal打头的表:canal\\.canal.*
4. canal schema下的一张表:canal.test1
5. 多个规则组合使用然后以逗号隔开:canal\\..*,mysql.test1,mysql.test2
至此,canal已经成功安装并启动了