canal.deployer-1.1.4.tar.gz
本人百度网盘下载地址
链接: https://pan.baidu.com/s/1iMCXHL_tNLRSLQyu_AYfMg?pwd=cxm1
lunix配置canal,用于监听mysql的binlog日志。
一、应用场景
一般在统计分析功能中,我们会采取Feign服务调用获取统计数据,这样耦合度高,效率相对较低,目前采取另一种实现方式,通过实时同步数据库表的方式实现,例如我们要统计每天注册与登录人数,我们只需把会员表同步到统计库中,实现本地统计就可以了,这样效率更高,耦合度更低,Canal就是一个很好的数据库同步工具。canal是阿里巴巴旗下的一款开源项目,纯Java开发。基于数据库增量日志解析,提供增量数据订阅&消费,目前主要支持了MySQL。
二、Canal环境搭建
canal的原理是基于mysql binlog技术,所以这里一定需要开启mysql的binlog写入功能开启mysql服务:service mysql start (或者 systemctl start mysqld.service)
1、检查binlog功能是否开启
mysql> show variables like 'log_bin';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| log_bin | OFF |
+---------------+-------+
1 row in set (0.01 sec)
2、显示OFF表示该功能未开启
1、修改mysql得配置文件my.cnf
vi /etc/my.cnf
追加内容
# binlog文件名
log-bin=mysql-bin
# 选择row模式
binlog_format=ROW
# mysql 实例id,不能和canal的slaveId重复
server_id=1
# binlog日志文件过期时间30天
expire_logs_days = 30
2、重启mysql(修改my.cnf必须重启才能生效)
systemctl restart mysqld
3、登录mysql,查看log_bin
mysql> show variables like 'log_bin';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| log_bin | ON |
+---------------+-------+
1 row in set (0.02 sec)
-----------------------
显示ON表示该功能开启
3、下载安装Canal服务
canal.deployer-1.1.4.tar.gz
1)下载后放到cd /usr/local/canal
tar -zxvf canal.deployer-1.1.4.tar.gz
2)修改配置文件
vi conf/example/instance.properties
# position info
# 需要改成自己的数据库信息
canal.instance.master.address=10.0.0.11:3306
# 设置开始读的文件(可不设置)
canal.instance.master.journal.name=mysql-bin.000001
# 设置开始读的偏移量(可不设置)
canal.instance.master.position=154
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=root
canal.instance.dbPassword=123456
canal.instance.connectionCharset = UTF-8
# 需要改成同步数据库表的规则,支持正则表达式
# 如果要排除某张表也可使用代码操作(推荐)
# table regex
canal.instance.filter.regex=.*\\..*
3)进入bin目录下启动
sh bin/startup.sh