准备 :
- 安装canal (博主canal版本1.1.5)
- 安装kafka, 做接收binlog日志数据用 (博主kafka版本2.11)
- 安装两个msyql, 相当于两个mysql数据库 (博主mysql版本5.1.0)
我mysql的两台节点分别是 : 192.168.1.137, 192.168.1.138 - 开启binlog (两台mysql都需要开启)
- 在mysql中创建canal用户(两台mysql都需要创建)
这些组件的安装方式网上有很多, 这里不做赘述,
第一台mysql开启binlog :
[mysqld]
log-bin=mysql-bin # 开启 binlog
binlog-format=ROW # 选择 ROW 模式
server_id=1 # ,不要和 canal 的 slaveId 重复 ,集群模式也不可以重复
第二台mysql开启binlog :
[mysqld]
log-bin=mysql-bin # 开启 binlog
binlog-format=ROW # 选择 ROW 模式
server_id=2 # ,不要和 canal 的 slaveId 重复 ,集群模式也不可以重复
两台mysql中都需要创建canal用户 :
创建canal用户,密码为canal
CREATE USER canal IDENTIFIED BY 'canal';
赋予canal 权限
GRANT SELECT, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'canal'@'%';
刷新授权
FLUSH PRIVILEGES;
修改canal 配置文件,修改 Canal 全局设置
vim $CANAL_CONF/canal.properties
$CANAL_CONF : 是canal目录下的conf目录
#################################################
######### common argument #############
################################################
# tcp, kafka, rocketMQ, rabbitMQ
# 服务方式,默认为 tcp,如果需要将 canal 消息发送到 kafka 就选 kafka
canal.serverMode = kafka
#################################################
######### destinations #############
#################################################
# 当前server上部署的instance列表,定义了canal.destinations后,需要在canal.conf.dir对应的目录下建立同名的文件,多个实例用 逗号分隔, 如下: canal.destinations = example1,example2
canal.destinations = example
# 全局的spring配置方式的组件文件 ,主要针对需要进行多库合并时,可以将多个物理instance合并为一个逻辑instance,提供客户端访问。(更详细的说明请自行查看参数)
canal.instance.global.spring.xml = classpath:spring/group-instance.xml
##################################################
######### Kafka #############
##################################################
kafka.bootstrap.servers = 127.0.0.1:9092 #因为我kafka在本机上, 所以直接使用的127.0.0.1, 请根据实际情况自行配置
修改instance 配置文件,修改单个数据源的配置
vim $CANAL_CONF/example/instance.properties
这里的 example , 就是在 canal.properties文件中canal.destinations=参数指定的, 请根据实际情况自行配置
#################################################
# position info
#第一台mysql配置
canal.instance.master1.address=192.168.1.137:3306
canal.instance.master1.journal.name=mysql主库链接时起始的binlog文件
canal.instance.master1.position=mysql主库链接时起始的binlog偏移量
canal.instance.master1.timestamp=mysql主库链接时起始的binlog的时间戳
canal.instance.master1.gtid=是否启用mysql gtid的订阅模式
#第二台mysql配置
canal.instance.master2.address=192.168.1.138:3306
canal.instance.master2.journal.name=mysql主库链接时起始的binlog文件
canal.instance.master2.position=mysql主库链接时起始的binlog偏移量
canal.instance.master2.timestamp=mysql主库链接时起始的binlog的时间戳
canal.instance.master2.gtid=是否启用mysql gtid的订阅模式
# 第一台mysql username/password
canal.instance1.dbUsername=root
canal.instance1.dbPassword=137password
# 第二台mysql username/password
canal.instance2.dbUsername=root
canal.instance2.dbPassword=137password
# 白名单,选择监控哪些表
canal.instance1.filter.regex=.*\\..*
canal.instance2.filter.regex=dm.test1,dm.zzz_test2
# 黑名单,选择不监控哪些表
canal.instance.filter.black.regex=mysql\\.slave_.*
# topic的名字