合 使用OGG for mysql微服务快速双向同步RDS数据库(双主)
Tags: 高可用OGGOGG微服务双主双向同步RDS互为主备
问题引出
客户需要将华为云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.dbaup.com/oggyongyukuayunrdszhijianpeizhishuangzhushishitongbuyuanchengbuhuohetoudi.html
- 使用OGG微服务快速双向同步RDS数据库:https://www.dbaup.com/shiyongoggweifuwukuaisushuangxiangtongburdsshujuku.html
4、使用阿里的开源工具otter,这个方案经过验证是可行的。阿里数据同步工具Otter和Canal简介请参考:https://www.dbaup.com/alishujutongbugongjuotterhecanaljianjie.html
- otter用于跨云RDS之间配置双主实时同步参考:https://www.dbaup.com/otteryongyukuayunrdszhijianpeizhishuangzhushishitongbu.html
OGG微服务简介
OGG 微服务架构(Microservices Architecture,简称MA)起始于12.3版本,采用各种服务来管理,通过WEB接口来创建进程、启动进程以及管理底层进程等操作以及具备完善监控功能包括进程、线程等性能数据,以前非微服务架构称为经典架构(Classic Architecture)。
在OGG的MA中,基于REST API,用户通过网页就可以完成OGG服务进程配置,监控和管理全新微服务架构。
微服务架构是后续OGG发展的一个方向,经典架构可能会放弃维护。
搭建OGG微服务
1 2 3 4 5 6 7 8 | docker pull lhrbest/ogg213mamysql:v1.0 docker rm -f lhrogg213mamysql docker run -d --name lhrogg213mamysql -h lhrogg213mamysql \ -p 9389:3389 -p 9000-9005:9000-9005 \ -v /sys/fs/cgroup:/sys/fs/cgroup \ --privileged=true lhrbest/ogg213mamysql:v1.0 \ /usr/sbin/init |
访问:http://192.168.66.35:9000 ,用户名:oggadmin,密码:lhr
- 管理服务(Admin server): 用于创建用户、添加附加日志、创建抽取和投递进程,类似在ggsci命令下添加附加日志、extract、replicat进程
- 分发服务(Distribution server):用于创建传输进程,类似于以前的pump进程
- 接收方服务(Receiver server):用于监控接收进程,类似于以前的server collector进程
- 性能度量服务(Performance metrics server):性能监控,这个里面信息非常多,例如ADMINSRVR包括进程性能,线程性能以及进程状态与配置,非常详细与直观。
配置华为云到天翼云的同步
创建extract进程
先创建2个数据库身份证明:
参数内容:
1 2 3 4 5 6 7 | EXTRACT exthw SOURCEDB lhrdb@124.70.97.208:3306 USERIDALIAS mysqlrdshuawei, DOMAIN mysqlrds TRANLOGOPTIONS ALTLOGDEST REMOTE EXTTRAIL hw IGNOREREPLICATES TRANLOGOPTIONS FILTERTABLE lhrdb.checkpoint TABLE lhrdb.*; |
点击创建,不要运行。
创建replicate进程
1 2 3 | REPLICAT repty TARGETDB lhrdb@114.116.245.109:3306 USERIDALIAS mysqlrdstianyi, DOMAIN mysqlrds MAP lhrdb.*, TARGET lhrdb.*; |
点击创建,不要运行。