背景
2018年4月24日上午9点左右,小编在即将托管的服务器上建立数据库,并通过openvpn建立加密隧道,从而实现阿里云RDS和本地自建数据库之间同步。在托管服务器上配置openvpn后,重启openvpn客户端时,一直获取不到ip,后面重启了一下openvpn服务端,本地托管服务器获取到了IP,之后小编很开心的配置着MySQL主从同步。但是到11:00左右,有同事反应线上自建数据库无法访问,小编通过查看,发现在阿里云虚拟机上的自建MySQL同步中断,从而导致本地同步也中断,并且已经同步停止了2个小时。为了保证业务的正常运行,小编做了如下操作。
当前数据库同步架构图
![记一次阿里云RDS与自建数据库同步中断的补救过程](https://img-blog.csdnimg.cn/img_convert/326e8c40d0ab7caface1bdae295ed807.jpeg)
补救策略
- 在RDS上获取gtid点,在从库上从新设置同步点,使从库正常运行起来,保证业务的流畅
- 通过解析RDS binlog,把binlog转换成SQL语句,然后把SQL语句插入到从库中
- 重新做RDS到自建库的数据同步
- 数据库同步架构改进,解决单点问题。
补救过程
1. 先让同步正常运行,保证业务不中断
1. 在RDS上获取gtid节点
- 命令 :
show master status\G
- 结果 :
*************************** 1. row *************************** File: mysql-bin.000886 Position: 324398134 Binlog_Do_DB: Binlog_Ignore_DB: Executed_Gtid_Set: 005304be-d260-11e7-b402-6c92bf475505:1-219538493, 759ccfb9-70d0-11e7-b7d5-6c92bf47591d:1-2572999,