迁移阿里云服务器和数据库到腾讯云

0

在阿里云的学生主机和数据库马上就要到期了,现在阿里云续费越来越贵。而且各种各样的服务太多了,作为小站点,基本用不到。

现在用阿里云的云数据库很不适应,各种性能限制,本来想导出数据的,结果导出数据还限制表,限制行数量。 能控制的感觉越来越弱,套路云不是白来的称号。

因为以前想做别的业务在腾讯云买的云服务器和数据库还有两年到期,网站业务不需要多好的服务器性能,为了进一步压缩服务器续费开支。决定不对阿里云服务器进行续费了,而是把数据库和网站迁移到腾讯云。

记录一下要逃离阿里云的主要原因。

1、服务器数据库到期了,正常情况下服务器用不了这么多。现在各个云厂商对老用户续费都太贵了。

2、阿里云数据各种限制,各种收费项目,没钱还是无法享受云服务器的待遇。

3、mysql导出数据库一直不太方便。至今没有导出成功过。

4、腾讯云服务器和数据库还有两年多的时间:数据库足够大50G,腾讯云服务器空间足够,120GB,迁移在一起可以节约成本。

目前迁移已经基本完成,唯一的问题是域名需要在腾讯云做迁入备案,备案目前遇到验证地不一致的问题,需要先把备案搞定以后才能继续做域名迁移。

当然,各个云服务商针对用户上云,或者其他云资源迁移都已经经历过很多了,为了方便用户迁移,降低挖墙脚的难度,都已经针对本地数据和其他云资源迁移提供了完整的解决方案。只需要按照要求配置一下迁移任务,就可以进行数据迁移。

这里是腾讯云的数据迁移服务,我使用了数据库迁移。
https://cloud.tencent.com/solution/data-migration

既然要做迁移,那就要做好足够的迁移预案和流程。虽然不像公司数据迁移一样做一个完整的迁移方案,前期梳理主要的操作还是必要的。以下是记录了自己迁阿里云服务器和数据库的一些纪要。

阿里云迁移到腾讯云的准备:
1、梳理需要迁移和备份的数据资产。
2、确认迁移可行性。
3、确认迁移复杂程度。

这里我先拿了一个站点进行练手。

3.1、查看迁移方案:
腾讯云提供的迁移工具和服务。可以迁移本地数据或阿里云数据库到腾讯云。
https://cloud.tencent.com/solution/data-migration

同样阿里云也有完整的迁移其他云数据到阿里云的服务。
https://www.aliyun.com/acts/best-practice/index

3.2、测试计划可行性。
使用腾讯云数据库迁移进行测试。
测试中遇到几个问题,阿里云AccessKey中含有=等号,腾讯云不允许使用,需要在阿里云新建一个操作秘钥AccessKey。

腾讯云的迁移原理是使用阿里云的操作接口,通过授权账号密码进行api操作(总共有十几个步骤)。

测试过程中,腾讯云数据库和阿里云数据库的大版本要保持一致,其他的一些参数都需要保持一致,并且一些数据表也需要遵循腾讯云的迁移要求,如果迁移检验不成功,只能更改原数据库表结构和数据,因为这个问题验证不通过,删除了几个不想要的数据库,还改了几张表结构,改了几个 mysql 数据库配置项,按照要求对应着整改数据才能完全通过迁移核验。

数据库迁移方案核验通过以后,就是剩下的十几步操作。

数据库迁移分为两类,一类是全量迁移,这类就是备份整库,然后导入整库完成。

一类是全量迁移加增量同步(腾讯云能通过接管 binglog 保持同步15天),可以在迁移过后的测试期让新旧数据库保持统一,不需要在切换时人工再做增量迁移。

我选择整库迁移,不用增量同步。主要是业务的写数据都是可以丢弃的数据,只要把原始数据迁移过来就可以。

如果是写入数据不能丢弃的业务,那就要进行增量同步。

另外需要注意的一点是,迁移过来的数据库需要保持数据库为空,我在腾讯云的数据库原本是有内容的,为了迁移数据库,先进行了备份,然后停站,把数据库清空了,等迁移完数据库以后再重新把原来的书库内容导入。

结果我的腾讯云数据备份的时候忘记备份用户了,又挨着找数据库用户和密码来创建的用户。

