合 otter用于跨云RDS for mysql之间配置双主实时同步
Tags: MySQL高可用实时同步双主RDS开源工具Otter互为主备
问题引出
客户需要将华为云rds for MySQL和天翼云rds for MySQL做一个双向同步
,当华为云rds宕机的时候,可以切换到天翼云继续提供服务,而且此时,天翼云的数据也可以自动同步到华为云rds,平时只使用华为云的rds,和双A方案有点差异,需要注意的是rds环境不能安装任何的软件,所以,我目前想到的方案有:
1、用MySQL自带的主从复制。这个方案最简单,但是不可行,因为华为云和天翼云都禁用了super权限,在执行change master
的时候会报权限不足的错误,“ERROR 1227 (42000): Access denied; you need (at least one of) the SUPER privilege(s) for this operation
”。
2、使用华为云或天翼云自带的数据同步功能。这个也不可行,翻阅了一下文档,同步只能全量+增量
同步,这对于双向同步来说不可行。
3、使用ogg远程捕获投递。ogg for MySQL从MySQL 5.7和ogg 19c开始支持远程捕获(Remote Capture)和远程投递(Remote Delivery),所以配置双向同步,该方案经过验证也是可行的!
- OGG用于跨云RDS之间配置双主实时同步(远程捕获和投递):https://www.xmmup.com/oggyongyukuayunrdszhijianpeizhishuangzhushishitongbuyuanchengbuhuohetoudi.html
4、使用阿里的开源工具otter,这个方案经过验证是可行的。阿里数据同步工具Otter和Canal简介请参考:https://www.xmmup.com/alishujutongbugongjuotterhecanaljianjie.html
- otter用于跨云RDS之间配置双主实时同步参考:https://www.xmmup.com/otteryongyukuayunrdszhijianpeizhishuangzhushishitongbu.html
otter和ogg优缺点
1、otter不能同步无主键的表(会导致同步任务停止),而ogg可以
2、otter可以单向同步ddl语句,而ogg对于MySQL 5.7不可以(5.7需要安装插件),ogg对MySQL 8.0支持DDL同步
3、otter有图形界面操作,OGG只有命令行操作,但是ogg的微服务也可以全程图形化
搭建otter环境配置双向同步
本次环境架构图如下:
准备环境
购买2台RDS for MySQL环境
这里,我做测试直接买了2台华为云的rds,大家把rds-3388-0001当做华为云rds,另一台当做天翼云rds吧:
购买1台ECS环境作为otter环境
这里,我做测试直接买了1台华为云的ecs:
开放端口:8088,web页面使用
开放端口:2088,2089,2090,这几个端口对rds开放,同时2个rds的3306需要对这台ecs开放。
下面开始配置:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | -- 拉取docker环境的otter docker pull registry.cn-hangzhou.aliyuncs.com/lhrbest/lhrotter:v2.0 -- 创建otter docker run -d --name lhrotter -h lhrotter \ -v /sys/fs/cgroup:/sys/fs/cgroup \ -p 8088:8088 -p 2088-2090:2088-2090 \ --privileged=true \ registry.cn-hangzhou.aliyuncs.com/lhrbest/lhrotter:v2.0 init -- 进入otter环境 docker exec -it lhrotter bash -- 修改/usr/local/otter_manager/conf/otter.properties otter.domainName = 139.9.130.227 -- 启动otter环境 sh /etc/rc.local |
启动成功后浏览器访问 http://139.9.130.227:8088/login.htm,出现otter的页面,用户名和密码都是admin。
配置otter
修改Node
选择机器管理的node管理:
由于ECS和2台rds通信只能使用外网IP,所以,这里启用外部IP, 如上图。
请教一下,在启动后,点击登录会报错,请问博主有遇到类似的情况吗?是否缺失包:
HTTP ERROR 500
Problem accessing /login.htm. Reason:
Caused by:
com.alibaba.citrus.service.pipeline.PipelineException: Failed to execute action module
这个没碰到过