Canal安装文档
- 环境,业务需求说明
-
- 服务器环境使用华为FusionInsight大数据平台,使用Kerberos认证,要求搭建阿里开源canal(版本:1.1.4)来监控mysql的几张数据表,实时把数据动态传入Kafka,通过Flink做业务处理,实时插入HBase数据库。
- Canal:canal是阿里巴巴旗下的一款开源项目,纯Java开发。基于数据库增量日志解析,提供增量数据订阅&消费,目前主要支持了MySQL(也支持mariaDB)。
-
- 安装步骤:
-
- 安装包下载地址:https://github.com/alibaba/canal/releases
- 在/opt 目录下(或者其他目录)创建一个canal文件夹
-
注:因为canal解压后并没有整体的文件夹,是把里面的内容一下解压出来的,然后进入canal文件夹,将安装包canal.deployer-1.1.4.tar.gz传输进来。
-
-
- 解压:tar -zxvf canal.deployer-1.1. 4.tar.gz
- 修改canal配置文件:vi /conf/example/instance.properties
-
canal.instance.dbUsername = **** #数据库用户名 |
-
-
- 配置MySQL数据库:vi /etc/my.cnf
-
添加以下三行内容,如果原来存在,则不需要添加,只需对当前配置项进行修改即可
log-bin=mysql-bin #添加这一行就ok |
-
-
- 配置canal用户
-
用root用户登录mysql : mysql –u*** –p***
创建“canal”用户:create user canal identified by 'canal';
有可能会出现如下情况:
|
直接刷新:FLUSH PRIVILEGES;
然后再次创建“canal”用户
|
为“canal”用户赋予相应权限:
GRANT SELECT, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'canal'@'%';
然后刷新权限:FLUSH PRIVILEGES;
重启mysql服务:centos7:systemctl restart mysqld.service
centos7以下:sudo service mysqld restart
|
-
-
- cd到bin目录,启动canal-server
-
/bin/startup.sh
查看启动状态:
tail -f -n 50 ../logs/canal/canal.log
- 关于canal同步数据到kafka的Kerberos认证,操作步骤:
-
- 修改canal.properties
-
canal.mq.kafka.kerberos.enable = true ##注意不要再路径上加””,不然识别不了 canal.mq.kafka.kerberos.krb5FilePath = ../conf/kerberos/krb5.conf canal.mq.kafka.kerberos.jaasFilePath = ../conf/kerberos/jaas.conf |
-
-
- 在conf目录下创建kerberos文件夹
-
添加krb5.conf文件 |
参考文档:
#canal安装
https://www.cnblogs.com/java-spring/p/8930740.html
#canal集成kafka的Kerberos认证
https://blog.****.net/weixin_40126236/article/details/103492815
遇到的错误问题:
- example.log报如上错误,是由于mysql之前配置的用户密码所对应的h2数据库配置在发生修改后没有重新初始化,删除掉example目录中的h2.mv.db及meta.dat重启即可
|
- canal.log报如下错误,是由于canal.properties中的kerberos配置对应的文件路径名加了双引号,去掉即可。同时,jaas.conf应使用集群对应的keytab及principal信息进行kerberos认证。
|
- 配置jaas.conf文件
|
- canal集成kerberos完成后,canal.log如下报错是由于使用的kafka lib不一致,无法通过华为大数据平台的kerberos认证,将canal/lib目录中的kafka相关jar包删除后,拷贝对应华为大数据平台版本的jar包即可
|
- 配置过程中kafka注意要点:
kafka最好单分区,三副本,可以配置多分区,但是需要配置canal的instance只往其中一个分区里推数,不然消费的时候顺序会乱,写库就会出错。
6、mysql创建canal用户后,无法使用mysql -ucanal –pcanal登录
解决方案: 使用root用户登录, 再使用canal用户登录即可,解决 |
7、CDH搭建完成后,开启Kerberos后,发现canal跑不起来,一直出现一下错误,反复检查配置文件的配置,都没错,最后才发现,原来kafka没有开启kerberos,这是因为cdh开启kerberos,默认并不包括kafka,需要额外重新对kafka进行kerberos安全认证的配置。
|
主机 à parcel |