MySQLを使っていて、スキーマを変更したい場合はAlterTableを流す必要があります。 すでに稼動しているサービスのスキーマを変更する際に、可能な限り稼働中システムに影響を与えずにスキーマの変更を行いたいです。 理想はオンライン状態を保った状態でAlterTableが全て完了することで、これが実現できれば少なくともスキーマ変更に伴うメンテナンスのためのダウンタイムが発生しません。 これを実現するためには幾つか方法が存在し、制約もあるみたいなので調べてまとめてみました。 その前にAlterTableのこれまでの挙動を調べる オンラインでのスキーマ変更を調べる前に、まずはAlterTableのこれまでの挙動(MySQL5.1まで)について簡単にまとめてみます。これによってオンラインスキーマ変更のために何が問題になっているか?が理解できると思います。 MySQL5.1までのAlterTab