换服务器不换域名的完整搬家步骤
发布时间:2026-01-17 18:33       
更新时间:2026-01-17 23:22
搬家真正麻烦的不是拷文件,而是切换那几分钟不出事。域名保持不动、用户无感知,整套流程可以拆成五步:搭新环境、同步数据、停写、切换解析、观察收尾。
## 一、新环境先搭齐
新服务器上把运行环境装成和旧机一致,版本对不上是搬家后出怪问题的头号原因。以 PHP 站点为例:
```
# CentOS
yum install -y nginx php-fpm php-mysqlnd
# Ubuntu
apt install -y nginx php-fpm php-mysql
```
装完用 php -v、nginx -v 和旧机核对一遍,伪静态规则和证书文件也提前拷过去。数据库版本同样要对齐,主小版本不一致时,先在测试库试导一次再动真格。文件属主也同步对齐,上传目录在新机上提前建好并授权,避免切换后才发现写不进去。
## 二、同步代码与数据库
代码用 rsync 全量拉一次:
```
rsync -avz 旧机IP:/var/www/html/ /var/www/html/
```
数据库先做全量导出,传到新机导入:
```
mysqldump -uroot -p --single-transaction blog | gzip > blog.sql.gz
```
这一步完成后业务照常跑在旧机,新机只是待命的备用环境。
## 三、停写窗口做增量
选访问最低的时段,站上挂维护公告,停掉定时任务,把数据库设为只读:
```
SET GLOBAL read_only = 1;
```
再执行一次带 --delete 的 rsync,把增量数据和删除操作同步干净,然后补一次数据库导出导入。
## 四、切换解析并验证
提前一两天把域名 TTL(解析记录的缓存时长)调到 300 秒,切换后传播快,回切也快。切换前先在新机用 hosts 绑定域名做完整测试,确认登录、上传、回调接口都正常,再到域名解析处把 A 记录指向新机 IP。切换完用 curl -I http://域名/ 看返回码,再找几个不同网络的用户帮忙打开确认。
## 五、观察期与回滚
切换后 24 到 48 小时盯三样:错误日志有没有异常、数据库连接是否正常、搜索引擎抓取有没有报错。旧机不要急着销毁,保留一周以上,期间发现问题,把解析改回旧 IP 就能回滚。
观察期内搜索引擎会逐步更新解析指向,收录排名短期内有小幅波动属于正常,不要在波动期再做二次迁移。常见报错集中在三处:站点配置里数据库地址没跟着改、上传目录权限不对(chown -R nginx:nginx /var/www/html/upload 处理)、证书路径变化导致启动失败。按这三条排查,多数搬家事故当场能定位。搬家不赶时间,每一步验证完再走下一步,整个过程其实很平稳。