求: 使用Canal将Mysql的变更数据实时同步到大数据平台(hdfs/hive/hbase)
环境:jdk
mysql
zookeepr(没有配置Ha的情况下不必配置,standalone也可,这里暂时未配置)
环境配置比较简单,这里略过。
Canal配置
下载安装包
wget https://github.com/alibaba/canal/releases/download/canal-1.0.22/canal.deployer-1.0.22.tar.gz
然后创建canal目录并解压:
可以看到如下目录
在canal中一个mysql实例对应一个配置文件,配置文件放在conf目录下的一个文件夹中,该文件夹的名字就代表了mysql实例example(也可能是别的目录名,非固定)代表一个mysql实例,
该文件夹中有个instance.properties文件,在里面配置mysql数据库的信息
vi conf/example/instance.properties
bin/startup.sh
vi logs/canal/canal.log
vi logs/example/example.log
以上两个命令可以看启动canal与example实例的日志。
到这里,启动完成
下一步:使用canal clent程序监控获取binlog并输出
步骤比较简单,具体过程略
参考文档:
https://github.com/alibaba/canal/wiki/ClientExample
出现错误:
则是由于jar冲突,注意一下protobuf的jar版本与是否与其他版本冲突。解决即可,我这里是hbase(?记不太清了。可能是hive)的版本问题。
这里我订阅内容为text.example,也可以使用正则订阅多种数据。
最后打印出解析的binlog数据(已经经过处理)