13 10 月 2026

换机器是常有的事:旧服务器到期了、配置不够要升级、或者从别的商家搬到我们这儿。迁移的核心诉求就一个——业务中断时间最短,数据一点不丢。

这篇以「旧机器 → 新机器」为例讲完整迁移流程,游戏服、网站、数据库都覆盖。全程命令可抄。

需要云服务器可以看看财富云计算:一键开服面板,NAT 型无独立公网 IP,价格比独立 IP 机型省一半以上,主流游戏快速部署,迁移不折腾。

一、迁移前先规划

1. 摸清旧机器上有什么

# 跑了哪些服务
systemctl list-units --type=service --state=running

# 监听哪些端口
ss -tulnp

# 磁盘占用构成
du -sh /opt /home /var/www /var/lib/mysql 2>/dev/null
df -h

# 定时任务
crontab -l
ls /etc/cron.d/

拿张纸列成清单:服务 → 端口 → 数据位置 → 配置文件位置。漏一项,迁移后就多一个故障。

2. 确定迁移策略

数据量策略预计中断
< 10G(小服、小网站)停服 → rsync → 起服30–60 分钟
10–100G先 rsync 预热(不等停机)→ 停服增量同步 → 起服10–30 分钟
> 100G 或数据库数据库用主从/Dump,文件用快照迁移视方案

游戏服一般 10–50G,用第二种方案,中断能压到半小时内。

3. 新机器先装好环境

新机器装好系统、更新、装基础工具、设好时区和 NTP。服务(Nginx、MySQL、SteamCMD)提前装好但先不启动,等数据到位再起。

二、数据迁移:rsync 是主力

rsync 比 scp 强在:支持增量、支持断点续传、支持保留权限,大文件迁移的首选。

第一次全量同步(旧机器上执行)

# 语法: rsync [选项] 源 目标
rsync -avzP --progress \
  /opt/games/ \
  root@新机器IP:/opt/games/

# 参数说明:
# -a 归档模式(保留权限、时间戳、软链接)
# -v 详细输出
# -z 传输时压缩
# -P 显示进度 + 支持断点续传

数据库目录不要直接 rsync(InnoDB 文件在运行中拷贝会损坏),要走 mysqldump 或主从。

同步网站和配置

# 网站目录
rsync -avzP /home/wwwroot/ root@新机器IP:/home/wwwroot/

# Nginx 配置
rsync -avzP /etc/nginx/ root@新机器IP:/etc/nginx/

# 证书
rsync -avzP /etc/letsencrypt/ root@新机器IP:/etc/letsencrypt/

# 脚本
rsync -avzP /opt/scripts/ root@新机器IP:/opt/scripts/

数据库迁移

小数据库(几个 G 以内)用 dump 最简单:

# 旧机器: 导出
mysqldump -u root -p --single-transaction --quick \
  --all-databases | gzip > /tmp/mysql-all.sql.gz

# 传到新机器
rsync -avzP /tmp/mysql-all.sql.gz root@新机器IP:/tmp/

# 新机器: 导入
gunzip < /tmp/mysql-all.sql.gz | mysql -u root -p

--single-transaction 保证 InnoDB 表导出期间数据一致,不用停库。

大数据库(几十 G)建议用主从同步,先让新机器做旧机器的从库,同步追平后再切换。这块展开讲太长,站内有 MySQL 安装与优化入门 可以参考。

三、正式切换:中断时间最短的流程

数据已经预热同步过一轮,正式切换这样做:

# ===== 旧机器 =====
# 1. 停业务(游戏服、网站服务)
systemctl stop nginx palworld ark

# 2. 最后一次增量同步(只传变化的,很快)
rsync -avzP --delete /opt/games/ root@新机器IP:/opt/games/
rsync -avzP --delete /home/wwwroot/ root@新机器IP:/home/wwwroot/

# 3. 再导一次数据库(用 --single-transaction,秒级小库)
mysqldump -u root -p --single-transaction --all-databases | gzip > /tmp/final.sql.gz
rsync -avzP /tmp/final.sql.gz root@新机器IP:/tmp/

# ===== 新机器 =====
# 4. 导入最终数据库
gunzip < /tmp/final.sql.gz | mysql -u root -p

# 5. 起服务
systemctl start nginx mysql
systemctl start palworld ark

# 6. 本地验证
curl -I http://localhost
ss -tulnp | grep -E '80|443|8211|7777'

关键点:第二步的增量 rsync 用 --delete,把旧机器上删掉的文件也同步删掉,保持一致。

四、切换域名和 IP

网站:切域名解析

