Environment Merge
Environment Merge 功能允许您将一个环境(源)的架构更改应用到另一个环境(目标)。这是在整个开发生命周期中传播结构更改(如新表、列、视图和枚举)的核心操作。
Merge 如何工作
Section titled “Merge 如何工作”合并过程设计为安全、可预测和透明:
- 选择: 选择源环境(更改的来源)和目标环境(要应用更改的位置)。
- 分析: 系统执行 diff 以识别目标环境中缺少的所有更改。
- 审查和 Cherry-pick: 审查检测到的更改并选择性地选择要应用的更改。
- 自动备份: 在应用任何更改之前,Archie Core 会创建目标环境数据和结构的完整备份。
- 原子应用: 选定的更改作为单个操作应用。如果合并的任何部分失败,整个操作将自动回滚。
安全与可靠性
Section titled “安全与可靠性”Archie Core 在合并期间保证您的生产和暂存环境的完整性:
- 事务性更新: 所有架构更改在单个事务内应用。这意味着要么所有选定的更改成功应用,要么都不应用 — 防止您的数据库进入部分迁移状态。
- 环境锁定: 合并进行时,目标环境被锁定以防止并发配置更改。
- 自动合并前备份: 执行前始终创建“安全网”备份。如果合并成功但您稍后发现问题,可以使用 Backups 页面恢复到合并前的确切状态。
Cherry-Pick 选择
Section titled “Cherry-Pick 选择”合并界面允许对要移动的内容进行细粒度控制:
- 单独选择: 切换特定更改(如单个列添加或新索引),而无需合并整个分支。
- 组操作: 快速选择或取消选择与特定表或视图相关的所有更改。
- Breaking 更改保护: 破坏性操作(如删除列)默认不预选。您必须显式选择这些更改以防止意外数据丢失。
每次合并操作都记录在集中式审计跟踪中。环境的历史页面显示:
- 审计日志: 谁发起了合并、涉及哪些环境以及何时发生。
- 更改摘要: 创建、修改或删除内容的清晰分解。
- 可追溯性: 迁移期间执行的特定 SQL 命令的文档。
- 备份链接: 直接访问为该迁移专门创建的自动备份。
如果您需要撤销合并,应使用 Backups 页面将环境恢复到“合并前”状态。
注意: 与简单的撤销不同,恢复操作会将整个数据库恢复到以前的时间点。我们建议在合并到生产环境之前在暂存环境中验证更改。
开发者 API (GraphQL)
Section titled “开发者 API (GraphQL)”Mutation: mergeEnvironments
Section titled “Mutation: mergeEnvironments”mutation MergeEnvironments($input: MergeEnvironmentInput!) { mergeEnvironments(input: $input) { success message migrationId changesApplied backupId }}Query: migrationHistory
Section titled “Query: migrationHistory”query MigrationHistory($projectId: ID!, $environment: String) { migrationHistory(projectId: $projectId, environment: $environment) { id sourceEnvironment targetEnvironment status appliedBy appliedAt changes { changeType objectName sql isBreaking } backupId }}