介绍 pgroll:由 Carlos Pérez-Aradros Herce 为 Postgres 提供的零停机、可逆的模式迁移

主要观点:数据库模式迁移是一把双刃剑,虽重要但带来诸多挑战,如潜在的破坏性变更、多步骤操作、意外数据库锁及难以回滚等,导致许多开发者避免复杂迁移,积累技术债务;而pgroll是一个开源命令行工具,用于对 Postgres 数据库进行模式迁移,基于特定原则设计,能让迁移更安全、易定义和执行、可纳入正常部署流程、易快速回滚且无需特殊编排。
关键信息

  • 模式迁移的挑战:包括破坏应用、多步骤复杂、导致数据库锁及难回滚等。
  • pgroll的特点:以高级 JSON 格式定义迁移,在迁移过程中同时保留前后版本 schema 可避免风险,即时回滚,零停机,通过 expand 和 contract 模式自动化数据库模式生命周期,处理数据回填等。
  • pgroll的工作原理:利用 expand 和 contract 模式,在 Postgres 物理模式之上创建“虚拟”模式,通过表视图暴露和隐藏不同部分的 schema,避免 DDL 导致的数据访问阻塞,自动处理数据回填等。
    重要细节
  • 如更改列的NOT NULL约束等复杂迁移,pgroll可在不影响现有客户端应用的情况下完成,通过创建新列、添加约束、数据回填、设置触发器等步骤实现。
  • 有丰富的模式迁移示例在pgrollexamplesdocs中。
  • 目前推出pgroll的第一个版本,欢迎反馈,可在 GitHub 仓库提 issue、在 Discord 联系或在 X/Twitter 关注。
阅读 14
0 条评论