Skip to content
shift is an application that helps you run schema migrations on MySQL databases
Ruby Go JavaScript HTML CSS
Branch: master
Clone or download

Latest commit

Latest commit 5ff0f45 Feb 29, 2020


Type Name Latest commit message Commit time
Failed to load latest commit information.
ptosc-patch Make the copy % number in pt-osc more accurate Jul 17, 2017
runner Update Dec 25, 2018
ui Merge pull request #77 from square/dependabot/bundler/ui/rake-13.0.1 Feb 29, 2020 Initial commit Apr 14, 2016
LICENSE.txt Initial commit Apr 14, 2016 Adding link to install guide in README Apr 15, 2016


shift is an application that makes it easy to run online schema migrations for MySQL databases

Who should use it?

shift was designed to solve the following problem - running schema migrations manually takes too much time. As such, it is most effective when schema migrations are taking up too much of your time (ex: for an operations or DBA team at a large organization), but really it can be used by anyone. As of writing this, shift has had no problem running hundreds of migrations a day or running migrations that take over a week to complete.


  • safe, online schema changes (invokes the tried-and-true pt-online-schema-change)
    • supports all "ALTER TABLE...", "CREATE TABLE...", or "DROP TABLE..." ddl
  • a ui where you can see the status of migrations and run them with the click of a button
  • self-service - out of the box, any user can file and run migrations, and an admin is only required to approve the ddl (this is all configurable though)
  • shard support - easily run a single migration on any number of shards


shift consists of 3 components. Each component has its own readme with more details

  • ui: a rails app where you can file, track, and run database migrations
  • runner: a go agent that consumes jobs from an api exposed by the ui
  • pt-osc patch: a patch for pt-online-schema-change from the percona toolkit


Watch a demo video here


Read the installation guide here


Copyright (c) 2016 Square Inc. Distributed under the Apache 2.0 License. See LICENSE file for further details.

You can’t perform that action at this time.