The only migration tool that manages YugabyteDB as YugabyteDB. Colocation, geo-partitioned tablespaces, xCluster DDL sequencing, and tablegroup lifecycle — versioned in YAML. Other tools treat YugabyteDB as plain PostgreSQL and stop there.
Other tools connect to YSQL port 5433 and run SQL. ybchange goes further — it understands what makes YugabyteDB different and manages those features as first-class migration objects.
colocation_id to be identical on source and target universes. ybchange is the only tool that versions colocation_id as part of the migration — Other tools have no concept of colocation at all. If you set up xCluster without matching colocation IDs, replication bootstrap fails silently.replica_placement JSON with cloud/region/zone/min_replicas constraints that control where data physically lives. ybchange versions these placement policies as YAML — including multi-region failover and data residency for GDPR.SQL handles tables and indexes. YAML handles everything else — the distributed topology configuration that Other tools have no vocabulary for.
ybchange rollback --tag release-2.1 — undoes all migrations applied under that tag, newest first.ybchange status --tag release-2.1 to see exactly what shipped.Other tools connect to port 5433 and calls it done. ybchange manages the distributed topology layer.
| Capability | ybchange | Other tools | Plain psycopg2 |
|---|---|---|---|
| SQL DDL migrations | ✓ | ✓ | manual |
| Colocation + colocation_id | ✓ YAML | ✗ | ✗ |
| Geo-partitioned tablespaces | ✓ YAML | ✗ | ✗ |
| xCluster DDL sequencing hints | ✓ advisory | ✗ | ✗ |
| Tablegroup lifecycle | ✓ YAML | ✗ | ✗ |
| psycopg2 RealDictCursor workaround | ✓ adapt() | ✗ | ✗ |
| Release tagging + grouped rollback | ✓ | basic | ✗ |
| Drift detection | ✓ | ✗ | ✗ |
| OLS capacity projections | ✓ 180-day | ✗ | ✗ |
| Baseline generation | ✓ SQL + YAML | SQL only | ✗ |
| Immutable audit log | ✓ | basic | ✗ |