canal mysql重置_canal: 首先装完阿里的canal,然后数据库同步,仅供学习参考

背景

需要将数据库增量内容同步到另外的数据库,两者保持一致。包含增删改,数据库创建、删除,数据库名称修改,内容清空,表结构修改,索引创建、修改、删除。

方案

采用阿里巴巴Canal,用于监听mysql的bin-log日志,从中读取操作日志,然后写入目标库。

JDK需要自行安装,本人采用JDK1.8-64位。

(2)修改mysql配置文件my.inf(用的mysql5.7版本)

[mysqld]

log-bin=mysql-bin

binlog-format=ROW

server-id=123 # 自定义

binlog-do-db=test1 # 需要同步的数据库1

binlog-do-db=test2 # 需要同步的数据库2

binlog-do-db=test3 # 需要同步的数据库3

binlog-do-db=test4 # 需要同步的数据库4

binlog-ignore-db=mysql # 忽略的表

binlog-ignore-db=mysqlslap

binlog-ignore-db=information_schema

binlog-ignore-db=performance_schema

binlog-ignore-db=sys

expire_logs_days=3 # 自动清理3天前的log文件,可根据需要修改

max_binlog_size=100M # 参考https://www.cnblogs.com/MYSQLZOUQI/articles/3860938.html

注:mysql的bin-log文件一般在/var/lib/mysql下

重启mysql后可以在上述路径下看到 : mysql-bin.00001类似的文件。

如果文件误删,可以用FLUSH LOGS命令重新生成

(3)创建canal用户名与密码,并赋予权限

CREATE USER canal@'%' IDENTIFIED BY 'canal'; # %远程登录

GRANT ALL PRIVILEGES ON *.*TO 'canal'@'%' ; # 赋予canal所有权限

FLUSH PRIVILEGES;

show grants for 'canal' ; # 查看权限

说明 replication slave 允许读取主服务器上的二进制文件

创建完可以试着登录一下,并执行

ON代表成功开启

show variables like 'binlog_format';

show variables like 'log_bin';

show variables like '%server_id%';

GRANT Replication Slave ON . TO zhl_rcenter_v2@%;

(4)解压canal包

cd 安装包路径

mkdir /usr/local/canal

tar zxvf canal.deployer-1.1.4.tar.gz -C /usr/local/canal

(5)认识目录

bin: 存放启动,停止,重启的sh文件

conf: 存放配置文件

lib: 一些引用包

logs:日志文件

(6)配置

备份

cp ./conf/example/ 备份路径

对于每个实例进行配置:一个实例连接一个数据源,例如配置一个rcenter,一个dictionary

cp ./conf/example rcenter

cp ./conf/example dictionary

打开配置文件(rcenter)

vi ./conf/rcenter/instance.properties

修改部分信息

canal.instance.master.address=源数据库ip:3306

数据库用户名

canal.instance.dbUsername=【用户名】

数据库用密码

canal.instance.dbPassword=【密码】

默认数据库名称

canal.instance.defaultDatabaseName=zhl_rcenter_v2

打开配置文件(dictionary)

vi ./conf/dictionary/instance.properties

修改部分信息

canal.instance.master.address=源数据库ip:3306

数据库用户名

canal.instance.dbUsername=canal

数据库用密码

canal.instance.dbPassword=canal

默认数据库名称

canal.instance.defaultDatabaseName=zhl_dictionay

(7)启动canal

进入./conf 中

./startup.sh

查看logs中的日志是否成功

tail -f ./canal/canal.log

tail -f ./rcenter/rcenter.log

tail -f ./dictionary/dictionary.log

如果报错with command: show master status请看文后链接(一般来说都是权限不正确)

(8)编写客户端

见项目的application.yml

配置需要注意, 1. 每次增加实例需要配置目标数据源

2. canal.instance按格式配置

3. JdbcTemplateUtil类中配置excute切换数据源

4. SpringDatasourceConfig中配置数据源

(9)存在问题

如果与canal服务器断开连接,则进程挂掉。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值