简介
本次canal 使用目前为止最新版本(1.1.8)、数据库使用的是Mysql8.0+
canal下载地址
下载以下两个压缩包:canal.adapter-1.1.8.tar.gz、canal.deployer-1.1.8.tar.gz
为什么使用 Canal?主从复制不可以嘛?
本文章以 mysql 同步到 mysql 为例子,如果是 mysql 同步到 mysql 的话当然可以用主从复制,如果是同步到ES、h2、达梦等呢。即便是 mysql 同步到 mysql,如果只想同步部分表或者更细力度的标准呢,此时我们就可以使用 canal 啦。
Mysql数据库修改内容如下
-
登录mysql
mysql -u username -p password -
查询版本号(8.0+使用以下方式创建账号即可)
select version(); -
创建账号
CREATE USER 'canal'@'%' IDENTIFIED BY 'canal'; -
授予权限
GRANT SELECT, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'canal'@'%'; -
查询是否开启了binlog、以及binlog的格式是否设置的是行模式;必须是以下显示才可以
SHOW VARIABLES WHERE Variable_name IN ('log_bin', 'binlog_format');
-
开启binlog修改配置文件
my.cnf[mysqld] server-id=1 # 必须是唯一的,特别是在主从复制环境中 log-bin=mysql安装路径/mysql8/mysql.bin #开启binlog # binlog的格式默认设置的是行模式如果你执行上面sql返回的不是 ROW 那就加下这个配置 binlog-format=row -
重启mysql
# mysql一般都会注册成服务的并设置开机自启,直接执行如下命令 systemctl restart mysql服务名
canal.deployer部署
自己创建个目录,一定要自己创建个目录,解压之后是没有目录的
-
创建目录
mkdir canal-deployer -
进入目录、并查询目录所在位置,执行如下两个命令
1.cd canal-deployer 2.pwd -
解压
tar -zxvf canal.deployer-1.1.8.tar.gz -C canal-deployer目录所在位置 -
进入 conf/example 修改配置文件
instance.properties找到对应的地方修改即可canal.instance.mysql.slaveId=3306(与mysql配置文件中的server-id值不一样即可) canal.instance.master.address=主库的所在ip:端口号 canal.instance.dbUsername=canal (连接mysql的账号) canal.instance.dbPassword=canal (连接mysql的密码) canal.instance.filter.regex=database_name.*(代表该库下的所有表的binlog) # 如果向监控具体库下具体的table # canal.instance.filter.regex=database_name.table_name1,database_name.table_name2 -
启动 canal.deployer,进入bin目录
./startup.sh -
【可跳过】到此可以成功监控并读取 database_name 的binlog,可以创建一个maven工程测试下是否可以监控到
6.1 引入依赖(用1.1.4就行,一个测试程序嘛,没问题不写都行,为了排查问题对吧)
<dependency> <groupId>com.alibaba.otter</groupId</

最低0.47元/天 解锁文章
1422

被折叠的 条评论
为什么被折叠?