域名控制台把 A 记录从旧 IP 改成新 IP。TTL 提前一天改成 60 秒,切换后全球生效快(几分钟);确认没问题后再把 TTL 调回去。

# 本地验证解析是否生效
dig yourdomain.com +short

游戏服:通知玩家换 IP

游戏没有域名机制(部分支持),直接群发新 IP + 端口:

服务器迁移公告
新地址: xxx.xxx.xxx.xxx:8211
(或 NAT 型: connect nat.xxx.com:20001)
迁移时间: 今晚 22:00-22:30
存档已完整迁移,进度不丢

NAT 型用户特别注意:NAT 机型是「内网 IP + 网关映射端口」,迁移后要:

  1. 控制台确认新实例的端口映射已配好(游戏端口、查询端口、RCON)
  2. 把新的「外网入口地址」发给玩家(一般是 映射域名:映射端口,不是机器的内网 IP)
  3. 游戏配置里如果写死了 IP,同步改掉

五、回滚预案

迁移最怕的是切过去发现起不来,玩家进不去。所以旧机器别急着退:

  • 切换后观察 24–48 小时
  • 旧机器的服务先停着但不要重装不要退,出问题 10 分钟内就能切回去
  • 确认稳定运行一周,再处理旧机器

真出问题回滚:域名解析改回旧 IP,游戏重新群发旧地址,服务在旧机器 systemctl start 拉起来即可(数据可能丢这一两天,总比全崩强)。

六、迁移后检查清单

  • [ ] 新机器时区、NTP 正常
  • [ ] 所有服务已启动并设为开机自启
  • [ ] 端口监听正常(ss -tulnp)
  • [ ] 网站外网能打开,HTTPS 正常
  • [ ] 游戏服外网能进,存档是迁移前的进度
  • [ ] 数据库数据条数对得上
  • [ ] crontab 已恢复,备份脚本能跑
  • [ ] 防火墙规则已配置(系统防火墙 + 安全组)
  • [ ] 监控已装,能收到告警
  • [ ] 域名解析已切,TTL 已调回
  • [ ] 旧机器观察期内不要退

七、常见问题

Q:rsync 传输慢,几十 G 要传到什么时候?
加 -z 压缩(文本类有效,游戏存档压缩比高);确认带宽没被别的占满;如果是跨国/跨运营商,考虑先打包再用对象存储中转。

Q:游戏存档迁过去读不了?
服务端版本不一致。先在旧机器记下服务端版本号,新机器用 SteamCMD 更新到同一版本再放存档。

Q:迁移后玩家 ping 变高?
新机器地域/线路和旧机器不同。选服务器时看玩家主要分布,南方玩家选华南节点,北方选华北。NAT 机型一般在骨干网,latency 表现不差。

Q:能不能不停服迁移?
普通方案做不到完全不停。数据库主从可以做到秒级切换,但游戏服有状态(玩家在线连接),必须断开重连。选玩家少的时段(比如工作日上午)做,影响最小。

Q:快照迁移是什么?
控制台把旧机器的整盘打成快照,用快照在新机器上创建系统盘/数据盘。适合数据量大、不想 rsync 的场景,云厂商控制台一般直接支持。

小结

迁移的顺序永远是:摸清家底 → 新机器装环境 → rsync 预热 → 停服增量同步 → 起服验证 → 切域名/IP → 观察期 → 退旧机。中断时间控制在半小时内完全做得到,关键数据不丢。

更多运维教程见财富云计算知识库:rsync 备份实战、网站迁移、磁盘挂载扩容、systemd 服务全系列。需要云服务器可以看看财富云计算:一键开服面板,NAT 型无独立公网 IP,价格比独立 IP 机型省一半以上。

延伸阅读
  1. 网站环境怎么选:LNMP 手动 / 宝塔面板 / Docker / 云开发
  2. 问卷表单系统搭建:SurveyKing / Formbricks,数据自己收
  3. 图床搭建:Lsky Pro / Lychee,自托管图片托管方案
  4. 邮件列表搭建:listmonk 自托管 Newsletter,把读者握在自己手里
  5. 文档站点搭建:MkDocs / VuePress / Docsify,产品文档与技术手册方案
  6. RSS 阅读器搭建:FreshRSS 自托管,把信息流拿回自己手里
  7. 短链接服务搭建:Shlink 自托管,链接数据自己掌握
  8. 网站状态监控页搭建:Uptime Kuma,服务器挂了第一时间知道
更多阅读
  1. 上一篇:云服务器重装系统与数据保留完整流程
  2. 下一篇:对象存储分离静态资源:给服务器减负的标配方案
发表评论 3

取消回复