Zone 域名迁移与发布验收
从旧版 managed_domains / 反代路由内嵌域名列迁移到 Zone + Zone 域名模型时,数据导入与表结构升级均由 Server 启动时的 goose 自动迁移完成,无需单独执行导入命令。
升级时发生了什么
启动(或滚动升级)包含 Zone 改造的 Server 版本时,无需手动命令,migrator.Migrate() 自动:
- 应用 goose SQL:创建
of_zones/of_zone_domains(若尚未存在)。 - 自动导入旧路由域名列(及无路由域名时的
of_managed_domains)为 Zone / Zone 域名,并绑定proxy_route_id/cert_id(公共后缀列表解析注册根域)。 - 继续 goose SQL:删除
of_managed_domains与of_proxy_routes冗余域名/证书列。
导入幂等:已存在的域名会跳过或补绑路由。
若历史数据无法解析(冲突域名、无效根域、证书不存在等),启动失败。 修复数据或恢复备份后再次启动即可重试。
建议操作
1. 升级前备份
bash
# PostgreSQL 示例
pg_dump "$DATABASE_URL" > openflare-pre-zone-$(date +%Y%m%d).sql
# 或复制备份卷 / 快照;SQLite 则复制 data 目录中的库文件可选:在管理端记下当前激活配置版本号与 checksum,便于配置回滚对比。
2. 升级并启动 Server
部署新版本并启动即可。观察启动日志中的 goose 成功信息;若出现「迁移 Zone 失败(N 个冲突)」则按日志中的冲突项修复源数据后重启。
3. 升级后检查
- 管理端 网站
/websites:Zone 根域与域名计数是否合理。 - Zone 详情:域名、证书、关联路由 ID。
- 反代路由:域名绑定来自 Zone 域名,而非旧手写字段。
4. 配置预览与发布
- 在管理端查看配置差异 / 预览。
- 逐路由核对:
server_name集合、证书路径、WAF Route ID、Pages 引用。 - 允许旧快照 JSON 中路由上的冗余
domain/domains/cert_ids消失。 - 不允许数据面语义变化。
- 预览通过后发布;需要时在配置版本中激活升级前版本做配置回滚。数据库回退请使用升级前备份(Down 迁移不回填业务域名数据)。