MySQL 同一实例不同库之间表同步(Otter 应用)

1 需求

  • 在同一台服务器同一MySQL实例中的source库和target库都存在student表。如果source库中该表发生增删改操作时,也需要体现到target库的student表中;

2 解决方案

2.1 方案一:使用Shell脚本实现

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 工作原理(摘自官网):

原理描述:

  1. 基于Canal开源产品,获取数据库增量日志数据;
  2. 典型管理系统架构,manager(web管理)+node(工作节点)
    a. manager运行时推送同步配置到node节点;
    b. node 节点将同步状态反馈到manager上;
  3. 基于zookeeper,解决分布式状态调度,允许多node节点之间协同工作;

2.3.2 环境准备

2.3.3 环境搭建及参数配置

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,如果设置成功,会有如下输出:

3.2 初始化Otter系统表

3.3 manager数据表配置说明:

参考资料:

原文地址:https://www.cnblogs.com/linkworld/p/10226327.html

时间: 2024-08-28 01:50:45

MySQL 同一实例不同库之间表同步(Otter 应用)的相关文章

mysql语句1-创建库和表

一.DDL数据定义语言 就是对书库内部的对象进行创建.删除.修改等操作的语言. 关键字:create  drop  alter 1.连接数据库 mysql -u用户名 -p -h指定主机(不指定默认是本机) 2. 创建数据库: mysql> create database test1; Query OK, 1 row affected (0.00 sec)  删除库 mysql> drop datbases test1; (0.00 sec):这个表示操作执行的时间. 3.查询数据库 mysq

MySQL 之 第二章: 库与表的基本操作; 数据类型; 完整性约束; 外键;

库与表的基本操作 数据类型 完整性约束 外键 库与表的基本操作 库的增删改查: 查看系统库语句: show databases; information_schema: 虚拟库,不占用磁盘空间,存储的是数据库启动后的一些参数,如用户表信息.列信息.权限信息.字符信息等performance_schema: MySQL 5.5开始新增一个数据库:主要用于收集数据库服务器性能参数,记录处理查询请求时发生的各种事件.锁等现象mysql: 授权库,主要存储系统用户的权限信息 sys: 创建数据库语法:

使用OGG,两个Oracle库之间单向同步数据

配置:源数据库100.100.100.21         实例名dbsid2 目标数据库100.100.100.41       实例名db1 实验目标:源数据库中的 scott用户 emp表同步到目标数据库 scott中的test表 安装包为文件ogg112101_fbo_ggs_Linux_x64_ora10g_64bit.zip 解压之后,然后再tar解压tar -xvf fbo_ggs_Linux_x64_ora10g_64bit.tar -C  /oracle/ogg/ 1.    

Oracle一个库的表同步到另外一个库中

https://blog.csdn.net/yali1990515/article/details/50969117 创建dblink -- Create database link create shared database link COPYCITY_BZTOMY connect to db_A identified by db_A authenticated by db_B identified by db_B using '192.168.0.141/orcl'; --说明有两个数据库

MySQL 触发器例子(两张表同步增加和删除)

其中old表示tab2(被动触发),new表示tab1(主动触发,外部应用程序在此表里执行insert语句) DROP TABLE IF EXISTS tab1; CREATE TABLE tab1( tab1_id varchar(11) ); DROP TABLE IF EXISTS tab2; CREATE TABLE tab2( tab2_id varchar(11) ); 创建触发器:t_afterinsert_on_tab1 作用:增加tab1表记录后自动将记录增加到tab2表中 d

sqlServer数据库实现不同库之间表迁移

(1) (2) 点击开始便进行数据库到库的迁移.

MySQL多实例,主从同步

由于背景原因,所做的主从同步还是要基于MySQL 5.1的版本,主从同步主要是一个数据库读写访问原来的数据库热度过大,需要做到使用从库对读分压. MySQL主从同步介绍 MySQL 支持单双向.链式级联.异步复制.在复制过程中,一个服务器充当主服务器(Master),而一个或多个其它的服务器充当从服务器(Slave). 如果设置了链式级联复制,那么,从(slave)服务器本身除了充当从服务器外,也会同时充当其下面从服务器的主服务器.链式级联复制类似A->B ->C ->D 的复制形式.

mysql跨库数据表的运算

跨库数据表的运算,一直都是一个说难不算太难,说简单却又不是很简单的.总之是一个麻烦的事.大量的.散布在不同数据库中的数据表们,明明感觉要把它们合并起来,再来个小小的计算,似乎也就那么回事……但真要做起来,需要这又忘了那的,却又不像仅仅就那么回事?        想要给这些小麻烦们,来一个快刀斩乱麻式的.嘁嚓咔嚓地一劳永逸的解决方案么?首先,你需要一把叫做集算器的宝刀(重点):然后,你可以再看看这篇算是买一赠一的秘传刀法(免费):最后,面向敌人们手起刀落……你就可以轻松愉快地去睡一个好觉了:跨库数

MySQL用户、库、表操作

用户及权限操作: 管理员登录:mysql -uroot -p 用户设置密码:set password=password(密码); 查看数据库所有用户:select * from mysql.user; 查看用户权限:show grants for 用户名@网络地址 [identified by 密码] 普通用户登录:mysql -u用户名 -h网络地址 -p 查看当前用户:select user(); 查看当前数据库:select database(); 当前时间:now() 查看当前数据库是否