做外贸/做网站的朋友大概率都遇到过这些场景:旧服务器速度越来越慢、商家跑路/涨价、想换个线路更好的节点、想升级更高配置……这时候就必须面对「网站搬家」这件事。
很多新手第一次搬家都会踩坑:要么数据丢了、要么网站打开全是404、要么切换DNS之后十几个小时打不开、要么搬完了邮件发不出去……本文教你一套零 downtime 迁移方案,按步骤来,用户完全感知不到你在换服务器。

一、迁移前必须搞清楚的几件事
在开始动手之前,先把这几件事准备好,不然后面很容易出问题。
1.1 先备份!先备份!先备份!
这是所有操作的前提,没备份就不要动手迁。 不管你用什么方法迁移,迁移前一定要在旧服务器上做好完整备份,遵循 3-2-1 备份原则:

- 3份副本:网站文件、数据库、Nginx配置文件,本地电脑+旧服务器+新服务器各留一份
- 2种介质:服务器上一份、本地电脑/云存储一份,不要只放在一个地方
- 1份异地:至少有一份备份不在当前旧服务器上,避免旧服务器出问题所有数据一起丢
在旧服务器上执行以下命令备份:
# 备份网站文件(以/www/wwwroot为例,根据你的实际路径改)
tar -zcf website_backup.tar.gz /www/wwwroot/
# 备份所有数据库
mysqldump -u root -p --all-databases > all_databases.sql
# 备份Nginx配置
tar -zcf nginx_conf_backup.tar.gz /etc/nginx/
# 如果用1Panel/宝塔,直接在面板里点"一键备份"更简单
备份完成后把这三个文件下载到本地电脑存一份,不要只放在服务器上。
1.2 提前24小时降低DNS TTL
这是零 downtime 最关键的一步,很多人忽略这步,导致切换DNS之后十几个小时全球各地访问不一致。

迁移前24小时,去你的域名DNS服务商(Cloudflare/阿里云/腾讯云等),把域名的TTL(缓存时间)从默认的3600秒(1小时)改成300秒(5分钟)。这样改完等24小时,全球各地的DNS缓存都过期了,到时候切换DNS记录只需要5分钟就能全球生效,不会出现部分用户访问旧服务器、部分访问新服务器的情况。
? 提示:如果你用Cloudflare,直接在DNS记录页面点编辑就能改TTL;如果用国内注册商的DNS,同样找TTL设置。
1.3 新服务器环境准备
在新服务器上先把环境搭好,和旧服务器保持一致: - PHP版本尽量和旧服务器一致(比如旧服是PHP 8.1,新服也装8.1,不要直接装8.3,避免兼容性问题) - MySQL/MariaDB版本尽量接近 - Nginx版本不用太在意,但配置文件里的伪静态规则要照搬 - 如果用1Panel/宝塔面板,新服务器也装同款面板,迁移最方便
如果你还没选好新服务器,可以先看看 2026年海外VPS选购终极指南,选一台NVMe SSD+独享带宽的服务器,迁移速度快,后续网站打开也快。LuckVM的香港/新加坡/日本节点都支持7天无理由退款,你可以先买一台测试迁移,迁完不满意全额退款,没有任何风险。
二、三种迁移方法对比,选适合你的
一共有三种主流迁移方法,各有优缺点,根据你的技术水平和场景选:

| 方法 | 难度 | 风险 | 可控度 | 适合人群 |
|---|---|---|---|---|
| 手动rsync迁移 | ⭐⭐⭐ | 最低 | 最高 | 所有场景,推荐新手学会 |
| WordPress插件一键迁移 | ⭐ | 中等 | 低 | 只有WordPress单站点,网站<5G |
| 面板一键迁移 | ⭐ | 中等 | 低 | 新旧服务器用同一款面板(1Panel/宝塔) |
本文重点讲手动迁移,因为这是最稳妥、可控度最高的方法,学会了以后不管什么网站你都能迁;后面也会简单讲另外两种快捷方法。
三、方法一:手动迁移(最稳妥,推荐所有人学会)
手动迁移一共分6步,按顺序来不会出错。
步骤1:新服务器安装环境
按你旧服务器的环境,在新服务器上装好Nginx/Apache、PHP、MySQL,创建好和旧服务器同名的数据库、同名的数据库用户,密码也设成一样的(省得后面改wp-config.php)。
步骤2:传输网站文件到新服务器
用rsync命令直接从旧服务器传输文件到新服务器,比你先下载到本地再上传快得多,而且支持断点续传,大网站也不怕断:
# 在新服务器上执行,直接从旧服务器拉取文件
# 把旧服务器IP、路径换成你自己的
rsync -avz root@旧服务器IP:/www/wwwroot/你的网站目录/ /www/wwwroot/你的网站目录/

rsync会显示传输进度,传完之后再执行一遍这个命令,它只会传增量变化的文件,确保两边文件完全一致。
如果rsync连不上,先检查旧服务器有没有开22端口,防火墙有没有放行。
步骤3:迁移数据库
先在旧服务器上导出数据库:

