换云服务器前要检查什么,环境、端口和解析逐项确认
把一台云服务器上的业务搬到另一台,真正容易出问题的往往不是拷贝数据那一步,而是迁移前后没有核对环境、端口和解析。
下面按“先确认、再同步、后验证”的顺序讲清楚云服务器迁移注意事项,适用于换云厂商、换实例规格或跨地域迁移的常见场景。
迁移前先核对源机和目标机的环境
动手前先登录源服务器和目标服务器,分别执行以下命令,把结果记下来做对比:
cat /etc/os-release
uname -m
重点看两件事:操作系统大版本是否兼容、CPU 架构是否一致(x86_64 与 arm64 不能直接复制二进制程序)。
如果源机是 CentOS 7、目标机是 Ubuntu 22.04,服务启动方式会从 systemctl 到配置文件路径都可能不同,不能简单拷贝后直接启动。
同时确认目标机的磁盘空间是否大于源机已用空间:
df -h
迁移前还要把源机上的关键配置备份一份,例如 Nginx 的 /etc/nginx/、MySQL 的 /etc/mysql/,以及业务代码目录。
备份可以留在源机本地,方便回滚。
用 rsync 做一次全量预同步
迁移时不要直接停服再拷贝,数据量大时停机时间会很长。
更稳妥的做法是先做一次不停机的预同步,把大部分文件提前传过去,最后再停服做增量同步。
在源服务器上执行(目标机需已安装 rsync 并允许 SSH 登录):
rsync -avz --progress /var/www/ root@目标机IP:/var/www/
参数说明:-a 保留权限和时间戳,-v 显示过程,-z 传输压缩,--progress 显示进度。
第一次全量同步完成后,停掉源机上的业务服务,再执行一次同样的命令,这次只会传输有变化的文件,速度很快。
数据库不要直接用 rsync 拷贝数据目录,应该在停服后导出再导入:
mysqldump -u root -p --all-databases > /tmp/all.sql
把导出的 SQL 文件传到目标机后导入。
这样能避免数据文件在拷贝过程中处于不一致状态。
安全组和防火墙要提前放行
很多迁移后“服务起不来”其实是端口没放行。
迁移前先在目标机所在云平台的安全组里放行业务端口,例如 80、443 和 SSH 的 22。
如果使用了宝塔面板,还要在面板的“安全”页面确认对应端口已放行。
系统内部的防火墙也要检查:
firewall-cmd --list-ports
# 或
ufw status
如果源机开了防火墙、目标机没开,或者规则不一致,迁移后会出现本机 curl 正常、外网访问不了的情况。迁移前把两边的防火墙规则对齐,比迁移后再排查省事得多。
切换后逐项验证再改 DNS
服务在目标机启动后,先不要急着修改域名解析。
用目标机的公网 IP 直接访问验证:
curl -I http://目标机IP
确认返回状态码正常,再检查服务进程和端口监听:
systemctl status nginx
ss -tlnp | grep -E '80|443'
数据库连接、定时任务、文件上传目录权限也要逐一确认。
这些项目在源机上正常,不代表拷贝过去就正常,尤其是目录属主和 PHP 等运行用户不一致时,会出现写入失败。
全部验证通过后,再修改 DNS 解析指向目标机 IP。
TTL 建议在迁移前调低,例如改为 300 秒,这样切换后旧解析能较快失效,回滚也更快。
切换后观察一段时间,确认访问日志和错误日志没有异常,再考虑释放源机。
容易忽略的两个风险
一是授权和备案信息。
部分商业软件按服务器 IP 或机器码授权,换机后需要重新申请授权;
使用国内云服务器绑定域名时,备案信息与接入商相关,跨厂商迁移前应确认备案是否需要变更,避免解析切换后访问被拦截。
二是回滚条件。
迁移前保留源机至少一天不释放,并保留最近一次数据库导出文件。
一旦目标机出现无法快速修复的问题,把 DNS 切回源机 IP 即可恢复,这比现场排查更可控。
如果迁移后服务能启动但外网访问异常,优先检查安全组、系统防火墙和 DNS 解析三处,大多数连接问题都出在这几个环节。