今回から3回に渡って,
はじめに,
しかし,
gh-ostを使用すれば,
アーキテクチャ
gh-ostは基本的に以下のように動作します。
- 変更したいテーブル
(基テーブル) の空のコピーテーブル (ゴーストテーブル) を作成 - ゴーストテーブルに対して指定したALTERステートメント実行
- 基テーブルの既存データをゴーストテーブルにコピー
- マイグレーション実行中,
基テーブルへの新規DMLはバイナリログから抽出し, ゴーストテーブルへ適用
※ 3と4は並列で稼働します - 3と4が終わると,
基テーブルとゴーストテーブルを入替 (カットオーバー)
オンラインスキーママイグレーションツールとして有名なツールに,
よって,
また,
必須要件
権限の作成
gh-ostを実行するために以下の権限が必要です。
ALTER, CREATE, DELETE, DROP, INDEX, INSERT, LOCK TABLES, SELECT, TRIGGER, UPDATE
の権限を対象のデータベース権限で作成SUPER,REPLICATION CLIENT, REPLICATION SLAVE on *.*
が必要な場合あり
2.の権限が必要な場合は--switch-to-rbr
オプションがTrueのときです。このオプションは,STOP SLAVE
とSTART SLAVE
します。確実にレプリカのbinlog_--assume-rbr
オプションをつけて実行することでSTOP SLAVE
とSTART SLAVE
は実行されませんので,
レプリケーション設定
gh-ostがレプリカからバイナリログを取得するためのMySQLの設定になります。
- レプリカでlog_
binが設定されていること - レプリカでlog_
slave_ updates=ONであること - レプリカでbinlog_
format=ROWであること - レプリカでbinlog_
row_ image=FULLであること
前述の--switch-to-rbr
オプションは,log_
をONへ,binlog_
をFULLにはしてくれません。よって,
また,
ちなみに,