Canal与DataX等工具的区别

Canal\DataX\MySQLMTOP

你好! 今天这篇文章主要讲解 各种数据同步组件以及数据采集分析组件等运维相关工具,如果你想转型架构师也可以参阅这篇文章。

1. Canal

Canal意译为水道/管道,主要用途是基于MySQL数据库增量日志解析,提供增量数据订阅和消费。
早期阿里巴巴因为杭州和美国双机房部署,存在跨机房同步的业务需求,实现方式主要是基于业务trigger获取增量变更。从2010年,业务逐步尝试数据库日志解析获取增量变更进行同步,由此衍生出了大量的数据库增量订阅和消费业务。

基于日志增量订阅和消费的业务包括以下内容:

  • 数据库镜像
  • 数控实时备份
  • 索引构建和实时维护(拆分异构索引、倒排索引等)
  • 业务cache刷新
  • 带业务逻辑的增量数据处理
    当前的canal支持源端MySQL版本包括5.1.x,5.5.x,5.6.x,5.7.x,8.0.x

1.1 canal工作原理

MySQL主备复制原理
- My

  • MySQL master将数据变更写入二进制日志(binary log,其中记录叫做二进制日志事件binary log events,可以通过show binlog events 进行查看)
  • MySQL slave将master的binary log events 拷贝到它的中继日志中(relay log)
  • MySQL slave重放relay log 中的事件,将数据变更反映到它自己的数据库中

canal的工作原理类似mysql主从同步原理:
请添加图片描述

  • canal模拟MySQL slave的交互协议,伪装自己为MySQL slave,向MySQL master发送dump协议
  • MySQL master收到dump协议请求,开始推送binary log 给canal
  • canal解析binary log对象(原始为byte流)

1.2 canal应用场景

该技术在某些平台职位搜索业务中得到了采用,场景:在企业HR发布、更新或删除职位时,我们需要及时更新职位索引,便于求职者能快速的搜索到。
请添加图片描述

想了解更多cannal工具详情,可参考官网文档:https://github.com/alibaba/canal

2. DataX

2.1 Datax简介

DataX 是阿里巴巴集团内被广泛使用的离线数据同步工具/平台,实现包括 MySQL、Oracle、
SqlServer、Postgre、HDFS、Hive、ADS、HBase、TableStore(OTS)、MaxCompute(ODPS)、DRDS等各种异构数据源之间高效的数据同步功能。
请添加图片描述
设计理念
为了解决异构数据源同步问题,DataX将复杂的网状的同步链路变成了星型数据链路,DataX作为中间传输载体负责连接各种数据源。当需要接入一个新的数据源的时候,只需要将此数据源对接DataX,便能跟已有的数据源做到无缝数据同步。

当前使用现状
DataX在阿里巴巴集团内被广泛使用,承担了所有大数据的离线同步业务,并已持续稳定运行了多年。当年每天完成同步8w多道作业,每日传输数据量超过300TB。

2.2 Datax框架设计

DataX本身作为离线数据同步框架,采用Framework + plugin架构构建。将数据源读取和写入抽象成为Reader/Writer插件,纳入到整个同步框架中。
请添加图片描述

  • Reader:Reader为数据采集模块,负责采集数据源的数据,将数据发送给Framework。
  • Writer: Writer为数据写入模块,负责不断向Framework取数据,并将数据写入到目的端。
  • Framework:Framework用于连接reader和writer,作为两者的数据传输通道,并处理缓冲,流
    控,并发,数据转换等核心技术问题。

2.3 Datax插件体系

DataX Framework提供了简单的接口与插件交互,提供简单的插件接入机制,只需要任意加上一种插
件,就能无缝对接其他数据源。经过几年积累,DataX目前已经有了比较全面的插件体系,主流的
RDBMS数据库、NOSQL、大数据计算系统都已经接入。DataX目前支持数据如下:
请添加图片描述

2.4 Datax核心架构

