教程
网站迁移到新服务器完整指南:从备份到切流量
迁移最怕什么
AI 操作示意图·以官网实际界面为准
迁服务器最怕的不是"搬不动",而是"搬完才发现漏了点东西"——图片少了、数据库是三天前的、SSL 没了、切完 DNS 一半人还在旧机。所以正确的迁移不是"复制过去就完",而是一条有顺序的流程:先备份 → 新机搭环境 → 恢复数据 → 调好 DNS → 切流量 → 逐项验证。新旧并行一段时间,确认没问题再下线旧机。
1. 第一步:把旧机的数据完整备份下来
分两块:网站文件和数据库。
文件用 rsync 搬,它支持断点续传、只传差异(官方手册里的 delta-transfer 算法),比 scp 一把梭靠谱:
# 在新机上拉取,或在旧机上推送都行
rsync -avz --progress root@旧机IP:/var/www/example.com/ /var/www/example.com/
注意末尾那个斜杠:rsync 手册明确说,源路径末尾带 / 是"复制目录里的内容",不带是"连目录本身一起复制"。这里想把内容铺到目标目录,就带斜杠。
数据库用 mysqldump 导成 SQL 文件:
mysqldump --single-transaction -u root -p exampledb > exampledb.sql
--single-transaction 对 InnoDB 表能做在线备份,不会长期锁表影响线上访问(官方手册推荐的在线备份方式)。
2. 第二步:新机把环境装好
AI 操作示意图·以官网实际界面为准
别等数据传完才发现新机缺环境。提前装好并验证版本:
- Web 服务器(Nginx/Apache)、PHP/Node/Python 运行时,版本对齐旧机;
- MySQL/MariaDB,版本与旧机一致或更高;
- 域名站点配置先写好,但暂时别让它对外跑。
把第一步的文件 rsync 过去、SQL 导入新库:
mysql -u root -p exampledb < exampledb.sql
3. 第三步:先测,再切 DNS
新旧机并行期间,先在新机上验证站点能跑:本地改 hosts 把域名指到新机 IP,或用 curl -H "Host: example.com" 新机IP 逐项测页面、登录、支付这些关键流程。
确认新机没问题,才动 DNS:
- 切之前一两天先把 TTL 调小(比如 300 秒),让全球缓存快速过期;
- 把域名的 A 记录从旧机 IP 改成新机 IP;
- 用
dig example.com在不同网络下确认解析已经走新机。
新旧机 IP 不一样,SSL 证书怎么办?
证书是绑域名不绑 IP 的,但证书文件要跟着搬过去。最省事的做法是在新机上用 certbot 重新申请/续期一张新证书(Let's Encrypt 免费),别从旧机拷一堆路径不对的证书文件。切完 DNS 后再续签,避免旧机一关证书续期就断。
4. 第四步:旧站地址怎么处理
如果迁移后页面 URL 结构没变,只要 DNS 切过去就完事,不用额外 301。但如果你顺便把目录结构、域名后缀(比如从 http 老站迁到新域名)改了,那就要在 Nginx 里给旧地址配 301 到新地址,别让老链接和搜索引擎全变 404。
5. 迁移核对清单
切完对着过一遍:
- [ ] 网站文件完整 rsync 过去,大小/数量对得上
- [ ] 数据库已导入新库,登录、订单、内容正常
- [ ] 新机环境版本与旧机一致或更高
- [ ] DNS TTL 已先调小再切,dig 验证生效
- [ ] HTTPS 证书在新机生效,无混合内容
- [ ] 关键流程(注册/登录/下单/支付)在新机跑通
- [ ] 旧机保留观察一两周,确认无流量回落后再下线
- [ ] 旧地址 301 已配(如有 URL 变更)

官方资料
资料核对日期:2026-10-25
- rsync 手册(delta-transfer / -avz / 源路径末尾斜杠语义):https://man7.org/linux/man-pages/man1/rsync.1.html
- MySQL 官方文档:mysqldump 逻辑备份与 --single-transaction 在线备份:https://dev.mysql.com/doc/refman/8.0/en/mysqldump.html
最近一周热门文章
按近 7 天访问热度排序,热度积累前优先展示新文章。
当前栏目最新文章
教程 · 继续阅读同栏目的新内容
一起交流
0 条留言LEAVE A NOTE
你的经验,也很重要。
无需注册或登录。请勿公开邮箱密码、证件、银行卡号或其他敏感信息。
















还没有留言,来分享你的想法吧。