Canal安装文档

  • 环境,业务需求说明
      1. 服务器环境使用华为FusionInsight大数据平台,使用Kerberos认证,要求搭建阿里开源canal(版本:1.1.4)来监控mysql的几张数据表,实时把数据动态传入Kafka,通过Flink做业务处理,实时插入HBase数据库。
      2. Canal:canal是阿里巴巴旗下的一款开源项目,纯Java开发。基于数据库增量日志解析,提供增量数据订阅&消费,目前主要支持了MySQL(也支持mariaDB)。
  • 安装步骤:
      1. 安装包下载地址:https://github.com/alibaba/canal/releases
      2. 在/opt 目录下(或者其他目录)创建一个canal文件夹

注:因为canal解压后并没有整体的文件夹,是把里面的内容一下解压出来的,然后进入canal文件夹,将安装包canal.deployer-1.1.4.tar.gz传输进来。

      1. 解压:tar -zxvf canal.deployer-1.1. 4.tar.gz
      2. 修改canal配置文件:vi /conf/example/instance.properties

canal.instance.dbUsername = ****          #数据库用户名 
canal.instance.dbPassword = ****           #数据库密码 
canal.instance.defaultDatabaseName = ****   #指定要同步的数据库 
canal.instance.connectionCharset = UTF-8      #指定编码方式

      1. 配置MySQL数据库:vi /etc/my.cnf

添加以下三行内容,如果原来存在,则不需要添加,只需对当前配置项进行修改即可

log-bin=mysql-bin             #添加这一行就ok 
binlog-format=ROW           #选择row模式 
server-id=1       #配置mysql replaction需要定义,不能和canal的slaveId重复

      1. 配置canal用户

用root用户登录mysql :  mysql –u*** –p***

创建“canal”用户:create user canal identified by 'canal';

有可能会出现如下情况:

Canal安装文档

直接刷新:FLUSH PRIVILEGES;

然后再次创建“canal”用户

Canal安装文档

为“canal”用户赋予相应权限:

GRANT SELECT, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'canal'@'%';

然后刷新权限:FLUSH PRIVILEGES;

重启mysql服务:centos7:systemctl restart mysqld.service

centos7以下:sudo service mysqld restart

Canal安装文档

      1. cd到bin目录,启动canal-server

/bin/startup.sh

查看启动状态:

tail -f -n 50 ../logs/canal/canal.log

  • 关于canal同步数据到kafka的Kerberos认证,操作步骤:
      1. 修改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

      1. 在conf目录下创建kerberos文件夹

添加krb5.conf文件
添加jaas.conf文件
添加kafka.keytab文件
-----------在kerberos下有三个文件

 

参考文档:

       #canal安装

       https://www.cnblogs.com/java-spring/p/8930740.html

    #canal集成kafka的Kerberos认证

https://blog.****.net/weixin_40126236/article/details/103492815

 

遇到的错误问题:

  1. example.log报如上错误,是由于mysql之前配置的用户密码所对应的h2数据库配置在发生修改后没有重新初始化,删除掉example目录中的h2.mv.db及meta.dat重启即可

Canal安装文档

  1. canal.log报如下错误,是由于canal.properties中的kerberos配置对应的文件路径名加了双引号,去掉即可。同时,jaas.conf应使用集群对应的keytab及principal信息进行kerberos认证。

Canal安装文档

  1. 配置jaas.conf文件

Canal安装文档

  1. canal集成kerberos完成后,canal.log如下报错是由于使用的kafka lib不一致,无法通过华为大数据平台的kerberos认证,将canal/lib目录中的kafka相关jar包删除后,拷贝对应华为大数据平台版本的jar包即可

Canal安装文档

  1. 配置过程中kafka注意要点:

kafka最好单分区,三副本,可以配置多分区,但是需要配置canal的instance只往其中一个分区里推数,不然消费的时候顺序会乱,写库就会出错。

 

6、mysql创建canal用户后,无法使用mysql -ucanal –pcanal登录

Canal安装文档

解决方案:

使用root用户登录,

Canal安装文档

再使用canal用户登录即可,解决

 

7、CDH搭建完成后,开启Kerberos后,发现canal跑不起来,一直出现一下错误,反复检查配置文件的配置,都没错,最后才发现,原来kafka没有开启kerberos,这是因为cdh开启kerberos,默认并不包括kafka,需要额外重新对kafka进行kerberos安全认证的配置。

Canal安装文档

Canal安装文档

主机 à  parcel

Canal安装文档