# 在旧服务器执行,导出数据库
mysqldump -u root -p 你的数据库名 > database_backup.sql
# 把导出的sql文件传到新服务器
scp database_backup.sql root@新服务器IP:/root/
然后在新服务器导入:
# 在新服务器执行,导入数据库
mysql -u root -p 你的新数据库名 < /root/database_backup.sql
⚠️ 重要提醒:新老服务器的MySQL字符集一定要一致!如果旧的是utf8mb4,新的也设成utf8mb4,否则导入后中文会全部乱码,非常麻烦。
步骤4:配置Nginx虚拟主机
把旧服务器上对应的Nginx配置文件复制到新服务器,放到/etc/nginx/conf.d/目录下,修改里面的root路径如果有变化的话,然后执行:
nginx -t # 测试配置有没有错误
nginx -s reload # 重新加载配置
步骤5:修改本地hosts文件测试(最关键!!)
这一步千万不能跳过! 不要急着改DNS,先在你自己本地电脑上修改hosts文件,把域名指向新服务器IP,访问测试新服务器上的网站是不是完全正常。
- Windows系统:hosts文件在
C:\Windows\System32\drivers\etc\hosts - Mac/Linux系统:hosts文件在
/etc/hosts
在文件最后加一行:
新服务器IP 你的域名.com www.你的域名.com
保存之后,打开浏览器访问你的网站,这时候你访问的就是新服务器上的版本了,但是全球其他用户访问的还是旧服务器,不会影响用户。
这时候仔细测试所有功能: - 首页能不能打开 - 后台能不能登录 - 文章页能不能打开 - 图片能不能加载 - 提交表单、下单功能正不正常 - 后台发测试邮件能不能收到
一定要测试到所有功能都正常,再进行下一步DNS切换! 这时候发现问题随时可以改,改完DNS再发现问题就麻烦了。
步骤6:切换DNS,流量切到新服务器
确认新服务器上网站完全正常之后,去DNS服务商那里把域名的A记录从旧服务器IP改成新服务器IP。因为你之前已经把TTL改成了300秒,所以最多5-10分钟全球就生效了。
DNS切换之后,旧服务器不要立刻关机! 让旧服务器继续运行24-48小时,因为可能还有部分地区DNS缓存没更新,还会访问旧服务器,等48小时之后确认所有流量都切到新服务器了,再关旧服务器、取消旧服务器订阅,做到用户完全无感知。
四、方法二:WordPress插件一键迁移(适合纯WordPress站点)
如果你的网站就是纯WordPress,没有其他自定义程序,用插件迁移是最简单的。推荐用 All-in-One WP Migration 这个插件:
- 在旧服务器WordPress后台安装并启用All-in-One WP Migration插件
- 点"导出"→"文件",插件会自动把整个网站(文件+数据库+配置)打包成一个wpress文件
- 下载这个wpress文件到本地
- 在新服务器上先搭好一个全新的WordPress(全新安装就行,不用改任何东西)
- 新WordPress后台也安装同款All-in-One WP Migration插件
- 点"导入"→选择你刚才下载的wpress文件,等待导入完成
- 导入完成后按提示固定链接刷新两次,就完成了
⚠️ 注意:插件免费版最大支持512M文件,如果你的网站超过512M,要么升级插件付费版,要么还是用手动rsync迁移。另外别用网上的"破解版"迁移插件,很多带后门,会把你整个网站数据偷走。
五、方法三:面板一键迁移(新旧服同面板)
如果你新旧服务器都用1Panel或者都用宝塔面板,那就更简单了,面板自带一键迁移功能:
- 1Panel:在"工具箱"→"网站迁移",添加新服务器的SSH连接信息,选择要迁移的网站,点一键迁移,面板自动帮你迁文件、迁数据库、迁配置,迁完直接用。
- 宝塔:在"软件商店"安装"宝塔一键迁移"插件,同样填新服务器SSH信息,选要迁移的网站,一键完成。
这种方法最简单,但是要求新旧服务器都装同一个面板,而且面板版本不要差太多,不然可能出问题。
六、迁移完必做的10项检查
切换完DNS、网站跑起来之后,一定要逐项检查这些内容,避免留下暗坑:

