MySQL 同一实例不同库之间表同步(Otter 应用)
1 需求
- 在同一台服务器同一MySQL实例中的source库和target库都存在student表。如果source库中该表发生增删改操作时,也需要体现到target库的student表中;

2 解决方案
2.1 方案一:使用Shell脚本实现
- 由于自己缺少使用Shell编程的经验,此路暂时不通;
- shell脚本实现Mysql主从数据库
2.2 方案二:DataX
- 官方介绍:
- DataX 是阿里巴巴集团内被广泛使用的离线数据同步工具/平台,实现包括 MySQL、Oracle、SqlServer、Postgre、HDFS、Hive、ADS、HBase、TableStore(OTS)、MaxCompute(ODPS)、DRDS 等各种异构数据源之间高效的数据同步功能。
- 没有采纳此方案的原因:
- DataX 本身占用空间太大,771M;
- DataX 中使用到了Python,这门语言自己暂时也是一知半解;
- DataX 适用于不同数据源的数据同步,而这个需求中的数据源均为MySQL,故放弃此方案;
2.3 方案三: Otter 增量同步
- 官方介绍:
- 纯Java开发;
- 基于数据库增量日志解析,准实时同步到本机房或异地机房的mysql/oracle数据库. 一个分布式数据库同步系统;
2.3.1 工作原理(摘自官网):

原理描述:
- 基于Canal开源产品,获取数据库增量日志数据;
- 典型管理系统架构,manager(web管理)+node(工作节点)
a. manager运行时推送同步配置到node节点;
b. node 节点将同步状态反馈到manager上;- 基于zookeeper,解决分布式状态调度,允许多node节点之间协同工作;
2.3.2 环境准备
- MySQL 5.7.24
- JDK 1.8
- otter-manager-4.2.17
- otter-node-4.2.17
- zookeeper-3.4.10
- Aria2-1.34.0
2.3.3 环境搭建及参数配置
- otter 配置单向同步步骤:
- MySQL 开启binlog;
- 配置zookeeper参数;
- 配置manager参数;
- 配置node参数;
- 参考链接:
3. Otter搭建过程中遇到的问题总结
3.1 MySQL 开启binlog
- Windows 系统:
my.ini中添加如下语句,注意my.ini保存时,编码为:GB2312
# Binary Logging
log-bin=mysql-bin
binlog-format=ROW
#Server ID 不能重复
#注意:在 MySQL 5.7.3 及以后版本,如果没有设置server-id, 那么设置binlog后无法开启MySQL服务.
server-id=201609
- Linux系统:
- 查看是否有设置使用指定目录的
my.cnf文件:ps aux|grep mysql|grep 'my.cnf';如果没有输出,表示没有设置; - 查看mysql默认读取
my.cnf的目录:mysql --help|grep 'my.cnf';
- 查看是否有设置使用指定目录的
# Binary Logging
log-bin=/var/lib/mysql/mysql-bin # 此处为绝对路径
binlog-format=ROW
#Server ID 不能重复
#注意:在 MySQL 5.7.3 及以后版本,如果没有设置server-id, 那么设置binlog后无法开启MySQL服务.
server-id=201609
- 查看是否设置成功:
- 通过MySQL客户端:
SHOW MASTER STATUS,如果设置成功,会有如下输出:
- 通过MySQL客户端:

3.2 初始化Otter系统表

3.3 manager数据表配置说明:

