Workflow
From file to cluster and back
new0007_add_email.cql
→
verifyreplay offline
→
diffschema/ vs migrations
→
uplock, apply, record
→
driftcluster vs migrations
State of every migration
status, with exit code 1 on problems
appliedpendingCHANGEDFAILEDRUNNINGMISSING
Tested on
full lifecycle in CI
ScyllaDBCassandra 5.0Cassandra 4.1 in CI
Apply, checksum protection, failure and resolve, lock, drift.
Safe by design
What it protects you from
SHA-256
over tokens: comments and format do not matter
LWT lock
one runner at a time, TTL
agreement
waits after every DDL
no rollback
DDL cannot be undone; failures are recorded
In CI
Keep schema files and migrations in sync
cql-migrate verify # replay all migrations with cqlc-core
cql-migrate diff schema/ # exit 1 if schema/ and migrations/ disagree
cql-migrate up # lock, apply, record
cql-migrate drift # did somebody ALTER production by hand?