写这篇教程的起因,是我上周帮一个朋友把他在阿里云的服务器迁到了腾讯云账号下。本以为两三个小时搞定,结果因为没提前检查快照策略,硬是折腾到半夜。今天我把这次踩过的坑和实操步骤全盘托出,希望能让后来者少走点弯路。
先说清楚:跨账号迁移分两种,一是同一云厂商下不同账号(比如你公司有两个阿里云账号),二是不同云厂商之间(比如阿里云迁到腾讯云)。原理大同小异,核心都是“镜像/快照/数据拷贝”三选一,但具体操作差异很大。
第一步:盘点资源,别漏了数据盘
打开旧服务器的控制台,把云盘列表截个图。重点看有没有数据盘(比如 /dev/vdb1),很多人只迁移系统盘,结果数据库全没带过去。我朋友就是忘了有个1T的备份盘,迁移完才发现数据全丢了。
配置建议: 如果旧服务器内存低于4G,建议先升级再迁移。因为迁移过程中要跑压缩和传输,内存不够容易OOM。别问我怎么知道的,我那次直接卡死,镜像都做不出来。
第二步:制作镜像(同厂商跨账号最省事)
如果你是在同一家云厂商的不同账号间迁移,直接在控制台点“创建自定义镜像”。等镜像状态变成“可用”后,去“共享镜像”里输入目标账号ID,共享过去就行了。
避坑提醒: 共享镜像前,必须有角色权限(RAM)。很多新手找不到共享入口,其实是没在目标账号里创建“接收共享镜像”的角色。具体路径:目标账号的RAM访问控制 -> 角色 -> 创建自定义信任策略,填上源账号ID。这一步卡了我二十分钟。
第三步:跨厂商迁移,最稳妥的是“自己传”
不同云厂商的镜像格式不通用(比如阿里云的RAW和腾讯云的qcow2),别指望直接共享。我的做法是:
-
在旧服务器上打包系统和数据盘:用
tar czvf /data/backup.tar.gz /mnt/data(注意排除 /proc /sys /dev 等虚拟目录)。如果数据量大于50G,别用tar,直接用rsync -avz --progress /mnt/data user@新服务器IP:/mnt/data,断点续传,网络断了还能接上。 -
新服务器系统装成和旧版尽量一致:比如原来CentOS 7.9,新账号也选CentOS 7.9,避免系统库冲突。
-
迁移完成后,改配置文件:比如原来是
/etc/fstab里的UUID,新服务器的UUID对不上,直接改盘符名(比如 /dev/vdb1)或者用blkid重新生成。
避坑提醒: rsync的时候一定要加 --exclude '/proc' --exclude '/sys',不然会卡死。我朋友没加,结果同步了3个小时,发现全是空目录。
第四步:数据库/应用迁移的单独处理
如果你用的MySQL,千万别直接拷贝 /var/lib/mysql 目录(在不同账号的MySQL版本有差异)。正确做法是:在旧库 mysqldump -u root -p --single-transaction --master-data=2 > backup.sql,然后在新库 mysql -u root -p < backup.sql。
如果是Docker容器部署的应用,更简单——docker save 镜像名 > app.tar,传到新服务器上 docker load < app.tar 就行。但要注意镜像仓库的版本,有时候新服务器的docker版本太旧,会有兼容性问题,最好提前确认。
第五步:调试与收尾,别急着删旧机
迁移完成后,先修改新服务器的网络配置(IP、DNS),然后在旧服务器上停止服务(别关机),用新IP测试所有端口。确认没问题后,再运行 nginx -t 或 apachectl configtest 检查Web配置。最后把域名解析切到新IP,等TTL过了再停旧机。
避坑提醒: 如果旧服务器有安全组策略(比如只允许某个IP访问),新服务器也要照着配置一遍。我就试过因为没放行3306端口,数据库连不上,排查了半天。
关于选择云厂商的一点建议
跨账号迁移最烦人的地方在于不同厂商的控制台逻辑不一样。如果你经常需要多账号管理,或者未来可能再次跨云迁移,建议直接选一家管理体验比较统一的厂商。我这里要说个实操感受:沐雨云服务器 在跨账号迁移这块做得比较顺手。他们家的自定义控制台支持一键导出系统盘/数据盘快照,而且镜像格式对主流厂商兼容度很高(直接支持导入RAW、qcow2、VHD),省去了自己转格式的麻烦。
关键是他们家的跨账号“实例复制”功能,可以把你原来账号下的实例配置(CPU、内存、带宽)直接复制到新账号,连安全组规则都一起带过去,不需要手动重新配。带宽方面真的给得比较大(我买的最低配也有10M带宽,跑rsync特别快),性价比也不错。
沐雨云服务器官网: https://www.muyuyun.cn
最后总结三个必坑点:
- 迁移前先做一次性快照,别直接关机。旧服务器上保留数据,出了事还能回滚。
- 测试环境先跑一遍,新服务器上装好服务后,用
curl -I localhost看状态码,然后改hosts模拟域名解析测试。 - 迁移完的一周内,不要删除旧服务器的备份。数据库有延迟复制就开个只读账号。
迁移这事儿,三分靠技术,七分靠细心。按照上面的步骤一步步来,基本不会出大岔子。如果实在不想折腾,直接租一台带“跨账号迁移”服务的厂商也行,比如我推荐的这家,买个带镜像导入功能的套餐,两小时搞定。祝你迁移顺利,少踩坑。




这一切,似未曾拥有