记阿里云经典网络迁移至专有网络的过程

前言

为了减轻对数据库的运维压力,将自建的mysql数据库转为RDS数据库。mysql

迁移环境

  1. 阿里云RDS——专有网络
  2. 阿里云ECS——经典网络(应用服务器)
  3. 阿里云ECS——经典网络(DB服务器)
  4. 咨询过阿里云,咱们ECS经典网络不支持直接从经典网络迁移到专有网络,需购买新的服务器。

相关IP以及应用网络配置

IP	服务器类别	类别	外网IP
10.10.3.10	应用服务器	应用服务器-A	183.44.79.28
10.10.3.11	自建mysql	自建数据库-B	*
172.10.10.11	阿里云RDS	RDS-C	*
172.10.10.12	(新购)阿里云ECS-应用服务器	新购VPS服务器-D	183.44.79.27

咱们须要将应用从A迁移到D;将数据库从B迁移到Dsql

迁移步骤

1.先在服务器D中搭建好相关的应用运行环境———APR-Tomcat、JDK、Nginx数据库

2.使用阿里云提供的ClassicLink将经典网络与专有网络互通。也就是上面的四台服务器都能相互ping通,目的是让D服务器能连接上B的数据库。缓存

3.将应用从A服务器中复制到D服务器中去,启动D中的应用,观察应用是否能正常启动。服务器

4.在D服务器中的应用能正常启动后,需修改A的Nginx配置,配置一份代理,类型是backup,目的是在A应用stop后,此backup会将请求转发到D服务器的应用中去。网络

5.中止A服务的应用,观察A中的Nginx是否能将请求都转发到D的应用中去。若是正常,则说明咱们应用已成功迁移到D服务器中。运维

6.最后修改域名指向的外网IP,将183.44.79.28修改成183.44.79.27。因CDN有缓存,故修改后,从域名进来的请求并不会马上请求到183.44.79.27的IP上,还需保留A服务器的Nginx应用正常服务一到两天。目的是为了保持全部请求都会转发到D服务器中。工具

到此,咱们已经迁移好了应用了。可是数据库这块还须要迁移。post

7.为了能正常快速迁移,咱们并无使用阿里云提供的自建Mysql迁移到RDS上的工具。阿里云

此处须要提一下咱们的业务:天猫的充值业务;整个过程比较简单,将天猫请求的数据,保存至数据库后,再发送充值到充值系统,而后等待充值系统的结果通知,根据结果业务闭环

8.最初的想法是在D中启动多一份应用,可是此引用连接的是RDS数据库;在天猫请求过来的充值数据用新的线程post一份至此应用中。可是仔细想了一下,这样会硬气引发自建数据库与RDS自增主键不一致的问题。若是天猫同时推送3笔充值数据过来,那么就有可能订单A的主键ID在自建mysql是10001,而在RDS的自增主键却有多是10002

9.最后的方法是在订单请求充值后,查询一次订单,而后将订单的信息post到新的应用(链接到RDS),在此post的接口处理的逻辑仅仅是将数据插入到数据库中(此处用了Nutz Dao简单而方便)。

10.而后在接收通知结果的接口中,直接将接收到的数据,启用新的线程post一份至链接到RDS应用中。

这样咱们就能将今后刻起的数据,在自建数据库同步至RDS数据库

11.观察一段时间的订单,对比订单的数据,若是没有差别,则说明上述的步骤是支持咱们的逻辑,并且对天猫来讲是透明,不须要停机就能完成迁移了。