The best way to manage MySQL table definitions

Skeema is a pure-SQL schema management utility. Simply track your desired schema state in a repo of CREATE statements, and the tool figures out how to apply any changes to your tables and routines. You won't need to code migrations, use obscure DSLs, or write verbose XML ever again.

Skeema’s open source CLI tool supports all modern versions of MySQL, MariaDB, and Percona Server. Written in Golang, it’s a native binary with no system dependencies.

Export with ease

Skeema makes it easy to get started with tracking your table definitions in a repo. Each .sql file contains a CREATE TABLE statement, and each directory has a .skeema config file controlling options for one logical schema.

Diff, Push, and Pull Schemas

Simply modify the CREATE TABLE statements in your schema files, or add new ones. Skeema generates SQL DDL statements to reach the state expressed by the files.

Manage multiple environments

Configure any number of named environments — e.g. separate development, staging, or production systems.

A single skeema push can bring any environment up-to-date, regardless of what state it’s in.

Online schema change friendly

Have large tables? Skeema can optionally use external tools like pt-online-schema-change, or built-in MySQL options for online DDL.

You can even configure different execution methods depending on table size, schema, cluster, or environment.

Handle any DB layout

Whether you have just a single DB instance or complex sharded topology, Skeema's configuration system is designed to scale to your requirements.