- ✅ 首页、分类页、文章页全部能正常打开,没有404/500错误
- ✅ 网站后台能正常登录,账号密码正常
- ✅ 所有图片、CSS、JS静态文件正常加载,没有空白或样式错乱
- ✅ 网站内链都正常跳转,没有死链
- ✅ 联系表单、评论、下单、支付等交互功能正常
- ✅ 网站发出的邮件(注册通知、订单通知)能正常收到,不进垃圾箱(记得检查域名邮箱配置)
- ✅ SSL证书正常生效,HTTPS访问正常,没有安全警告
- ✅ PHP版本、扩展和旧服务器一致,避免插件不兼容
- ✅ 定时任务(crontab)正常运行,比如定时备份、定时发邮件
- ✅ 用不同地区的代理测试访问,确认全球各地都能正常打开
全部检查没问题之后,再去Cloudflare把DNS的TTL改回默认的3600秒,减少DNS查询次数,加快访问速度。
七、常见问题排查
1. 网站打开显示"数据库连接错误"
一般是三个原因:新服务器数据库名/用户名/密码和旧的不一样,去wp-config.php(WordPress)或者对应网站配置文件里改成新的数据库信息就行;或者MySQL服务没启动,执行systemctl start mysqld启动。
2. 打开网站全是404错误
这是Nginx伪静态规则没搬过来,把旧服务器Nginx配置里的伪静态规则复制到新服务器,重载Nginx就好了。
3. 图片加载不出来
要么是文件没传完整(再跑一遍rsync增量同步),要么是文件权限不对,执行chown -R www:www /www/wwwroot/你的网站目录修复权限。
4. CSS样式错乱,网站显示不正常
这是静态文件缓存问题,按Ctrl+F5强制刷新浏览器;如果还不行,清一下CDN缓存。
5. 邮件发不出去
检查新服务器有没有开放25端口,很多商家默认封25端口,LuckVM所有节点默认开放25端口,邮件正常收发不用额外申请。如果确实发不出去,参考之前的域名邮箱配置教程用SMTP发信更稳定。
6. 部分地区能打开,部分地区打不开
这是DNS还没全球生效,等24小时一般就全好了;如果超过24小时还不行,检查DNS记录是不是改对了,有没有旧的A记录没删掉。
八、迁移避坑8条,都是血泪教训
- ❌ 不备份就动手:这是第一大坑,迁坏了连回滚的机会都没有
- ❌ 本地没测试就切DNS:切完DNS才发现网站有问题,用户一访问就是错的,损失极大
- ❌ 忘记开防火墙端口:新服务器防火墙没开80/443端口,网站根本访问不了
- ❌ PHP版本差太多:旧服PHP7.4,新服直接装PHP8.3,很多插件主题直接报错
- ❌ 大文件传输中途中断:用scp传大文件容易断,用rsync支持断点续传更稳
- ❌ SSL证书忘迁移:切完DNS发现HTTPS打不开,证书警告吓跑用户
- ❌ 旧服务器立刻关:切完DNS立刻关旧服,部分DNS没更新的用户直接访问不了,至少等48小时
- ❌ 邮箱数据没迁:光顾着迁网站,忘了域名邮箱的邮件数据和账号配置,迁完旧服务器删了才发现邮件全没了
九、常见FAQ
Q:迁移会影响SEO排名吗? A:只要你按本文方法零downtime迁移,服务器稳定、网站打开速度更快、所有URL不变,SEO排名不会有任何负面影响,甚至可能因为新服务器速度更快排名略有上升。
Q:网站10G多,手动迁移要多久? A:两台海外服务器之间rsync传输一般能跑满带宽,10G大概10-30分钟就能传完,加上配置测试总时间1-2小时足够。
Q:迁完需要重新备案吗? A:海外服务器不需要备案,直接迁直接用;如果是国内服务器换国内服务器需要改备案接入,本文讲的是海外VPS迁移,不用备案。
Q:我用Cloudflare,切换的时候要不要开开发模式? A:建议切换DNS的时候开一下Cloudflare开发模式,避免Cloudflare缓存旧内容,等切换完确认没问题再关。
Q:可以在访问低峰期迁移吗? A:建议选凌晨访客最少的时候切DNS,即使出问题影响的人也最少。
Q:用CDN的话怎么迁? A:迁法完全一样,只是最后切DNS的时候记得在CDN后台把源IP改成新服务器IP就行。
Q:数据库很大,导出导入超时怎么办? A:加--quick参数导出,或者用mysqldump分批导出,也可以直接用scp复制MySQL数据目录(要先停MySQL服务再复制)。
Q:我完全不会技术,能找人帮我迁吗? A:LuckVM新用户购买任意VPS之后,可以提交工单联系客服,免费协助一次网站迁移,你只需要提供旧服务器的SSH信息,剩下的我们技术帮你搞定,不用你自己动手。
十、迁移检查清单总结
迁移前(24小时前)
- [ ] 旧服务器完整备份(文件+数据库+配置),本地存一份
- [ ] DNS TTL改成300秒,等待24小时生效
- [ ] 新服务器装好和旧服一致的环境
- [ ] 新服务器创建好数据库,账号密码和旧服一致
迁移中
- [ ] 用rsync传输所有网站文件
- [ ] 导出导入数据库
- [ ] 配置Nginx虚拟主机和伪静态
- [ ] 修改本地hosts测试所有功能正常
切换后
- [ ] DNS记录改成新服务器IP
- [ ] 旧服务器继续运行48小时不关
- [ ] 按10项检查清单逐项测试
- [ ] TTL改回3600秒
- [ ] 48小时后确认没问题再取消旧服务器