参考资料:
MySQL 同一实例不同库之间表同步(Otter 应用)的更多相关文章
- mysql语句1-创建库和表
一.DDL数据定义语言 就是对书库内部的对象进行创建.删除.修改等操作的语言. 关键字:create drop alter 1.连接数据库 mysql -u用户名 -p -h指定主机(不指定默认是 ...
- Logstash学习之路(四)使用Logstash将mysql数据导入elasticsearch(单表同步、多表同步、全量同步、增量同步)
一.使用Logstash将mysql数据导入elasticsearch 1.在mysql中准备数据: mysql> show tables; +----------------+ | Table ...
- Mysql基础(四):库、表、记录的详细操作、单表查询
目录 数据库03 /库.表.记录的详细操作.单表查询 1. 库的详细操作 3. 表的详细操作 4. 行(记录)的详细操作 5. 单表查询 数据库03 /库.表.记录的详细操作.单表查询 1. 库的详细 ...
- 【GoldenGate】使用OGG,两个Oracle库之间单向同步数据
************************************************************************ ****原文:blog.csdn.net/clark_ ...
- mysql单实例多库与多实例单库
一.单实例多库: 一个mysql实例,创建多个数据目录. 规划: 实例路径:/usr/local/mysql 数据目录路径: (1)/usr/local/mysql/data (2)/usr/loca ...
- Mysql基础语法-建库-建表(增、删、改、查、表关联及子查询)
前言:MySQL是一个数据库管理系统,也是一个关系数据库.它是由Oracle支持的开源软件,MySQL可以在各种平台上运行UNIX,Linux,Windows等.可以将其安装在服务器甚至桌面系统上. ...
- mysql 主从单库单表同步 binlog-do-db replicate-do-db
方案一:两边做主从. SELECT SUM(DATA_LENGTH)+SUM(INDEX_LENGTH) FROM information_schema.tables WHERE TABLE_SCHE ...
- MysQL使用一创建库与表
数据库简介 人类在进化的过程中,创造了数字.文字.符号等来进行数据的记录,但是承受着认知能力和创造能力的提升,数据量越来越大,对于数据的记录和准确查找,成为了一个重大难题 计算机诞生后,数据开始在计算 ...
- MySQL 多实例删库脚本
DB版本:5.5.14 OS:CentOS 6.3 在测试环境中,在一台服务器上创建多个实例,在每个实例中一个一个删库比较麻烦,因此用下面脚本,可以直接删除所有库,除了系统库以外: #!/bin/ba ...
随机推荐
- Netty权威指南之伪异步I/O编程
为了解决同步阻塞I/O一个链路需要一个线程处理问题,对BIO模型做了优化——后端通过一个线程池处理多个客户端的请求接入,设置线程最大值,防止线程并发接入导致的线程耗尽. 当有新的客户端接入时,将客户端 ...
- Kafka(三)-- Kafka主要参数
原文地址:http://debugo.com/kafka-params/ ############################# System ########################## ...
- Splash args 属性
args属性可以获取加载时配置的参数,一般我们只传入URL,如下,args.url 就相当于加载时配置的URL参数,我们把它赋值给 url 变量然后返回:
- Splash 对象属性
args js_enabled resource_timeout images_enabled plugins_enabled scroll_position
- WebForm的初步认识
嘿嘿,这里就简单的总结一下初步学习webform以及对他的认识,其实大家都认为webform很讨厌,因为好多都是给我们封装好的,而且现在好多的公司已经慢慢的从中逃离出来选择使用mvc架构,甚至好多的项 ...
- 蓝凌OA常用表整理
SELECT * FROM V_FI_ORG_EMP --用户表视图(关联单位)SELECT * FROM FI_ORG_EMP --用户表 SELECT * FROM FI_ORG_INFO ...
- google v8引擎常见问题
最近在项目中使用v8来进行扩展,下面简单说一下使用v8过程中遇到的一些问题. v8的多线程调用 最初调研v8的测试代码是单线程的,后来一个项目在多线程中使用,出现了一些问题,后来看到参考3中的才恍 ...
- Ubuntu Releases 版本下载站
http://releases.ubuntu.com/
- LeetCode 49 Group Anagrams(字符串分组)
题目链接: https://leetcode.com/problems/anagrams/?tab=Description Problem:给一个字符串数组,将其中的每个字符串进行分组,要求每个分 ...
- Windows正向绑定shell和反向反弹shell的Python代码
Windows下的shell原理 经过查阅资料,使用os.dup2(nfd, ofd)的方式重定向socket的输入输出到windows系统的cmd是无法做到的,属于系统原因,不能直接复制Linux下 ...