タグ

ALTERとオンラインに関するgouei2001のブックマーク (2)

  • MySQLのスキーマ変更をオンラインでやるための選択肢比較 - Qiita

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

    MySQLのスキーマ変更をオンラインでやるための選択肢比較 - Qiita
  • 第30回 InnoDBオンラインDDLについて | gihyo.jp

    LOCKとALGORITHM句を省略した操作は、先ほどのDDL操作のオンラインステータスのサマリーに基づき、以下の順序で評価され、使用可能なオプションで実行されます。 LOCKの場合 NONE → SHARED → EXCLUSIVEの順に評価されます。 ALGORITHM句の場合 INPLACE → COPYの順に評価されます。 ここで気をつけておきたいことは、たとえばカラムのデータ型を変更するなどのインプレース方式と並列DMLが許可されていない操作に対してオンラインDDLが有効だろうと思い込み、それらの句を省略して番環境に対して実行したためにサービスを停止させてしまうなど、痛い目にあうことがあります。 対策として、期待している動作のALGORITHM=INPLACEとLOCK=NONEを記述するとエラーとなり実行されません。オンラインDDLが有効かどうか不安な場合は、明示的にLOCK

    第30回 InnoDBオンラインDDLについて | gihyo.jp
  • 1