数据同步框架Canal-一

在程序员的职业生涯中,大部分人不可避免的都会与数据库打交道。例如当下流行的关系型数据库MYSQL,缓存型数据库Redis等等。

在正常工作中,我们与数据库的交互无非限于关于数据的增删改查,而有的时候,由于工作需要或者其他原因的考虑,需要对数据库的数据进行迁移或备份,这时候就需要更深入的了解数据库本身或者借助一些其他工具来完成这份需求。

今天介绍的主角Canal,便是一个可以帮助我们迁移数据库数据的一个工具,先来看下它的官方介绍:

Canal is a high performance data synchronization system based on MySQL binary log. Canal is widely used in Alibaba group (including https://www.taobao.com) to provide reliable low latency incremental data pipeline.

从介绍中可以知道Canal是一个基于MYSQL二进制文件的高性能数据同步系统。它可以将MYSQL数据库中的数据迁移到任意其他位置,如Kafka,ES等。

功能特性

首先来介绍Canal的一些功能特性:

  1. 支持所有平台
  2. 拥有由Prometheus提供的细粒度监控功能
  3. 支持通过各种方式解析与订阅MYSQL binlog
  4. 支持高性能,实时的数据同步
  5. Canal客户端与Canal服务端均支持由Zookeeper提供的HA/可扩展性功能
  6. 支持Docker

数据库同步工作原理简介

数据同步框架Canal-一

图一--转自https://github.com/alibaba/canal/wiki/Introduction

  1. Master主机记录数据改变并记录到binlog日志中
  2. Slave主机通过IO线程将Master主机的binlog进行读取,并写入到自身的RelayLog中
  3. Slave主机发生重做时间,并从RelayLog中进行读取数据,然后更新自身的旧数据。

Canal同步工作原理简介

数据同步框架Canal-一

图二-转自https://github.com/alibaba/canal/wiki/Introduction

  1. Canal模拟Slave主机的交互协议,将自己伪装为Slave主机,并将转储协议发送到Master主机。
  2. Master主机收到转储协议,将binlog日志发送到Slave主机,即Canal
  3. Canal将binlog日志数据解析为自身的数据格
发表评论
留言与评论(共有 0 条评论) “”
   
验证码:

相关文章

推荐文章