安装canal
1、下载地址
https://github.com/alibaba/canal/releases
2、配置mysql
注意:此处mysql版本是5.7,而且为了方便是在docker中安装的,所以路径可能与直接在linux中有所不同
(不是docker安装的路径:/etc/my.cnf)
路径:/etc/mysql/mysql.conf.d/mysqld.cnf
在[mysqld]下添加配置:
[mysqld]
log-bin=mysql-bin # 开启 binlog
binlog-format=ROW # 选择 ROW 模式
server_id=1 # 配置 MySQL replaction 需要定义,不要和 canal 的 slaveId 重复
binlog-do-db=bigdata # 具体要同步的数据库
binlog-do-db=bigdata
注意: binlog-do-db 根据自己的情况进行修改,指定具体要同步的数据库(就是要监测的数据库)
重启mysql使其生效
docker restart mysql
创建canal数据库用户
CREATE USER canal IDENTIFIED BY 'canal';
GRANT SELECT, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'canal'@'%';
FLUSH PRIVILEGES;
登陆mysql查看是否修改配置成功
mysql> show variables like ‘log_bin%’;
±--------------------------------±-------------------------------+
| Variable_name | Value |
±--------------------------------±-------------------------------+
| log_bin | ON |
| log_bin_basename | /var/lib/mysql/mysql-bin |
| log_bin_index | /var/lib/mysql/mysql-bin.index |
| log_bin_trust_function_creators | OFF |
| log_bin_use_v1_row_events | OFF |
±--------------------------------±-------------------------------+
mysql> show variables like ‘binlog_format%’;
±--------------±------+
| Variable_name | Value |
±--------------±------+
| binlog_format | ROW |
±--------------±------+
3、安装
解压
注意: canal解压后是散的,我们在指定解压目录的时候需要将canal指定上
mkdir /opt/bigdata/canal
tar -zxvf /opt/install/canal.deployer-1.1.5-SNAPSHOT.tar.gz -C /opt/bigdata/canal
修改配置
路径:/opt/bigdata/canal1.1.5/conf/canal.properties
这个文件是 canal 的基本通用配置, canal 端口号默认就是 11111·
修改 canal 的输出 model,默认 tcp,改为输出到 kafka
tcp 就是输出到 canal 客户端,通过编写 Java 代码处理

修改 Kafka 集群的地址

如果创建多个实例(单例测试不必修改)
通过前面 canal 架构,我们可以知道,一个 canal 服务中可以有多个 instance, conf/
下的每一个 example 即是一个实例,每个实例下面都有独立的配置文件。默认只有一个实
例 example,如果需要多个实例处理不同的 MySQL 数据的话,直接拷贝出多个 example,
并对其重新命名,命名和配置文件中指定的名称一致,然后修改 canal.properties 中的
canal.destinations=实例 1,实例 2,实例 3。

路径:/opt/bigdata/canal1.1.5/conf/example/instance.properties
我们这里只读取一个 MySQL 数据,所以只有一个实例, 这个实例的配置文件在
conf/example 目录下
配置 MySQL 服务器地址

配置连接 MySQL 的用户名和密码,默认就是我们前面授权的 canal

修改输出到 Kafka 的主题以及分区数

注意:默认还是输出到指定 Kafka 主题的一个 kafka 分区,因为多个分区并行可能会打乱
binlog 的顺序
如果要提高并行度,首先设置 kafka 的分区数>1,然后设置 canal.mq.partitionHash 属性
4、简单使用
- 启动zk
- 启动kafka
[root@cai bin]# ./kafka-server-start.sh ../config/server.properties
后台启动
[root@cai bin]# ./kafka-server-start.sh -daemon ../config/server.properties
- 启动mysql
- 在kafka中创建与canal instance.properties配置文件中一样的topic名称
./kafka-topics.sh --create --topic mysql_kafka --zookeeper 192.168.145.131:2181 --partitions 1 --replication-factor 1 Created topic "mysql_kafka".
- 查看topic
./kafka-topics.sh --zookeeper 192.168.145.131:2181 --list
- 启动 canal
[root@love canal1.1.5]# ./bin/startup.sh
- 向mysql bigdata库中创建表,插入数据
- 查看kafka topic(mysql_kafka )消费者
kafka-console-consumer.sh --bootstrap-server 192.168.145.131:9092 --topic mysql_kafka --from-beginning

可以使用kafkade 图形化工具查 kafka tools 看,下载地址:https://www.kafkatool.com/download.html

657

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



