Automatic MySQL schema management with Skeema

Automatic MySQL schema management with Skeema

Learn about an open source tool that helps make managing database schemas easy and replicable.

Cloud and databsae incons
Image credits : 
Jason Baker. CC BY-SA 4.0.

Subscribe now

Get the highlights in your inbox every week.

At this year's Percona Live open source database conference, I'll be discussing automatic MySQL schema management with Skeema. Skeema solves many problems that software engineers and DBAs encounter when managing migrations. How can they keep schemas in sync across development, staging, and production systems? How can they execute an online schema change across a sharded environment, integrating with service discovery? How can developers use a self-service, pull-request-based workflow for migrations? Skeema helps address these challenges and more.

I first started using MySQL at a college IT job in 2003, and over the years I eventually began tackling much larger-scale deployments at Tumblr and Facebook. I’ve spent most of the past decade working on social networks, where massive high-volume database technology is fundamental to the product. I love the technical challenges present in that type of environment, as well as the huge potential impact of database automation and tooling. In companies with giant databases and many engineers, a well-designed automation system can provide a truly enormous increase in productivity.

My talk this year is called Automatic MySQL Schema Management with Skeema. Skeema is an open source tool for managing MySQL schemas and migrations. It allows users to diff, push, or pull schema definitions between the local filesystem and one or more databases. It can be configured to support multiple environments (e.g. development/staging/production), external online schema change tools, sharding, and service discovery. Once configured, an engineer or DBA can use Skeema to execute an online schema change on many shards concurrently simply by editing a CREATE TABLE statement in a file and then running skeema push.

The whole industry is moving towards infrastructure-as-code solutions, providing automated configuration which is reproducible across multiple environments. In extending this concept to database schemas, a file repository stores the desired state of each table, and a schema change is tied to simply changing these files. A few large companies like Facebook have internal closed-source tools to tie MySQL schemas to a git repo, allowing schema changes to be powered by pull requests (without any manual DBA effort). There hasn’t previously been an open source, general-purpose tool for managing schemas and migrations in this way, however. I developed Skeema to fill this gap.

In this session, MySQL DBAs will learn how to automate their schema change workflow to reduce manual operational work, while software engineers will discover how Skeema permits easy online migrations even in frameworks like Rails or Django. Skeema is a brand new tool, and this is the first conference session to introduce it. At this relatively early stage, feedback and feature requests from attendees will greatly influence the direction and prioritization of future development.

Skeema is written in the Go programming language, and is currently in public beta. Binaries may be compiled on MacOS or Linux. You can find the source code for Skeema on GitHub under an Apache 2.0 open source license, as well as complete documentation.

Register for Percona Live Data Performance Conference 2017, and see Evan present his session on Automatic MySQL Schema Management with Skeema. Use the code FeaturedTalk and receive $100 off the current registration price!


About the author

Evan Elias - Evan Elias is a software engineer and database automation expert. Originally engineer #4 at Tumblr, he recently returned to the company as director of engineering where he oversees several backend engineering teams. Evan was previously a member of Facebook's MySQL Infrastructure team, where he deployed GTID to the world's largest MySQL fleet, and led development of the company's internal DBaaS platform. He has been using MySQL since 2003.