オンラインDDL MySQLでテーブル構成を変更する際にテーブルロックせずに変更する

MySQL オンラインDDL(ロックなしによるサービス無停止でDDLを流す方法) パターン集 - Qiita

DDLに ALGORITHM=INPLACE, LOCK=NONE を追加することでオンラインDDLが適用できない場合はエラーメッセージを出してくれる。

 

ALTER TABLE dummy ADD COLUMN added_col INT NULL, ALGORITHM=INPLACE, LOCK=NONE;

 

 

 

MySQL 5.6 のオンラインDDLについて調べた - takatoshiono's blog

 

5.6 からの ALTER TABLE

  • 実行中に書き込みできない(これまでと同じ)
    • カラムのデータ型変更
    • 全文検索用インデックスの追加
    • プライマリキーの削除
    • 文字コードの変換、指定
  • 実行中に書き込みできる&テーブルコピーが必要
    • カラムの追加、削除、並び替え
    • カラムをNULL許可にする
    • カラムをNOT NULLにする
  • 実行中に書き込みできる&テーブルコピーが不要
    • インデックスの追加、削除
    • カラムのデフォルト値の設定
    • オートインクリメント値の変更
    • 外部キー制約の追加、削除