Otter 部署 - 数据同步利器 mysql


https://hub.docker.com/r/canal/otter-all

https://github.com/alibaba/otter/wiki/Docker_QuickStart

https://github.com/alibaba/otter/wiki/QuickStart


# 使用otter实现MySQL跨机房双向同步

https://abc.htmltoo.com/thread-45958.htm


应用: mycat -> 添加服务端服务: otter

镜像: canal/otter-all:latest

卷:

/etc/localtime:/etc/localtime:ro

/data/file:/data/file

端口:(http)18080-8080


默认是 http://${host}:8080/


==================

基础概念

Pipeline:从源端到目标端的整个过程描述,主要由一些同步映射过程组成;

Channel:同步通道,单向同步中一个Pipeline组成,在双向同步中有两个Pipeline组成;

DataMediaPair:根据业务表定义映射关系,比如源表和目标表,字段映射,字段组等;

DataMedia: 抽象的数据介质概念,可以理解为数据表/mq队列定义;

DataMediaSource: 抽象的数据介质源信息,补充描述DateMedia;

ColumnPair: 定义字段映射关系;

ColumnGroup: 定义字段映射组;

Node: 处理同步过程的工作节点,对应一个jvm;


db : 数据源以及需要同步到的库

Canal : 用户获取数据库增量日志

manager : 配置同步规则设置数据源同步源等

zookeeper : 协调node进行协调工作

node : 负责任务处理,即根据任务配置对数据源进行解析并同步到目标数据库的操作。


典型管理系统架构,manager(web管理)+node(工作节点)

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

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


canal目前支持的数据库版本?

答: 支持mysql系列的5.1 ~ 5.6/5.7版本,mariadb 5/10版本.   (全面支持ROW/STATEMENT/MIXED几种binlog格式的解析)


otter目前存在的同步限制?

答:这里总结了一下

暂不支持无主键表同步.  (同步的表必须要有主键,无主键表update会是一个全表扫描,效率比较差)

支持部分ddl同步  (支持create table / drop table / alter table / truncate table / rename table / create index / drop index,其他类型的暂不支持,比如grant,create user,trigger等等),同时ddl语句不支持幂等性操作,所以出现重复同步时,会导致同步挂起,可通过配置高级参数:跳过ddl异常,来解决这个问题.  

不支持带外键的记录同步.  (数据载入算法会打散事务,进行并行处理,会导致外键约束无法满足)

数据库上trigger配置慎重.  (比如源库,有一张A表配置了trigger,将A表上的变化记录到B表中,而B表也需要同步。如果目标库也有这trigger,在同步时会插入一次A表,2次B表,因为A表的同步插入也会触发trigger插入一次B表,所以有2次B表同步.)

==================


https://www.cnblogs.com/zhjh256/p/9261725.html

https://blog.csdn.net/liujun19921020/article/details/100697341

http://shift-alt-ctrl.iteye.com/blog/2399603


签名:这个人很懒,什么也没有留下!
最新回复 (0)
返回