在线网址:

https://www.syncnavigator.cn/chm/index.htm

 

官网下载:https://www.syncnavigator.cn

创建第一个同步项目


使用 HKROnline SyncNavigator 创建一个数据库同步项目。只需要通过简单的配置,创建完成后您可以随时执行数据库同步任务。

1. 点击 "SyncNavigator(Client)" 图标进入系统。

2. 在登录界面中输入连接到的服务器地址,点击 "确定" 按钮开始连接。

  • 注意:这里不是登陆您的数据库,而是登陆到本软件的管理端。
  • 默认情况下直接点击 "连接" 按钮即可(本机默认已经安装)。
  • 默认服务器登录用户名为 "admin" 密码为空。
  • 本机服务器地址 = 127.0.0.1 。
  • 您可以使用域名或者IP地址作为服务器地址。如果指定了端口号可以使用 IP:Port 方式填写。

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

3. 切换到 "同步管理" 面板中点击 "新建" 按钮开始创建同步项目。

MySQL 同一实例不同库之间表同步(Otter 应用)_数据库教程_02


4. 首先切换到 "来源数据库" 选项卡。填写同步的来源数据库信息。 

  • 一般情况下只需要输入数据库地址,数据库名称,登录用户名,登录密码。

  • 数据库地址: 连接到的数据库地址。可以是域名或者IP地址。如果指定了端口号可以使用 IP:Port 方式填写。
  • 数据库名称: 使用的数据库名称。如果已经指定了默认的登录数据库可以为空。
  • 登录用户名: 登录数据库服务器使用的用户名。如果需要使用Windows账户登录请变更 "登录方式"
  • 连接测试: 测试输入的信息是否正确。如果连接失败则会返回具体错误信息。

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

5. 切换到 "目标数据库" 选项卡。以相同的方式填写同步的目标数据库。 

  • 您只需要创建一个新的目标数据库,软件会自动创建最大兼容的表结构。

  • 如果您希望目标数据库与来源数据库表结构完全一致,您只需要在目标数据库创建一个空表结构即可。
  • 当您使用 MySQL 作为来源数据库时,同步的表至少需要一个主键。
  • 目标数据库不应包含外键约束,因为它可能导致部分数据无法同步。
  • 如果您的目标数据库与来源数据库结构(如字段类型,约束)不兼容,这可能导致部分数据无法同步。
  • 假设您设置来源库为 192.168.1.2 ,设置目标数据库为 192.168.1.3, 那么数据将从192.168.1.2 同步到 192.168.1.3。如果您的方向设置错误,可能会导致数据被覆盖。

6. 切换到 "同步内容设置" 选项卡。选择需要同步的数据库表。

 

2.2 方案二:DataX

 

2.3 方案三: Otter 增量同步

 

2.3.1 工作原理(摘自官网):

MySQL 同一实例不同库之间表同步(Otter 应用)_数据库教程_04

原理描述:

  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

 

# Binary Logging
log-bin=mysql-bin
binlog-format=ROW

#Server ID 不能重复
#注意:在 MySQL 5.7.3 及以后版本,如果没有设置server-id, 那么设置binlog后无法开启MySQL服务.
server-id=201609

 

# 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 同一实例不同库之间表同步(Otter 应用)_数据库教程_05

3.2 初始化Otter系统表

 

MySQL 同一实例不同库之间表同步(Otter 应用)_数据库教程_06

3.3 manager数据表配置说明:

MySQL 同一实例不同库之间表同步(Otter 应用)_数据库教程_07

  • 如果需要设置每个表的具体内容可以点击 "详细设置" 按钮进行调整。

  • 您可以设置条件过滤。比如只查询评分大于90的表记录,或者隐藏不需要同步的字段。
  • 如果在这一个步骤未勾选任何表则不会同步任何内容。
  • 1 需求

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

    2 解决方案

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

  • 由于自己缺少使用Shell编程的经验,此路暂时不通;
  • shell脚本实现Mysql主从数据库
  • 官方介绍:
    • DataX 是阿里巴巴集团内被广泛使用的离线数据同步工具/平台,实现包括 MySQL、Oracle、SqlServer、Postgre、HDFS、Hive、ADS、HBase、TableStore(OTS)、MaxCompute(ODPS)、DRDS 等各种异构数据源之间高效的数据同步功能。
  • 没有采纳此方案的原因:
    • DataX 本身占用空间太大,771M;
    • DataX 中使用到了Python,这门语言自己暂时也是一知半解;
    • DataX 适用于不同数据源的数据同步,而这个需求中的数据源均为MySQL,故放弃此方案;
  • 官方介绍:
    • 纯Java开发;
    • 基于数据库增量日志解析,准实时同步到本机房或异地机房的mysql/oracle数据库. 一个分布式数据库同步系统;
  • 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
  • otter 配置单向同步步骤:
  • 参考链接:
  • Windows 系统:
    • my.ini中添加如下语句,注意my.ini保存时,编码为:GB2312
  • Linux系统:
    • 查看是否有设置使用指定目录的my.cnf文件:ps aux|grep mysql|grep 'my.cnf';如果没有输出,表示没有设置;
    • 查看mysql默认读取my.cnf的目录:mysql --help|grep 'my.cnf';
  • 查看是否设置成功:
    • 通过MySQL客户端:SHOW MASTER STATUS,如果设置成功,会有如下输出:
  • ERROR 1067 (42000): Invalid default value for 'GMT_CREATE'