一、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 portotter.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

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 otter 数据同步_MySQL数据同步之otter相关推荐

  1. mysql 半同步_mysql 主从同步 与 半同步

    mysql主从同步复制定义 主从同步使得数据可以从一个数据库服务器复制到其他服务器上,在复制数据时,一个服务器充当主服务器(master),其余的服务器充当从服务器(slave).通过配置文件,可以指 ...

  2. 两台服务器之间mysql数据库怎么做同步_MySQL 数据库同步结构总结

    一.主从同步(基础结构)1.结构图主从同步可实现同主机的主从同步,也可以实现不同主机的主从同步.2.应用场景a.可实现读写分离,通过增加从库可以提高数据库的性能,在主库实现增删改等更新操作,在从库实现 ...

  3. mysql数据迁移工具_MySQL数据迁移工具的设计与实现

    一.背景 MySQL作为最流行的关系型数据库产品之一,当数据规模增大遭遇性能瓶颈时,最容易想到的解决方案就是分库分表.无论是进行水平拆分还是垂直拆分,第一步必然需要数据迁移与同步.由此可以衍生出一系列 ...

  4. mysql中数据定义和数据控制语言_MySQL 数据定义语言(DDL)

    SQL 包含以下 4部分:1数据定义语言(DDL):DROP.CREATE.ALTER 等语句.2数据操作语言(DML):INSERT(插入).UPDATE(修改).DELETE(删除)语句.3数据查 ...

  5. mysql主从同步数据初始化_mysql主从同步配置

    Mysql的主从复制至少是需要两个Mysql的服务,当然Mysql的服务是可以分布在不同的服务器上,也可以在一台服务器上启动多个服务. 首先确保主从服务器上的Mysql版本相同. 一.安装部署mysq ...

  6. mysql 实现异地同步_MySQL 异地同步问题

    各位好,最近又面临 MySQL 异地同步问题,想了一个主意,不知道大家有没有更好的办法. 背景 MySQL , MyISAM 引擎,中美欧三地机房 数据不要求实时,有一两天延时也没关系,服务器半夜可停 ...

  7. mysql导出数据 程序_MySQL数据导出与导入程序代码

    Mysql Manual讲得很清楚.实现数据备份有两种方法,一是直接copy mysql data目录的数据文件.第二种就是mysqldmup. 第一方法,没什么可言,也就是写写脚本或是放置ftp上面 ...

  8. mysql数据备份与恢复_MySQL数据备份与恢复

    常见的MySQL管工具 mysql 命令行 跨平台 MySQL官方bundle包自带 MySQL-Workbench 图形 跨平台 MySQL官方提供 MySQL-Front 图形 Windows 开 ...

  9. mysql binlog php处理_MySQL数据的binlog处理方法

    最近磁盘增长的非常快,发现binlog日志占用很大的磁盘资源.我们采用手动清理,后面设置一下自动清理. 最近磁盘增长的非常快,发现binlog日志占用很大的磁盘资源.我们采用手动清理,,后面设置一下自 ...

最新文章

  1. ML之NB:利用朴素贝叶斯NB算法(CountVectorizer+不去除停用词)对fetch_20newsgroups数据集(20类新闻文本)进行分类预测、评估
  2. python登录接口代码_(转载)Python 的 OAuth 登录接口 python-oauth2
  3. 查某个类是否实现了某个协议
  4. 前端学习(2248)git是怎么运作的
  5. CompletableFuture 异步编程
  6. WordPress 首页显示摘要
  7. docker 覆盖 entrypoint_跟我一起学docker(八)--Dockerfile
  8. 从SQL Server生成文档
  9. 信息技术与计算机文化达标卷,初中信息技术试卷
  10. ajax无刷新提交表,Ajax无刷新提交表单和显示
  11. php语法------04 php内置函数之与页面表单请求相关的内置函数对象
  12. 转分享[Mac] QQ音乐Mac特别版 可以下载无损
  13. viper12a电源电路图_VIPER22A VIPER12A工作原理引脚功能应用电路图纸与分析
  14. dsm php virtualbox,私有云测试环境搭建 黑群晖 For VirtualBox(XPEnoboot 5022.3 DSM_DS3615xs_5022)...
  15. 几款笔记软件的优缺点
  16. 在做产品经理的实习收获(第二篇)
  17. 单目图像深度估计 - 迁移篇:Depth Extraction from Video Using Non-parametric Sampling
  18. imx6------watchdog导致不进系统
  19. 中餐菜单分类名称创意_浅析中餐主题宴会主题创意与菜单策划.doc
  20. 网络空间安全概论 第二章 作业

热门文章

  1. 自定义函数_python3基础07函数(自定义)
  2. fasttext 文本分类_一文综述经典的深度文本分类方法
  3. matlab导入txt生成曲面,求助:怎样将txt的数据导入到Matlab中并根据参数画出波形...
  4. 2021年程序员可以做哪些副业?
  5. 一文教你用java实现儿时的超级玛丽游戏
  6. 王者荣耀服务器维护啥时候结束,王者荣耀维护几点结束今天?11月10日维护公告...
  7. php 鼠标点击图片放大,鼠标移入放大图片预览效果实现
  8. antd form 初始化时间
  9. WEB前端大神之路之基础篇
  10. Vue实例和生命周期