3.3、迁移数据库。
按照预计流程,迁移配置修改好以后,只需要等腾讯云的迁移脚本执行并完成就好了。

但我这次测试迁移数据过程很不顺利,腾讯云和阿里云数据库均出现了问题,开始是腾讯云的迁移任务在最后一步,导入数据冷备时失败,这个步骤失败后用户无法自己取消,是倒数第二步操作。虽然我检查了数据好像内容都导入了,但数据库一直保持在了只读状态,并且无法结束迁移任务,也无法保证数据库是否导入完整。

通过工单联系腾讯云客服进行技术支持,又来回尝试了四次迁移任务,其中第二次和第三次迁任务不知道什么原因,触发了阿里云的问题,好像知道我要迁走一样,数据库备份请求不响应,不管是腾讯云迁移通过接口还是我从后台创建备份任务都没有执行。

找阿里云客服进行技术支持,把备份任务弄好了,弄好已经是晚上12点过后了,又继续了第四次迁移数据库任务,第四次数据库迁移到最后一步又失败了,腾讯云工程师半夜给手工又回滚了一次迁移冷备导入,这才导入成功,从下午4点开始弄迁移数据库测试,到我睡觉前凌晨2点,还没折腾完。

等我实在熬不住睡醒一觉起床,腾讯云帮我手动迁移好了数据才算成功。一次数据库500M的迁移,搞了一晚上。

数据库迁移完成了,简单检查了一下数据完整性,又把原来删掉的数据库都导入了进来,先把原有网站,就是这个博客先跑起来。

3.4、迁移站点,主要是lnmp环境和代码迁移。

数据库迁移过来了,那就开始迁移站点和应用了。

3.4.1、站点应用代码备份。
迁移前先把阿里云的源服务器的站点代码打包,nginx配置文件备份。

3.4.2、站点代码数据迁移。

再把源码压缩包通过 wget 下载到腾讯云的服务器中,因为是两个服务器都是 1M 出口带宽,代码包下载了一阵子。

如果有不限宽带的服务器或者已经配置过oos云存储的,建议通过云存储迁移代码包,这样下载速度快很多。

站点迁移主要包括代码迁移和nginx配置迁移。本身运行环境都是lnmp的环境,环境一致,但php环境有所变化,部署环境也有变化,以前是代码的lnmp环境,现在是宝塔的lnmp环境。

先把站点nginx配置进行迁移配置好,再通过hosts绑定到腾讯云服务器进行测试。

php从5.5升级到了7.0,原有的一些代码会报错。把代码修改成适配php7.0的。倒是没有很多需要改动的,但在修改的时候发现网站代码遭到了入侵和篡改,又对病毒文件做了清理。

前段时间服务器被搜索引擎狂爬,压力扛不住的原因也找到了,原来是被人上传了木马文件,本来我以为是升级discuzx程序导致的搜索引擎优化,现在才发现是因为被人植入了木马。这些木马文件对应着老服务器也清理了一遍。

木马比较狡猾,植入了多个位置,留了多个后门,而且把文件设置为不可删除状态,root账户都不能删除。具体木马的特征单独开一个再说,木马更新的脚本和肉鸡数据回传主要是传回这个域名(zerostarts.com)。这里只记录一下迁移过程。

迁移数据做完了,代码也改的差不多了,木马也清空的差不多了,把代码中的数据库连接配置也改到内网的腾讯云数据库。

3.5、迁移测试,解析迁移。

经过简单测试,觉得没什么问题。就把cdn或者域名的解析进行了切换,先在新服务器和数据上跑一段时间看看效果。解析迁移之前一定要确认腾讯云上或者其他国内服务器有过备案,如果没有备案的域名,腾讯云不允许进行接入的。会直接给屏蔽掉。

后续各个环节遇到的时候再记录相关的内容。

4、在腾讯云新增备案。
其实呢,现在还欠着一个流程没有做完,那就是要把备案在腾讯云进行新增,要不然会显示腾讯云没有备案被清理的情况。

但现在腾讯云备案越来越简单,我觉得应该不是什么问题,可是在使用腾讯云小程序备案的时候,居然要求备案地和我所在地要相同,人脸核验前会核验微信号定位所在地。我的备案都是在北京做的,那怎么办,只能考虑人肉跑到北京去做人脸核验了。