canal介绍及HA集群模式搭建.pdf
文本预览下载声明
canal介绍及HA集群模式搭建
快速了解canal
1.⾸先⼤概介绍⼀下canal是⼲啥的?
canal是⽤来实时同步mysql数据的。对于离线任务可以通过sqoop将mysql业务库的数据导⼊hive数仓中计
算,但是想要处理实时任务就要借助canal解析binlog ⽇志来实现了。
2.canal是如何实时获取mysql数据的?
canal服务伪装成mysql的从节点,接收mysql主节点的binlog ⽇志(binlog ⽇志⽂件⾥⾯记录了数据库的实时
操作) ,然后解析binlog就知道mysql做了哪些操作。
在数据实时同步⽅案中
跟mysql的binlog ⽇志类⽐的有
sqlserver同步采⽤的cdc ,(或者给表添加rowversion ,唯⼀缺点就是不能识别具体是更新还是插⼊操
作)
mongodb副本集模式的oplog
通过解析这些数据库的操作凭证⽂件就可以实时同步数据,处理实时任务
开启mysql的binlog
这是使⽤canal同步mysql数据的前提,必须要开启binlog ,否则canal解析什么?
1.查看mysql是否启⽤binlog
show variables like %log_bin%
显⽰bin_log的值为ON则表⽰开启,OFF则为关闭
2.开启binlog ⽇志
配置f (linux下的mysql )或者my.ini(windows下的mysql)开启binlog ⽇志,添加以下内容
log-bin=mysql-bin #添加这⼀⾏就ok
binlog-format=ROW #选择row模式
server_id=1 #配置mysql replaction需要定义,不能和canal的slaveId重复
3.创建canal访问账号
在MySQL中创建⼀个专门的canal访问账号,账号密码都为canal (这个可以⾃定义,只需在后⾯canal的
配置⽂件中写的即可)
GRANT SELECT, REPLICATION SLAVE, REPLICATION CLIENT
ON *.* TO canal@% IDENTIFIED BY canal;
canal的HA集群模式部署
canal服务的部署其实特别简单,解压之后只需配置两个⽂件即可(perties ;perties)
下⾯讲⼀下具体配置流程:
先在⼀台机器上部署服务,执⾏以下1-4步
1.⾸先要下载canal
2.解压到安装⽬录
tar -zxf canal.deployer-1.1.3.tar.gz
解压出来的⽬录结构是这样的
3.修改配置⽂件perties
canal.zkServers=7:2181,8:2181,9:2181
canal.instance.global.spring.xml = classpath:spring/default-instance.xml
canal.destinations = example
(这个example就是conf ⽬录⾥的实例,如果要建别的实例test就建个test ⽬录,把example⾥⾯的
perties⽂件拷贝到test的实例⽬录下就好了,然后在这⾥的配置就是canal.destinations
example,test)
配置太长了,下⾯两张图是⼀起的
4.修改配置⽂件perties
canal.instance.mysql.slaveId = 1234 ##另外⼀台机器改成1235,保证两台机器上的slaveId不重复
到此为⽌就部署好了单台canal服务,可以进⼊到bin ⽬录下启动canal服务
代码⾥⾯客户端连接的时候就可以采⽤单节点⽅式连接
CanalConnector mConnector = CanalConnectors.newSingleConnector(new
InetSocketAddress(7, 11111), example, , );
HA集群模式的部署
在另外⼀台机器上再做⼀次上⾯同样的操作,只是第4步的
perties中的canal.instance.mysql.slaveId (canal伪装的mysql slave的编号,不能与mysql数据库与
其他的slave重复。)不⼀样。其余⼀模⼀样。
⾄此HA集群模式配置好了。HA模式在启动的时候要两台机器都启动canal服务,然后由zookeeper ⾃动管
理active和standby状态。
客户端连接服务的时候就可以采⽤集群⽅式连接了
基于zookeeper动态获取canal server的地址,建⽴链接,其中⼀台server发⽣c
显示全部