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 ...
 
随机推荐
- DokuWiki 开源wiki引擎程序
			
DokuWiki是一个开源wiki引擎程序,运行于PHP环境下.DokuWiki程序小巧而功能强大.灵活,适合中小团队和个人网站知识库的管理. 官网:https://www.dokuwiki.org/ ...
 - XSS payload 大全
			
收集的一些XSS payload,主要分为五大类,便于查阅. #第一类:Javascript URL <a href="javascript:alert('test')"&g ...
 - IIS日志清理(VBS版,JS版)
			
IIS默认日志记录在C:\WINDOWS\system32\LogFiles,时间一长,特别是子站点多的服务器,一个稍微有流量的网站,其日志每天可以达到上百兆,这些文件日积月累会严重的占用服务器磁盘空 ...
 - Jsoup(一)-- HelloWorld
			
1.简介 jsoup 是一款Java 的HTML解析器,可直接解析某个URL地址.HTML文本内容.它提供了一套非常省力的API,可通过DOM,CSS以及类似于jQuery的操作方法来取出和操作数据. ...
 - Unity Shader 自定义纹理坐标变量写法
			
Properties { _R(,)) = 1.0 _ColorTex("ColorTex (RGB)", 2D) = "red" {} struct Inpu ...
 - MDK972-EK开发板裸调试设置和裸机程序烧写(转)
			
硬件平台:MDK972-EK开发板编译调试软件:KEIL uVision4仿真工具:JLINK V7/V8 本例子从串口输出信息,如图: KEIL uVision4调试设置如图所示: ...
 - 新唐的开发环境的搭建,驱动以及BSP
			
https://www.keil.com/demo/eval/arm.htm#DOWNLOAD1,MDK-ARM的IDE集成开发环境:mdk512.exehttp://www.keil.com/fid ...
 - 【摘】50个jQuery代码段帮助你成为一个更好的JavaScript开发者
			
今 天的帖子会给你们展示50个jQuery代码片段,这些代码能够给你的JavaScript项目提供帮助.其中的一些代码段是从jQuery1.4.2才 开始支持的做法,另一些则是真正有用的函数或方法,他 ...
 - iOS 静态库和动态库(库详解)
			
什么是库 ? 库就是程序代码的集合,将N个文件组织起来,是共享程序代码的一种方式.库从本质上来说是一种可执行代码的二进制格式,可以被载入内存中执行. 库的分类 开源库:源代码是公开的,可以看到每个实现 ...
 - (转载)Recyclerview | Intent与Bundle在传值上的区别 | 设置布局背景为白色的三种方法
			
用Recyclerview实现列表分组.下拉刷新以及上拉加载更多 http://www.jianshu.com/p/be62ce21ea57 Intent与Bundle在传值上的区别http://b ...