首页 > Wordpress > 正文

WordPress 手动迁移服务器实测:从备份到上线的完整流程

fenij 2026-08-13 35 Wordpress

把 WordPress 从一台服务器搬到另一台,插件一键迁移经常卡在数据库超大或者权限不对上。我更习惯手动来:mysqldump 导出、rsync 传文件、新机还原、改 DNS,四步跑完最稳。下面是我上个月刚搬过一次的真实步骤,照着做基本不会翻车。

动手前先确认两件事

旧机和新机的 PHP 版本尽量一致,差一个 minor 版本通常没事,差大版本(比如 7.4 搬去 8.2)容易出怪事,迁移前先在测试机验证一下主题和插件。另一件:旧站先开维护模式,避免搬运途中还有人评论、下单,造成新旧数据对不上。

迁移四步流程

1
导出数据库
mysqldump 落盘

2
传输文件
rsync 增量同步

3
新机还原
导库+改配置

4
改解析
切 DNS 观察

第一步:导出数据库

进旧机,用 mysqldump 把库落盘。库名在 wp-config.php 的 DB_NAME 里看,别凭记忆写错:

mysqldump -u root -p wp_db > /root/wp_db.sql
# 库比较大的话加 --single-transaction 避免锁表
mysqldump -u root -p --single-transaction wp_db > /root/wp_db.sql

导完顺手看一下文件大小,sql 文件明显比数据库显示的小,多半是权限问题没导全,别带病往下走。

第二步:打包并传输文件

WordPress 根目录整体传,但缓存目录没必要搬,用 –exclude 跳过能省一半时间:

rsync -avz --exclude=wp-content/cache \
  /var/www/html/ user@新服务器IP:/var/www/html/

第一次传完别急着删旧机,隔天再跑一次 rsync 做增量同步,把迁移窗口里的增量数据补全,这步很多人漏掉。

第三步:新机还原

新机建好同名库和用户,导入 sql,再把 wp-config.php 里的 DB_HOST / DB_USER / DB_PASSWORD 改对。Nginx 的伪静态规则(try_files 那段)要和旧机完全一致,否则前台能开、后台进不去。

第四步:改解析,观察

把域名的 A 记录指向新 IP,迁移前把 TTL 调小(比如 300 秒),生效就快。生效后重点看三处:后台能否登录、图片是否 404、表单提交有没有丢。建议保留旧机一周再下线。

手动迁移 vs 插件迁移

对比项 插件一键迁移 手动迁移
适用库大小 小站(<200MB)省事 大库也稳,可控
失败排查 黑盒,报错难定位 每一步可见,好排错
耗时 快但受限于插件 略慢,胜在可靠
⏱️
300s
迁移前 DNS 的 TTL

🔧
4 步
导出→传输→还原→解析

🗑️
7 天
旧机保留观察期

常见问题

Q:迁移后图片全 404?
A:九成是 wp-content/uploads 没传全,或者新机 Nginx 的 client_max_body_size、上传路径权限不对。先 du -sh 比一下新旧 uploads 大小。

Q:后台能开,前台白屏?
A:多半是伪静态规则缺失,Nginx 少了 try_files $uri $uri/ /index.php?$args; 这一行,补上重载即可。

Q:数据库导入提示超时?
A:大库别用 phpMyAdmin 网页导,用命令行 mysql 导入最稳,必要时先 source 分卷。

如果你也在折腾 WordPress 迁移,欢迎在 fenij.com 留言说说踩过的坑。

排错自查清单

  • ☐ 动手前先确认两件事:旧机和新机的 PHP 版本尽量一致,差一个 minor 版本通常没事,差大版本(比如 7.4 搬去 8.2)容
  • ☐ 迁移四步流程
  • ☐ 第一步:导出数据库:进旧机,用 mysqldump 把库落盘。库名在 wp-config.php 的 DB_NAME 里看,别凭记
  • ☐ 第二步:打包并传输文件:WordPress 根目录整体传,但缓存目录没必要搬,用 --exclude 跳过能省一半时间:
  • ☐ 第三步:新机还原:新机建好同名库和用户,导入 sql,再把 wp-config.php 里的 DB_HOST / DB_USER
  • ☐ 第四步:改解析,观察:把域名的 A 记录指向新 IP,迁移前把 TTL 调小(比如 300 秒),生效就快。生效后重点看三处:后台能
  • ☐ 手动迁移 vs 插件迁移
  • ☐ 常见问题:Q:迁移后图片全 404? A:九成是 wp-content/uploads 没传全,或者新机 Nginx 的

关键命令速查

  • mysqldump -u root -p wp_db > /root/wp_db.sql # 库比较大的话加 --single-transaction 避免锁表 mysqld
  • rsync -avz --exclude=wp-content/cache \ /var/www/html/ user@新服务器IP:/var/www/html/

相关延伸

更系统的排查思路,见 WordPress 分类归档

相关完整手册

系统化的排查与配置思路,建议顺手收藏这几篇完整手册: