MySQLを使っていて、スキーマを変更したい場合はAlterTableを流す必要があります。 すでに稼動しているサービスのスキーマを変更する際に、可能な限り稼働中システムに影響を与えずにスキーマの変更を行いたいです。 理想はオンライン状態を保った状態でAlterTableが全て完了することで、これが実現できれば少なくともスキーマ変更に伴うメンテナンスのためのダウンタイムが発生しません。 これを実現するためには幾つか方法が存在し、制約もあるみたいなので調べてまとめてみました。 その前にAlterTableのこれまでの挙動を調べる オンラインでのスキーマ変更を調べる前に、まずはAlterTableのこれまでの挙動(MySQL5.1まで)について簡単にまとめてみます。これによってオンラインスキーマ変更のために何が問題になっているか?が理解できると思います。 MySQL5.1までのAlterTab
![MySQLのスキーマ変更をオンラインでやるための選択肢比較 - Qiita](https://cdn-ak-scissors.b.st-hatena.com/image/square/9df5356f6d2bdc077c98d13ea257054eb9903390/height=288;version=1;width=512/https%3A%2F%2Fqiita-user-contents.imgix.net%2Fhttps%253A%252F%252Fcdn.qiita.com%252Fassets%252Fpublic%252Farticle-ogp-background-9f5428127621718a910c8b63951390ad.png%3Fixlib%3Drb-4.0.0%26w%3D1200%26mark64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTkxNiZoPTMzNiZ0eHQ9TXlTUUwlRTMlODElQUUlRTMlODIlQjklRTMlODIlQUQlRTMlODMlQkMlRTMlODMlOUUlRTUlQTQlODklRTYlOUIlQjQlRTMlODIlOTIlRTMlODIlQUElRTMlODMlQjMlRTMlODMlQTklRTMlODIlQTQlRTMlODMlQjMlRTMlODElQTclRTMlODIlODQlRTMlODIlOEIlRTMlODElOUYlRTMlODIlODElRTMlODElQUUlRTklODElQjglRTYlOEElOUUlRTglODIlQTIlRTYlQUYlOTQlRTglQkMlODMmdHh0LWNvbG9yPSUyMzIxMjEyMSZ0eHQtZm9udD1IaXJhZ2lubyUyMFNhbnMlMjBXNiZ0eHQtc2l6ZT01NiZ0eHQtY2xpcD1lbGxpcHNpcyZ0eHQtYWxpZ249bGVmdCUyQ3RvcCZzPTYwZDE3YTQ0OTM5OGJiY2Y4OTI2MGI4YmNiZmRlZTYy%26mark-x%3D142%26mark-y%3D112%26blend64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTYxNiZ0eHQ9JTQwbWFzYW1hc2EmdHh0LWNvbG9yPSUyMzIxMjEyMSZ0eHQtZm9udD1IaXJhZ2lubyUyMFNhbnMlMjBXNiZ0eHQtc2l6ZT0zNiZ0eHQtYWxpZ249bGVmdCUyQ3RvcCZzPTg2NTRmMjYzZWE5Y2UyYzcxZTZkMTcyYzExYmRmYTgw%26blend-x%3D142%26blend-y%3D491%26blend-mode%3Dnormal%26s%3D66c910185235a7cd3b3605807b9c4980)