- name
- manage-database-schema-changes
- category
- code
- description
- Manage database schema changes through compatible expansion, backfill, dual behavior, validation, contraction, and rollback-aware release order. Use when live applications and data evolve together.
# manage-database-schema-changes
Keep old and new application versions compatible during rollout.
## When to use
- Use for tables, columns, types, constraints, indexes, relationships, partitions, or ownership changes.
- Do not combine destructive schema change, full backfill, and application switch in one unverified release.
## Procedure
1. Inventory readers, writers, jobs, reports, replicas, constraints, volume, locks, and rollback needs.
2. Define target invariant and mixed-version compatibility window.
3. Expand with additive nullable or backward-compatible structures and safe indexes.
4. Deploy code that can read old and new state and write according to a documented transition.
5. Backfill in restartable, throttled batches with checkpoints and reconciliation.
6. Validate completeness and introduce constraints using low-lock techniques.
7. Switch reads, stop old writes, observe, and prove no old consumer remains.
8. Contract obsolete structures only after retention and rollback gates expire.
9. Test production-shaped load, lock behavior, replica lag, failure, resume, and rollback.
## Done
- A schema-change plan records consumers, compatibility stages, backfill, validation, constraints, release order, and contraction gates
- Rehearsal proves lock bounds, restart, reconciliation, mixed-version behavior, rollback, and final invariants
在 GitHub 查看