MySQLのレプリケーションはデフォルトでは非同期で行われます。そのため、
これを実現するしくみとして、
準同期レプリケーションとは
準同期レプリケーションは、
コミットしたトランザクションはマスターから1台以上
更新データの伝搬後にSQLスレッドがデータをスレーブに実際に反映するために、
インストール方法
準同期レプリケーションは、SUPER
権限が必要です。
はじめに、
次に、
準同期レプリケーションを有効化します。
最後に、
これで設定は完了で、
オプションについて
準同期レプリケーションのためのオプションがいくつかあります。マスター側とスレーブ側ではオプションが違います。
rpl_
の後がmasterであればマスターで設定できる項目、
rpl_
semi_ sync_ master_ enabled - マスターで準同期レプリケーションを有効化するかどうか
(デフォルト:OFF)。 rpl_
semi_ sync_ master_ timeout - スレーブからの応答がない場合、
マスターが待機する時間。ミリ秒単位。指定した時間を超えると非同期レプリケーションで動作するようになります (デフォルト:10000 [10秒])。 rpl_
semi_ sync_ master_ wait_ for_ slave_ count - MySQL5.
7から追加されたオプションで、 スレーブからの応答受ける最小数。指定した数だけのスレーブから通知を受けるとコミットが完了となる (デフォルト:1)。 rpl_
semi_ sync_ master_ wait_ point - MySQL5.
7から追加されたオプションで AFTER_
またはSYNC AFTER_
か選択できます。MySQL5.COMMIT 7のデフォルトは AFTER_
でMySQL5.SYNC 6とそれ以前ではこのオプションは存在せず、 AFTER_
で動作していました。このオプションではスレーブに対してデータを伝搬するタイミングを設定するものです。COMMIT
AFTER_
では、AFTER_
はロスレス準同期レプリケーションと呼ばれ、
rpl_
semi_ sync_ slave_ enabled - スレーブで準同期レプリケーションを有効化するかどうか
(デフォルト:OFF)。
ステータス情報
SHOW GLOBAL STATUS
構文からいくつかの監視できる項目があります。前述のオプションと同様でRpl_
の後がmasterであればマスターから確認できる項目、
Rpl_
semi_ sync_ master_ clients - マスターで実行すると準同期レプリケーションが有効になっているスレーブの数を確認できます。
Rpl_
semi_ sync_ master_ status - マスターで実行すると現在準同期レプリケーションが有効になっているか確認できます。有効である場合は1です。もし、
タイムアウトなどが発生して非同期レプリケーションにフォールバックされると値は0になります。 Rpl_
semi_ sync_ master_ no_ tx - スレーブによって正常に承認されなかったコミットの数。
Rpl_
semi_ sync_ master_ yes_ tx - スレーブによって正常に承認されたコミットの数。
Rpl_
semi_ sync_ master_ tx_ waits - マスターがトランザクションを待機した合計回数。
Rpl_
semi_ sync_ master_ tx_ wait_ time - マスターがトランザクションを待機する合計時間 (マイクロ秒)。
Rpl_
semi_ sync_ master_ tx_ avg_ wait_ time - マスターが各トランザクションを待機する平均時間 (マイクロ秒)。
Rpl_
semi_ sync_ slave_ status - 準同期レプリケーションがスレーブ上で現在動作中かどうか。プラグインが有効であり、
スレーブ I/ O スレッドが実行中の場合は ON、 それ以外の場合は OFF です。
まとめ
障害等でも必ずデータをスレーブへ同期させたい場合は、