跳转到内容

Environment Merge

Environment Merge 功能允许您将一个环境(源)的架构更改应用到另一个环境(目标)。这是在整个开发生命周期中传播结构更改(如新表、列、视图和枚举)的核心操作。


合并过程设计为安全、可预测和透明:

  1. 选择: 选择源环境(更改的来源)和目标环境(要应用更改的位置)。
  2. 分析: 系统执行 diff 以识别目标环境中缺少的所有更改。
  3. 审查和 Cherry-pick: 审查检测到的更改并选择性地选择要应用的更改。
  4. 自动备份: 在应用任何更改之前,Archie Core 会创建目标环境数据和结构的完整备份。
  5. 原子应用: 选定的更改作为单个操作应用。如果合并的任何部分失败,整个操作将自动回滚。

Archie Core 在合并期间保证您的生产和暂存环境的完整性:

  • 事务性更新: 所有架构更改在单个事务内应用。这意味着要么所有选定的更改成功应用,要么都不应用 — 防止您的数据库进入部分迁移状态。
  • 环境锁定: 合并进行时,目标环境被锁定以防止并发配置更改。
  • 自动合并前备份: 执行前始终创建“安全网”备份。如果合并成功但您稍后发现问题,可以使用 Backups 页面恢复到合并前的确切状态。

合并界面允许对要移动的内容进行细粒度控制:

  • 单独选择: 切换特定更改(如单个列添加或新索引),而无需合并整个分支。
  • 组操作: 快速选择或取消选择与特定表或视图相关的所有更改。
  • Breaking 更改保护: 破坏性操作(如删除列)默认不预选。您必须显式选择这些更改以防止意外数据丢失。

每次合并操作都记录在集中式审计跟踪中。环境的历史页面显示:

  • 审计日志: 谁发起了合并、涉及哪些环境以及何时发生。
  • 更改摘要: 创建、修改或删除内容的清晰分解。
  • 可追溯性: 迁移期间执行的特定 SQL 命令的文档。
  • 备份链接: 直接访问为该迁移专门创建的自动备份。

如果您需要撤销合并,应使用 Backups 页面将环境恢复到“合并前”状态。

注意: 与简单的撤销不同,恢复操作会将整个数据库恢复到以前的时间点。我们建议在合并到生产环境之前在暂存环境中验证更改。


mutation MergeEnvironments($input: MergeEnvironmentInput!) {
mergeEnvironments(input: $input) {
success
message
migrationId
changesApplied
backupId
}
}
query MigrationHistory($projectId: ID!, $environment: String) {
migrationHistory(projectId: $projectId, environment: $environment) {
id
sourceEnvironment
targetEnvironment
status
appliedBy
appliedAt
changes {
changeType
objectName
sql
isBreaking
}
backupId
}
}