请先准备并测试新服务器,使用应用支持的一致性方法复制数据,定义切换窗口并保留旧环境。回滚必须考虑新服务器已接受的写入,而不仅仅是 DNS 变更。
迁移机器前先清点服务
迁移不仅包括应用文件。请列出数据库、上传内容、计划任务、队列工作进程、证书、域名、密钥和出站集成。记录软件版本以及重要的运行假设,例如文件权限和存储路径。全新的专用服务器可能会暴露旧环境中多年前悄悄安装而被遗忘的依赖项。
为切换决定指定负责人,并定义成功的样子。纳入用户可见的检查、数据一致性以及恢复访问的能力。在宣布迁移日期前,确认新配置已交付并可用。订单确认或列出的硬件规格并不等同于一个可接收生产数据的工作目标环境。
将目标环境构建为独立环境
安装所需技术栈,建立管理访问并配置预期防火墙。请对密钥保密,并有意识地设置服务权限。在公共流量迁移前,核实应用预期的主机名和证书行为。Apache 的虚拟主机文档说明了为什么主机名路由是与服务器地址不同的配置决定。默认页面正常工作并不能证明已配置正确的应用主机。
请使用具有代表性的恢复数据集进行演练,并禁用出站电子邮件、付款和计划任务,或将其重定向到安全的测试系统。这可以防止测试环境对真实用户采取操作。请演练登录、上传、后台工作和恢复。记录流程及其耗时,以便真实窗口基于观察到的过程,而不是乐观估计。
选择一致的数据边界
请使用数据库和应用支持的备份或复制方法。PostgreSQL 区分了 SQL 转储、文件系统备份和连续归档,每种方法都有自己的假设。其转储指南指出,数据库转储可以在内部保持一致,而集群范围的角色和其他细节需要单独处理。请阅读你所运行的确切系统的要求,而不是不加区分地复制打开的数据文件。
请规划数据库与上传内容和队列状态之间的关系。如果某条记录指向的文件是在不同时间复制的,即使两份副本各自都成功,恢复后的应用也可能不完整。请决定是短暂暂停写入、使用经过测试的复制方案,还是执行特定于应用的导出。请在运行手册中明确这一一致性决定。
| 阶段 | 所需证据 | 决定 |
|---|---|---|
| 演练 | 应用和恢复的数据通过检查 | 目标环境可考虑切换 |
| 最终同步 | 已定义的一致恢复点 | 仅在了解剩余变更的情况下继续 |
| 流量切换 | 正确的路由和证书行为 | 监控两个目标环境 |
| 回滚 | 所有新接受写入的位置 | 在恢复流量前对账数据 |
准备流量路由,但不要承诺即时切换
DNS 的生存时间控制记录可被缓存多久,如 Cloudflare 的 DNS 文档所述。如果 DNS 是迁移的一部分,请尽早审查 TTL,并让现有缓存记录按其先前设置自然过期。在切换时更改该值无法追溯缩短每个缓存应答。在过渡期间,不同客户端可能到达不同目标环境。
在路由变更稳定期间保持旧环境可用,并制定明确策略说明它是否仍可接受写入。除非应用为此设计,否则避免运行重复的队列消费者或计划任务。监控两侧的请求,并从独立客户端确认预期主机名、TLS 证书和应用版本。
定义写入开始后的回滚方案
在新系统接受更改之前,回退流量可能相对简单。之后,仅靠一次 DNS 反转就可能丢失工作或产生两个相互冲突的历史记录。请定义新建记录和上传内容将如何被保留或协调。如果应用程序无法安全地合并它们,那么受控的维护期可能比草率地回退到旧副本更可取。
设定需要暂停迁移的条件,并保持决策负责人可联系。按照项目的保留规则保存日志和有用的证据。不要仅仅因为主页加载过一次就删除旧机器或其独立恢复副本。保留期应涵盖约定的验证和回滚需求。
通过运营检查完成迁移
切换后,验证备份、告警、证书续期、计划任务和访问恢复。确认被监控的主机是新目标,并且生产环境中没有残留的测试集成。在正常流量下检查应用程序错误和用户可见的耗时。更新清单和运行手册,以便下一位管理员不必推断发生了什么变化。
SwissOctet 的专用系列提供不同的物理配置,但迁移工作和托管协助必须针对所选服务进行确认。使用目录选择适合的资源,然后围绕应用程序的数据构建经过测试的迁移方案。当服务及其恢复流程在目标端正常工作时,迁移才算完成,而不仅仅是文件已被传输。
您的实用清单。
- 清点数据、作业、密钥和集成。
- 在安排时间之前验证交付的目标环境。
- 使用安全的外部集成进行演练。
- 定义数据库和上传内容的一致性。
- 规划路由切换和防止重复作业。
- 为新写入指定回滚方案。
- 切换后验证备份和监控。
重要细节。
我可以通过复制应用程序目录来迁移吗?+
只有当这能捕获服务所需的一切并保持一致性时才可以。数据库、上传内容、作业、密钥和配置通常需要单独处理。
降低 DNS TTL 能让切换瞬间完成吗?+
不能。之前缓存的应答可能会保留到其较早的生命周期结束,而且客户端可能在不同时间更新。
回滚只是把 DNS 指向旧服务器吗?+
在新服务器接受写入之后就不是了。在回退流量之前,你必须处理那些记录和文件。
前往来源。
这些参考资料支持本指南中的技术概念。在更改生产系统之前,请遵循当前文档。
- PostgreSQL:备份与恢复 www.postgresql.org
- PostgreSQL:SQL 转储的一致性与恢复 www.postgresql.org
- Apache:虚拟主机文档 httpd.apache.org
- Cloudflare DNS:生存时间 developers.cloudflare.com
由 SwissOctet 提供编辑指导。示例仅作说明。服务规格、可用选项和合同条件必须单独核实。