分享

otter数据订阅&消费

 昵称25533110 2019-01-17

介绍一款阿里巴巴的数据订阅&消费工具otter,这款产品当时用于解决阿里中美机房数据库实时同步问题。

这里主要讲的是用otter增量同步生产数据库到测试环境数据库。


otter的定位:

基于数据库增量日志分析,实时同步数据


为什么不用mysql自带的主从同步到测试?

因为测试环境的特殊性,功能比较新,有些新表和新字段,直接从生产同步显然不能满足业务需求。otter就能很好解决这个问题,基于binlog分析只对生产有变更的数据进行同步,这样就不会覆盖测试环境已修改的数据,测试环境新增字段和表也不会被覆盖。


otter的工作原理:

  • 1.基于canal,获取数据库增量日志,otter的核心组件也就是canal。

  • 2.典型的管理系统架构,manager(web管理)+node(节点)

      manager运行时推送同步配置到node节点

      node节点将同步状态反馈到manager

  • 3.基于zookeeper,解决分布式状态调度,允许多node节点之间协同工作。


    otter能解决:

    1. 异构库同步

    a. mysql -> mysql/oracle. (目前开源版本只支持mysql增量,目标库可以是mysql或者oracle,取决于canal的功能)

    1. 单机房同步 (数据库之间RTT < 1ms)

    a. 数据库版本升级

    b. 数据表迁移

    c. 异步二级索引

    1. 异地机房同步 (比如阿里巴巴国际站就是杭州和美国机房的数据库同步,RTT > 200ms,亮点)

    a. 机房容灾

    1. 双向同步

    a. 避免回环算法 (通用的解决方案,支持大部分关系型数据库)

    b. 数据一致性算法 (保证双A机房模式下,数据保证最终一致性,亮点)

    1. 文件同步

    a. 站点镜像 (进行数据复制的同时,复制关联的图片,比如复制产品数据,同时复制产品图片).


    实战:

    用途:生产增量同步指定表到测试环境,供测试工程师测试业务,属于单机房单项同步。

    前提,源库my.cnf开启,binlog,row模式:

    log_bin = mysql-bin    #打开日志

    binlog_format = ROW  #设置row模式的日志格式

    server-id = 2 #id不能重复


    在增量之前,做一次数据库的全量同步,可以用xtrbackup。

    • 1.用docker一键安装启动otter,自动处理映射,目录挂载等

    curl fsSL https://raw./alibaba/otter/master/docker/run.sh | bash


    默认run.sh脚本会通过目录挂载的方式,将数据文件挂载到当前的data/目录下(包含zkData/mysql两个子目录),所以执行curl之前最好进入到一个自己的工作目录,比如cd otter


    • 2.访问otter的manager地址

    http://${host}:8080/


    • 3.配置


      • 3.1配置 数据源



      • 3.2进入配置管理-数据表配置

      • 3.3进入配置管理-canal配置

      • 3.4进入机器管理-node,为默认配置,otter启动会默认配好。

      • 3.5进入同步管理-channel



      • 3.6点击相应的channel名字,进入Pipeline配置,高级配置默认就行。



      • 3.7点击pipeline名字列表,进入配置映射关系

      • 3.8配置好后,则同步已开始

    注意:表必须设置主键才能做同步

    • 4.监控

    进入监控-日志管理,若有异常会有日志输出

    • 5.给出测试数据

    CREATE TABLE  `test`.`example` (  `id` int(11)  NOT NULL AUTO_INCREMENT,  `name` varchar(32) COLLATE utf8_bin DEFAULT NULL ,   PRIMARY KEY (`ID`)) ENGINE=InnoDB DEFAULT CHARSET=utf8; 


    • 6.效果

    源库中插入数据,目标库立马将新数据同步过来

    目标库必须先创建表结构才能同步数据


      本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
      转藏 分享 献花(0

      0条评论

      发表

      请遵守用户 评论公约

      类似文章 更多