Define every schema or infrastructure change once, in version control, and roll it out reliably across all your databases and data processing systems with a single command.
Say a single release must touch an operational PostgreSQL database, a BigQuery data warehouse, a Bigtable key-value store, and a Kafka topic whose configuration must be in place before the first message arrives — with the guarantee that all of it lands in the right sequence.
Traditional schema change tools are excellent for a single database. They fall short the moment a release must touch multiple systems at once: the gap is typically filled with runbooks, shell scripts, and careful humans — all of which fail in ways that are hard to detect and hard to reverse.
TotalSchema is designed for exactly that gap. Changes in one place. One command. All systems updated, in order.
Apply changes consistently across every tier of your data platform.
Oracle, PostgreSQL, MySQL, SQL Server, and any JDBC-compatible database.
BigQuery, Redshift, Snowflake, and other cloud-native data warehouses.
BigTable, HBase, MongoDB, Cassandra, and similar distributed stores.
Linux/Unix servers via SSH, cloud services, and configuration file management.
Kafka topic creation, partition and retention settings, schema registry entries—versioned and applied like any other change.
Custom connectors for proprietary or legacy systems are first-class citizens—invoked and scripted exactly like built-in connectors.
A focused, production-ready feature set—no bloat.
Each change targets one system and has a defined position in the global execution order—so multi-system releases always run in exactly the sequence you intend.
A persistent state table records every applied change, with optional content hashing to detect tampering.
SQL, Shell, Groovy, and any JVM scripting language your team already knows—JavaScript, Kotlin Script, JRuby, and more (via JSR-223).
Run once, run always, run on content change, or revert—each script declares its own lifecycle.
Separate configurations, variables, and system targets for DEV, QA, PROD, and any custom environment.
Powerful variable system with environment overrides, expression evaluation, and encrypted secret support.
Optional database-backed locking prevents concurrent executions across your team or CI/CD pipeline.
Deploy an arbitrary subset of changes—no forced linear versioning. You decide what runs and when.
Built-in detection of change scripts that were modified after being applied—safeguarding deployment integrity.
Pick the approach that fits your workflow.
Download, extract, add your JDBC drivers, and run. No build tool required—ideal for ops teams and CI/CD pipelines.
CLI Usage Guide →Integrate directly into your Maven build lifecycle. JDBC drivers are managed as Maven dependencies.
Maven Plugin Guide →Embed TotalSchema programmatically in your application for maximum flexibility and control.
Java API Guide →# Download and extract the CLI distribution
export TOTALSCHEMA_VERSION=1.2.0
wget https://repo1.maven.org/maven2/io/github/totalschema/totalschema-release/${TOTALSCHEMA_VERSION}/totalschema-release-${TOTALSCHEMA_VERSION}.tar.gz
tar -xzf totalschema-${TOTALSCHEMA_VERSION}.tar.gz && cd totalschema-${TOTALSCHEMA_VERSION}
# Add your JDBC driver and apply changes to DEV
cp postgresql-42.7.3.jar user_libs/
bin/totalschema.sh apply -e DEV