# VPS 迁移清单：备份、DNS、TLS 和回滚

[VPS 迁移清单：备份、DNS、TLS 和回滚](<https://silentvps.com/zh-cn/blog/vps-migration-checklist.html>)

更新于 2026-10-15

自托管应用程序的实用迁移顺序：清点、一致备份、经过测试的目标、受控写入、DNS 切换和恢复路径。

受控 VPS 迁移会清点服务和数据、创建一致备份、验证已恢复的目标、测试主机名和 TLS 路由、协调最终写入和 DNS，并保留数据感知的回滚。没有任何清单能单独保证零停机时间。

## 在移动应用程序之前清点它

列出应用程序工作所需的服务、版本、端口、计划任务、数据库、上传文件和配置。确定写入发生的位置以及它依赖哪些外部服务。当数据位于别处时，复制的 Web 目录并不是完整迁移。

记录当前 DNS 名称、活动 IPv4 和 IPv6 记录、证书续期方法和恢复访问路径。将机密保存在你的私有部署工具中。不要将密码、私钥或数据库转储放入公共文档根目录或共享迁移清单。

## 创建一致备份并证明其可恢复

使用数据库支持的备份机制，而不是在写入继续时复制任意文件。对于 SQLite，Online Backup API 创建一致的数据库快照。在 WAL 模式下，WAL 文件参与持久数据库状态，因此仅复制主数据库文件可能会遗漏已提交的更改。

一致的数据库备份并不自动与单独存储的上传、队列或文件保持一致。请与你的应用程序协调捕获它们。恢复到单独的测试位置，并在将备份视为可用之前验证记录、文件引用和应用程序行为。

## 在更改 DNS 之前准备目标

在新服务器上创建预期的用户、权限、运行时版本、服务和应用程序目录。将测试备份恢复到其目标数据位置，适当时放在公共 Web 根目录之外。使用实际运行应用程序的服务账户检查所有权和访问权限。

保留共享服务器上的无关站点。使用专用文档根目录、虚拟主机和运行时，验证 Web 服务器配置，并准备仅恢复此更改拥有的文件和配置的回滚。

## 在新服务器上测试真实主机名和证书

对裸 IP 地址的浏览器请求不会重现基于主机名的路由或证书验证。curl --resolve 允许测试使用预期主机名和选定的目标 IP，同时保留正常主机名和 TLS 检查。还要检查 HTTP 状态和预期的应用程序内容。示例使用仅文档值；请将它们替换为你自己已验证的域名和目标。

该测试必须已经存在有效证书和允许的网络路径才能通过。切勿禁用证书验证来宣称迁移就绪。基于 DNS 的 ACME 验证可以在不更改其 Web 服务器地址的情况下验证域；基于 HTTP 的验证具有不同的可达性要求。将续期与初始签发分开测试。

```
curl --fail-with-body --show-error --resolve example.com:443:203.0.113.10 https://example.com/
```

## 选择写入控制和最终同步计划

安排短暂的维护期或另一种适合应用程序的一致性机制。停止或重定向你识别出的写入者，进行最终一致数据库备份，同步相应的可变文件并验证结果。即使公共界面看起来很安静，队列工作进程、Webhook 和 cron 任务也可能写入。

在文件同步之前进行试运行。不要添加删除标志或复制整个系统目录作为捷径。保持旧服务可恢复，直到你检查了新应用程序并确定哪个位置对写入具有权威性。

## 更改 DNS，然后观察两种地址族

更新服务所需的记录，并考虑现有解析器缓存。检查权威答案和多个正常客户端路径。如果过时的 AAAA 记录仍然活动，IPv6 客户端可能会继续到达旧服务器，而 IPv4 客户端到达新服务器。

在新服务上测试登录、读取、写入、上传、后台任务和外部回调。在过渡期间避免运行同一应用程序的两个独立可写副本。为仍到达旧目标的流量保持明确规则。

## 让回滚既是数据决策，也是 DNS 决策

定义触发回滚的故障条件以及谁控制切换。在新写入已到达目标之后，仅还原 DNS 是不够的：在返回到较旧副本之前，必须保留或协调该数据。

在适当的恢复期内保留源和备份。只有在目标、备份、续期和监控都已检查后，才移除旧访问权限并停用资源。保留和删除应遵循实际服务政策，而不是通用的固定小时数。

## 问题解答

### 我可以直接复制活动的 SQLite 数据库文件吗？

不要假设从活动数据库复制一个文件会产生完整、一致的备份。使用受支持的备份方法并考虑 WAL 状态。还要协调存储在数据库之外的文件。

### 更改 DNS 记录会移动我的应用程序数据吗？

不会。DNS 将未来的名称解析指向一个地址。应用程序文件、数据库、机密和后台服务需要单独的迁移和验证过程。

### 我能用此清单承诺零停机时间吗？

不能。停机时间和一致性取决于应用程序、流量、数据和切换方法。该清单帮助你准备和测试受控移动；它不是零停机保证。

## 为您的下一步决策找到指南

- [根据测量需求确定目标规模](<https://silentvps.com/zh-cn/vps-sizing-calculator.html.md>)
- [理解客户机和主机控制](<https://silentvps.com/zh-cn/kvm-vps-root-access.html.md>)
- [规划你的自托管工作负载](<https://silentvps.com/zh-cn/private-self-hosting-vps.html.md>)
- [探索 VPS 资源](<https://silentvps.com/zh-cn/resources.html.md>)

## 官方参考

- [SQLite Online Backup API](<https://www.sqlite.org/backup.html>)
- [SQLite 预写日志](<https://www.sqlite.org/wal.html>)
- [curl 手册：主机名解析覆盖](<https://curl.se/docs/manpage.html>)
- [ACME 质询类型](<https://letsencrypt.org/docs/challenge-types/>)
- [rsync 手册](<https://download.samba.org/pub/rsync/rsync.1>)
