把 WordPress 从一台服务器搬到另一台,插件一键迁移经常卡在数据库超大或者权限不对上。我更习惯手动来:mysqldump 导出、rsync 传文件、新机还原、改 DNS,四步跑完最稳。下面是我上个月刚搬过一次的真实步骤,照着做基本不会翻车。
动手前先确认两件事
旧机和新机的 PHP 版本尽量一致,差一个 minor 版本通常没事,差大版本(比如 7.4 搬去 8.2)容易出怪事,迁移前先在测试机验证一下主题和插件。另一件:旧站先开维护模式,避免搬运途中还有人评论、下单,造成新旧数据对不上。
迁移四步流程
第一步:导出数据库
进旧机,用 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)省事 | 大库也稳,可控 |
| 失败排查 | 黑盒,报错难定位 | 每一步可见,好排错 |
| 耗时 | 快但受限于插件 | 略慢,胜在可靠 |
常见问题
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 留言说说踩过的坑。