リレーログとはレプリケーションを構成する際にスレーブのみに生成されます。レプリケーションはマスターからバイナリログの情報をスレーブのI/
レプリケーションの構築方法は、mysqlbinlog
コマンドを使用して更新情報を確認することもできます。
今回はこのリレーログについて説明します。
リレーログのオプション
リレーログを構成するためにいくつかのオプションがあります。
オプション名 | デフォルト | 内容 |
---|---|---|
relay_ | HOSTNAME-relay-bin | リレーログファイル名 |
relay_ | datadir + '/' + HOSTNAME-relay-bin | リレーログファイル名とフルパスを保持 |
relay_ | HOSTNAME-relay-bin. | リレーログインデックスファイル名 |
relay_ | relay-log. | リレーログの情報を記録するファイル名 |
relay_ | FILE | リレーログのポジションを FILE (relay-log. |
relay_ | TRUE | リレーログファイルが不要になるとすぐに自動的にパージの有効、 |
relay_ | FALSE | MySQL起動直後のリレーログ自動リカバリの有効、 |
relay_ | 0 | リレーログの合計サイズ |
max_ | 0 | リレーログファイルを自動的にローテーションする最大バイト数 |
sync_ | 10000 | 値分のイベントを処理するとリレーログファイルをフラッシュする |
sync_ | 10000 | 値分のイベントを処理するとrelay-log. |
※)
relay_
オプションと、relay_
オプションの関係は、relay_
にファイル名またはフルパスでリレーログファイル名を設定し、relay_
はリレーログファイルの配置場所を確認することに使用します。
relay_
をファイル名のみ設定した場合は、relay_
のデフォルトのパスdatadir + '/'
が付与されたファイルが生成されます。フルパスで設定した場合はrelay_
が上書きされます。
relay_
オプションは、relay_
オプションで設定されたパスとファイル名を基に生成されます。
relay_
オプションは、relay_
がFILEの場合に生成されます。現在のリレーログファイルやそのポジションなどのスレーブのレプリケーションステータスを記録するファイルです。SQLスレッドが更新を行い、
sync_
オプションとsync_
オプションはrelay_
オプションの値に大きく依存するため、
簡単に説明しますと、
リレーログの生成と削除
リレーログファイルはrelay_
オプションで設定したファイル名に000001で始まるシーケンス番号が付与され、
以下のタイミングでリレーログが初期化
CHANGE MASTER
でマスターの変更が行われた時RESET SLAVE
が行われた時
以下のタイミングでリレーログがローテートされます。
START SLAVE
などのI/Oスレッド起動時 FLUSH LOGS
またはFLASH RELAY LOGS
などでログがフラッシュされた時max_
オプションに指定したサイズより大きくなった場合。値が0の場合はrelay_ log_ size max_
と同じ値になります。binlog_ size
以下のタイミングでリレーログが自動削除されます。
relay_
オプションがTRUEの場合、log_ purge ローテートされたリレーログをSQLスレッドがすでに適用し不要と判断されると削除。FALSEの場合は自動で削除されません。
スレーブの状態について
SHOW SLAVE STATUS
から現在どこまでのリレーログがスレーブに適用されたか確認できます。
- Relay_
Log_ File … SQLスレッドが適用しているリレーログ - Relay_
Log_ Pos … SQLスレッドが適用済のリレーログのポジション - Relay_
Log_ Space … 現在のリレーログファイルの合計サイズ
また、
以下の例は、mysql-relay.
のポジション100
を含むトランザクションを実行した後に、
クラッシュセーフスレーブ
MySQL5.
そのためにはデフォルト設定ではなく、
relay_
= TABLElog_ info_ repository relay_
= TRUElog_ recovery
この設定にすることで、