DataX 3.0 开源版本支持单机多线程模式完成同步作业运行,本小节按一个DataX作业生命周期的时序
图,从整体架构设计非常简要说明DataX各个模块相互关系。
请添加图片描述

  • DataX完成单个数据同步的作业,我们称之为Job,DataX接受到一个Job之后,将启动一个进程来
    完成整个作业同步过程。DataX Job模块是单个作业的中枢管理节点,承担了数据清理、子任务切
    分(将单一作业计算转化为多个子Task)、TaskGroup管理等功能。
  • DataXJob启动后,会根据不同的源端切分策略,将Job切分成多个小的Task(子任务),以便于并发
    执行。Task便是DataX作业的最小单元,每一个Task都会负责一部分数据的同步工作。
  • 切分多个Task之后,DataX Job会调用Scheduler模块,根据配置的并发数据量,将拆分成的Task
    重新组合,组装成TaskGroup(任务组)。每一个TaskGroup负责以一定的并发运行完毕分配好的所
    有Task,默认单个任务组的并发数量为5。
  • 每一个Task都由TaskGroup负责启动,Task启动后,会固定启动Reader—>Channel—>Writer的
    线程来完成任务同步工作。
  • DataX作业运行起来之后, Job监控并等待多个TaskGroup模块任务完成,等待所有TaskGroup任
    务完成后Job成功退出。否则,异常退出,进程退出值非0

想了解更多DataX工具详情,可参考官网文档:https://github.com/alibaba/DataX

3. MySQLMTOP

3.1 MySQLMTOP简介

MySQLMTOP 是一个由Python+PHP开发的开源MySQL企业监控系统。该系统由Python实现多进程数
据采集和告警,PHP实现Web展示和管理,优点如下:

  • MySQL服务器无需安装任何Agent,只需在监控WEB界面配置相关数据库信息
  • 启动监控进程后,即可对上百台MySQL数据库的状态、连接数、QTS、TPS、数据库流量、复制、
    性能慢查询等进行实时监控。
  • 可以在数据库偏离设定的正常运行阀值(如连接异常,复制异常,复制延迟) 时发送告警邮件通知到
    DBA进行处理。
  • 可以对历史数据归档,通过图表展示数据库近期状态,以便DBA和开发人员能对遇到的问题进行分
    析和诊断。
    请添加图片描述
    MySQLMTOP 发展历史如下:
    2014年01月,开源MySQLMTOP企业MySQL监控系统正式上线并开源
    2014年06月,MySQLMTOP进行重构,加入了Oracle、Mongodb、Redis的支持,正式更名为Lepus
    2014年08月,Lepus 成功取得商业软件著作权
    2015年01月,开源MySQLMTOP被评为2014优秀开源软件
    2015年01月,Lepus正式开源,并建立官方网站向大家免费提供服务
    2015年06月,Lepus网站软件下载总数量统计超过10000+,并广泛应用于各大互联网企业生产数据库的
    监控
    2017年01月,Lepus代码托管至github,网站软件下载总数量统计超过30000+

3.2 MySQLMTOP功能

MySQLMTOP主要功能如下:

  • 实时 MySQL 状态监控和警报
    MySQLMTOP 持续监视 MySQL 的基本状态和性能信息,包括数据库连接状态,启动时间,数据
    库版本,总连接数,活动进程,QPS,TPS,进出MySQL数据库的流量信息。在数据库状态异常或
    偏离正常基准水平时发出报警邮件通知。
    请添加图片描述
  • 实时 MySQL复制监控
    MySQLMTOP自动发现 MySQL 复制拓扑结构,自动监视数据库的延时和binlog信息,可以了解所
    有 MySQL 主服务器和从服务器的性能、可用性和运行状况。并在问题(如从服务器延迟)导致停
    机前向管理员提供改正建议。
  • 远程监控云中的 MySQL
    适合于云和虚拟机的设计,能远程监视MySQL服务器不需要任何远程代理器。
  • 直观管理所有 MySQL
    MySQLMTOP提供一个基于 Web 的界面,可令全面深入地了解数据库性能、可用性、关键活动
    等;直观地查看一台服务器、自定义的应用组或所有服务器。一组丰富的实时图形和历史图形将帮
    助您深入了解详细的服务器统计信息。
    请添加图片描述
  • 可视化MySQL慢查询分析
    监视实时查询性能,查看执行统计信息,筛选和定位导致性能下降的 SQL 代码。结合使用
    Information Schema 可直接从 MySQL 服务器收集数据,无需额外的软件或配置。
  • 性能监控
    监视影响 MySQL 性能的主要指标。如Key_buffer_read_hits、Key_buffer_write_hits、
    Thread_cache_hits、Key_blocks_used_rate、Created_tmp_disk_tables_rate等信息,根据相关
    性能指标可以对服务器核心参数进行调整优化。

想了解更多MySQLMTOP工具详情,可参考官网文档:http://www.lepus.cc/

猜你喜欢

转载自blog.csdn.net/weixin_42460087/article/details/126133847