Canal同时监控两个mysql的binlog并同步至一个topic中

准备 :

  1. 安装canal (博主canal版本1.1.5)
  2. 安装kafka, 做接收binlog日志数据用 (博主kafka版本2.11)
  3. 安装两个msyql, 相当于两个mysql数据库 (博主mysql版本5.1.0)
    我mysql的两台节点分别是 : 192.168.1.137, 192.168.1.138
  4. 开启binlog (两台mysql都需要开启)
  5. 在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的名字

你可能感兴趣的:(大数据,mysql,kafka)