一、Canal安装部署
1.下载canal安装包
下载地址:Releases · alibaba/canal · GitHub
下载版本为1.0.26切记不要使用1.0.25,有bug
2.解压缩
tar -zxvf canal.deployer-1.0.26-SNAPSHOT.tar.gz
解压之后有如下四个目录:
drwxr-xr-x 2 root root 4096 Jun 15 01:45 bin
drwxr-xr-x 13 root root 4096 Jun 12 14:14 conf
drwxr-xr-x 2 root root 4096 Jun 5 00:28 lib
drwxrwxrwx 13 root root 4096 Jun 19 10:06 logs
3.配置
到conf目录下:
vi canal.properties
复制实例,将example改为自己需要的名字。如oms1
配置单个实例:
vi oms1/instance.properties
如果是配置高可用,则需要在另外一台服务器上配置相同的canal不过slaveid不能相同
4.启动
到bin目录下:
启动:sh startup.sh
停止:sh stop.sh
5.客户端的使用
在服务器10.138.232.93上
cd /usr/local/canal.client/bin
执行sh oms1.sh启动oms1实例的客户端
配置文件在此目录下config文件夹中
vi canal.properties
二、Canal部署情况
1、canal server 部署在以下节点:
10.138.232.94
10.138.232.95
server目录:
/usr/local/canal1.0.26
目前 10.138.232.95是主
2、canal client 部署在以下节点:
10.138.232.93
10.138.232.92
目录:/usr/local/canal.client/
目前有10个实例:
oms1 - oms8 + yuyue132 yuyue134
启动脚本在
/usr/local/canal.client/bin下
每个实例对应的启动脚本为:
实例名.sh
启动client:
sh 实例名.sh
3、查看 canal 进程
登录到93上
ps -ef|grep canal
4、数据日志目录
client节点的
/data/dfs/dn/disk10/canal/logs/
三、Canal读取目标服务器宕机操作
1.canal读取的目标服务器宕机之后,canalserver端会报错:
CanalClient也接不到数据了,查看数据日志会发现不会有新数据产生。
2.目标服务器恢复之后。连接执行show binary logs;
会看到:
明显有宕机后没有产生binlog日志的情况。
3.在服务器上打开zk客户端查看:
sh /opt/cloudera/parcels/CDH-5.12.2-1.cdh5.12.2.p0.4/lib/zookeeper/bin/zkCli.sh
get /otter/canal/destinations/yuyue134/1001/cursor
可以看到保存在zk上的点位信息
如果和第二步查询到的出问题binlog_name吻合,可以确定问题所在。
4.在zk上删除此节点
rmr /otter/canal/destinations/yuyue134/1001/cursor
5.将出问题binlog_name记录下来,配置在canalServer的对应实例配置文件里:
保存后,在日志中会看到:
说明启动成功。
四、Binlog抽数
MySQL是最常见的数据库管理系统,我们会从MySQL实例中抽取数据,存入一个中心节点,或直接进入Hive。
简单来说,Canal会将自己伪装成MySQL从节点(Slave),并从主节点(Master)获取Binlog,解析和贮存后供下游消费端使用。Canal包含两个组成部分:服务端和客户端。服务端负责连接至不同的MySQL实例,并为每个实例维护一个事件消息队列;客户端则可以订阅这些队列中的数据变更事件,处理并存储到数据仓库中。