大数据基本培训

核心提示Canal简介与安装Canal简介Canal是阿里巴巴开发的 MySQL binlog 增量订阅&消费组件。Canal是基于MySQL二进制日志的高性能数据同步系统。Canal在阿里巴巴集团中被广泛使用,以提供可靠的低延迟增量数据管道。Ca

运河的引入和安装

运河简介

Canal是阿里巴巴开发的MySQL binlog的增量订阅和消费组件。

Canal是一个基于MySQL二进制日志的高性能数据同步系统。阿里巴巴集团广泛使用Canal来提供可靠的低延迟增量数据管道。

Canal Server可以解析MySQL Binlog,订阅数据变化,而Canal Client可以将变化广播到任何地方,比如数据库和Apache Kafka。

具有以下特点:

支持所有平台。

支持普罗米修斯支持的细粒度系统监控。

MySQL Binlog可以通过不同的方式进行解析和订阅。

支持高性能和实时数据同步。

Canal服务器和Canal客户端都支持Apache ZooKeeper支持的HA/可伸缩性。

Docker支持。

了解运河

Canal [k'nl],译为水道/管道/沟渠,主要用于提供基于MySQL数据库增量日志分析的增量数据订阅和消费。

早期因为在杭州和美国部署双机房,阿里巴巴有跨机房同步的业务需求,主要通过基于业务触发获取增量变化来实现。从2010年开始,业务逐渐尝试分析数据库日志获取增量变化进行同步,产生了大量数据库的增量订阅和消费业务。

基于日志增量订阅和消费的服务包括:

数据库镜像;

实时数据库备份;

索引构建和实时维护;

服务缓存刷新;

用业务逻辑进行增量数据处理;

目前canal支持的源MySQL版本有5.1.x、5.5.x、5.6.x、5.7.x、8.0.x

操作原理

MySQL主备份复制原则

MySQL master将数据更改写入二进制日志;

MySQL从机将主机的二进制日志事件复制到其中继日志中;

MySQL slave重放中继日志中的事件,并将数据变化反映到自己的数据中;

运河的工作原理

Canal模拟MySQL slave的交互协议,伪装成MySQL slave,向MySQL master发送dump协议;

MySQL master收到转储请求,开始向slave推送二进制日志;

运河解析二进制日志对象;孤儿:2名;文本缩进:0px文本转换:无;寡妇:2名;字间距:0px-WebKit-text-stroke-width:0px;文字-装饰-风格:初始;text-decoration-color:initial " data-from-paste = " 1 " data-diagnose->[mysqld]log-bin = mysqld-bin # Open binlogbinlog-format = ROW # Select ROW mode server _ id = 1 # Configure MySQL replaction,需要定义,不要和canal的slaveId重复。

修改后重启mysql服务。

2.授权canal链接MySQL账号拥有作为MySQL slave的权限,如果已有账号直接授予。

创建由“运河”标识的用户运河;*上的授权选择、复制从属、复制客户端。*到'运河' @ ' % ';-授予*上的所有权限。*到'运河' @ ' % ';刷新权限;

开始

1.下载canal,访问发布页面,选择需要的包下载,比如版本1.0.17。

wget https://github . com/阿里巴巴/canal/releases/download/canal-1 . 0 . 17/canal . deployer-1 . 0 . 17 . tar . gz

解压

mkdir/opt/canal tar-zxvf canal . deployer-$ version . tar . gz-C/opt/canal

解压后进入/opt/canal目录,可以看到如下结构:

3.配置修改

vi配置/示例/实例.属性

# # MySQL serverId canal . instance . MySQL . slave id = 1234 #位置信息,需要更改自己的数据库信息,canal . instance . master . address = 127 . 0 . 0 . 1:3306 canal . instance . master . journal . name = canal . instance . master . position = canal . instance . master。timestamp = # canal . instance . stand by . address = # canal . instance . stand by . journal . name = # canal . instance . stand by . position = # canal . instance . stand by . timestamp = # username/password,需要将自己的数据库信息改为canal . instance . db username = canal . instance . db password = canal . instance . default databasename = canal . instance . connection charset . = UTF-8 # table regex canal . instance . filter . regex =。*..*

canal . instance . connection charset表示数据库的编码方式对应java中的编码类型,如UTF-8、GBK、ISO-8859-1。

如果系统是1 cpu,就需要将canal.instance.parser.parallel设置为false。

开始

sh bin/startup.sh

5.检查服务器日志

vi日志/canal/canal.log

2013-02-05 22:45:27.967[main]INFO com . Alibaba . otter . canal . deployer . canal launcher-# #启动运河服务器2013-02-05 22:45:28.113[main]INFO com . Alibaba . otter . canal . deployer . canal controller-# #启动运河服务器[10 . 1 . 29 . 120:111111]2013-02-05 22:42......

6.检查实例的日志

2013-02-05 22:50:45.636[main]INFO c . a . o . c . I . spring . support . propertyplaceholderconfigure-从类路径资源加载属性文件[canal . properties]2013-02-05 22:50:45.641[main]INFO c . a . o . c . I . spring . support . propertyplaceholderconfigure-从类路径资源加载属性文件[example/instance . properties]2013....

7.关闭

sh bin/停止. sh

至此,canal中的一切都已安装成功。

 
友情链接
鄂ICP备19019357号-22