一、otter介绍

基于日志数据,用于MySQL或者ORACLE之间准实时同步数据。

用途:

mysql/oracle互相同步

中间表/行记录同步

二、原理及架构图

otter整体模块

manager (提供web页面进行同步管理)

arbitrate (分布式调度,可跨IDC机房)

node (同步过程setl)

canal / eromanga (同步数据来源)

大集群化部署

1个manager集群 + 多个IDC机房node组成

1. 基于Canal,获取数据库增量日志数据。 

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

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

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

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

4.目前支持MySQL-->MySQL  MySQL-->ORACLE等异库之间同步

三、需要安装包

https://github.com/alibaba/otter/releases

manager.deployer-4.2.18.tar.gz

node.deployer-4.2.18.tar.gz

(安装时候可能需要安装下载工具,下载后编译安装https://liquidtelecom.dl.sourceforge.net/project/aria2/stable/aria2-1.19.0/aria2-1.19.0.tar.gz)

canal.deployer-1.1.4.tar.gz

四、安装简要步骤

manager安装

1.otter manager依赖于mysql进行配置信息的存储,所以需要预先安装mysql,并初始化otter manager的系统表结构

a. 安装mysql,这里不展开,网上一搜一大把

b. 初始化otter manager系统表:

2. 整个otter架构依赖了zookeeper进行多节点调度,所以需要预先安装zookeeper

a. manager需要在otter.properties中指定一个就近的zookeeper集群机器

## otter manager domain name #修改为正确访问ip,生成URL使用

otter.domainName = 127.0.0.1

## otter manager http port otter.port = 8082 #按需调整默认8080

## jetty web config xml otter.jetty = jetty.xml

otter manager database config ,修改为正确数据库信息

otter.database.driver.class.name = com.mysql.jdbc.Driver

otter.database.driver.url = jdbc:mysql://127.0.01:3306/ottermanager

otter.database.driver.username = root

otter.database.driver.password = Dr@.1214

#zk地址

otter.zookeeper.cluster.default = 127.0.0.1:2181

访问:

node安装

具体安装详见:https://github.com/alibaba/otter/wiki/Node_Quickstart

1. otter node会受otter manager进行管理,所以需要预先安装otter manager

2. 完成manager安装后,需要在manager页面为node定义配置信息,并生一个唯一id.

a. nid配置 (将环境准备中添加机器后获取到的序号,保存到conf目录下的nid文件,比如我添加的机器对应序号为6)

3.node节点进行跨机房传输时,会使用到HTTP多线程传输技术,目前主要依赖了aria2c做为其下载客户端,后续会推出java版本.

a. aria2 官方首页: http://aria2.sourceforge.net/

b. 下载页面: http://sourceforge.net/projects/aria2/files/stable/

cancal安装

主要用途是基于 MySQL 数据库增量日志解析,提供增量数据订阅和消费。

canal 作为MySQL binlog 增量获取和解析工具,可将变更记录投递到MQ 系统中,比如Kafka/RocketMQ。也可以直接把数据发送到es hbase等

具体参考:

https://github.com/alibaba/canal

我们配置一个同步任务:

操作步骤: 1.  添加数据库

a. 源库 jdbc:mysql://localhost:3306

b. 目标库 jdbc:mysql://localhost:3370

2.  添加channel

说明:

a. 同步一致性

基于数据库反查 (简单点说,就是强制反查数据库,从binlog中拿到pk,直接反查对应数据库记录进行同步,回退到几天前binlog进行消费时避免同步老版本的数据时可采用)

基于当前日志变更 (基于binlog/redolog解析出来的字段变更值进行同步,不做数据库反查,推荐使用)

b. 同步模式

行模式 (兼容otter3的处理方案,改变记录中的任何一个字段,触发整行记录的数据同步,在目标库执行merge sql)

列模式 (基于log中的具体变更字段,按需同步)

c. 特殊组合:(同样支持)

基于数据库反查+列模式

基于当前日志变更+行模式

3.  添加同步表信息

a. 源数据表 demo.t_yq

b. 目标数据表 demo_3370.t_yq

4. 添加pipeline

a. 选择node节点

b. 选择canal

5. 添加同步映射规则

a. 定义源表和目标表的同步关系

6. 启动

7. 测试数据

源端插入数据

简单的介绍了otter使用,下期我们在看下双向同步以及canal同步数据到es

mysql 定时同步数据_MySQL数据同步之otter相关推荐

  1. mysql 两个时间相差大于24小时的数据_MySQL 主从同步延迟的原因及解决办法(仅学习)...

    原文链接:https://blog.csdn.net/hao_yunfeng/article/details/82392261 Mysql主从基本原理,主要形式以及主从同步延迟原理 (读写分离)导致主 ...

  2. mysql双向同步读写_mysql数据双向同步

    即读写操作在两台服务器上进行,每台服务器即主也是从.当其中的任何一台服务器收到操作请求时,其进行相应的数据变化,并把变化的数据复制到另一台服务器中. 4 数据同步实现 4.1mysql数据双向同步 4 ...

  3. Java mysql同步复制_MySQL数据的主从复制、半同步复制和主主复制详解

    一.MySQL复制概述 ⑴.mysql数据的复制的基本介绍 目前MySQL数据库已经占去数据库市场上很大的份额,其一是由于MySQL数据的开源性和高性能,当然还有重要的一条就是免费~不过不知道还能免费 ...

  4. pi数据库同步解决方案_MySQL数据库主主同步配置实战

    最近云服务器大减价,趁机买了几台,博客就放在其中一台上,为了不让剩下的两台服务器闲置,打算都利用起来,对博客网站进行负载均衡.使用两台数据库进行主主同步配置,扩展网站数据库架构,提高数据库的读写性能. ...

  5. mysql 从服务器同步设置_mysql主从同步配置

    1.为什么要主从同步? 在Web应用系统中,数据库性能是导致系统性能瓶颈最主要的原因之一.尤其是在大规模系统中,数据库集群已经成为必备的配置之一.集群的好处主要有:查询负载.数据库复制备份等.其中Ma ...

  6. mysql主从同步原理_mysql主从同步以及原理

    mysql主从复制介绍 当前的生产工作中,大多数应用的mysql主从同步都是异步的复制方式,即不是严格实时的数据同步. 实时和异步: 同步复制: 指的是客户端连接到MySQL主服务器写入一段数据,My ...

  7. mysql半同步模式_MySQL 半同步复制模式的实现

    半同步复制原理图 #半同步启动需要主从两端都需要加载安装各自对应的semi模块,从库端支持半同步功能的数量至少一台:主库端当一个事务成功提交后,并不及时反馈给前端用户,该线程会被临时block,等待由 ...

  8. mysql状态监听_Mysql数据状态监听探讨(攒人品)_MySQL

    bitsCN.com 年会前攒人品,你懂得! 应用场景: 长时间运行程序,需要几乎整表查询Mysql,还得在可容忍范围内响应数据变化. 方案一:通过Mysql自带的表更新时间 查询方案:SELECT ...

  9. mysql 半同步 原理_MySQL半同步复制原理与配置详解

    一 .异步.同步和半同步复制概念 异步复制(Asynchronous replication),MySQL默认的复制是异步的,主库在执行完客户端提交的事务后会立即将结果返给给客户端,并不关心从库是否已 ...

最新文章

  1. 智能零售来了!Amazon Go无人商店周一正式对公众开放
  2. 以下不是python文件读写方法的是-python 文件读写 - 刘江的python教程
  3. pthread调度策略,优先级和竞争范围
  4. Spring boot属性松散绑定
  5. 【学习笔记】C#中HashTable和快速排序的用法,从单词频率统计小程序写起
  6. hbase启动报错Permission denied: user=xxx, access=WRITE, inode=“/HBase/MasterProcWALs“:root:supergroup:d
  7. Docker创建私有仓库 | 数据卷和数据卷容器 | 容器互联 操作详解
  8. 读取linux的运行状态,Linux下安装使用sar工具来获取系统运行状态
  9. java设置jdk环境变量
  10. 随想录(项目管理中的感受)
  11. 科比生涯自述:忍受,然后征服——这就是曼巴精神
  12. Struts2请求处理流程及源码分析
  13. 汉字应用能力计算机上打印文字,宣传|《汉字应用水平等级及测试大纲》,你能考几级?...
  14. EIGamal encryption VS Pairing encryption
  15. 基础工具类Joiner的使用
  16. 最简单的FFMPEG的视频编码器
  17. 【AI with ML】第 7 章 :用于自然语言处理的递归神经网络
  18. DxO PhotoLab 4.2Crack,使用独特的DxO本地调整工具
  19. Session 与SessionFactory
  20. Ghost11、Acronis12和贝壳还原3.0.8的测试对比报告

热门文章

  1. MyBatis 源码解读-会话创建过程
  2. request获得请求参数
  3. HDFS的API操作-访问权限问题
  4. 字符输出流的基本使用_写出单个字符到文件
  5. 使用@Async实现异步调用
  6. Eureka Server
  7. 在大促中什么影响了数据库性能
  8. Spring Boot配置文件有提示
  9. python如何读入dat数据_python二进制dat数据怎么转成txt文本
  10. qt撤销与回退_Qt动画框架