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数据表配置说明:
参考资料:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南