web-dev-qa-db-ja.com

レプリケーションにリレーログは必要ですか?

リレーログを使用するメリットとメリットを理解しようとしています。ドキュメントによると、mysqlはI/Oスレッドの結果としてマスターのバイナリログからイベントをキャプチャして書き込みます。次に、SQLスレッドがスレーブリレーログのステートメントを実行します。

現在、スレーブでリレーログを無効にしていますが、レプリケーションには影響しません。それはまだうまくいきます。

レプリケーションでSQLスレッドがリレーログからステートメントを読み取って実行できるようにする必要がある場合、リレーログがなくてもそれが機能するのはなぜですか?

ありがとう

6
SillyRabbit

レプリケーションにはリレーログが必要です。複製スレーブがある場合、リレーログを使用し、それらを無効にしていません。以下を確認してください。

SHOW SLAVE STATUS \G

Slave_IO_Running: Yesはありますか?次に、レプリケーションが実行されているようです。 Relay_Log_File列を探してください-それは何と言っていますか?現在のリレーログファイルを指摘しているはずです。

このファイルを探します。デフォルトでは@@datadirにあります。そこにいますか?レプリケーションリレーログがあります。

リレーログを無効にしたとおっしゃっていますが、無効にしていないことをお勧めします(リレーログを無効にする方法があることは覚えていません)。リレーログをどのように無効にしましたか?

4
Shlomi Noach

リレーログを探していて、それらの名前を設定していない場合、mysqldはサーバーのホスト名を使用します。どうして ?

relay-logオプションに関する MySQLドキュメントによると

リレーログのベース名。デフォルトのベース名はHost_name-relay-binです。別のディレクトリを指定するために先頭に絶対パス名を付けてベース名を指定しない限り、サーバーはデータディレクトリにファイルを書き込みます。サーバーは、ベース名に数値のサフィックスを追加することにより、リレーログファイルを順番に作成します。

MySQLがサーバーオプションを解析する方法のため、このオプションを指定する場合は、値を指定する必要があります。デフォルトのベース名は、オプションが実際に指定されていない場合にのみ使用されます。値を指定せずに--relay-logオプションを使用すると、予期しない動作が発生する可能性があります。この動作は、使用される他のオプション、それらが指定される順序、およびそれらがコマンドラインで指定されるかオプションファイルで指定されるかによって異なります。 MySQLがサーバーオプションを処理する方法の詳細については、セクション4.2.3「プログラムオプションの指定」を参照してください。

@Shlomiは彼の答えですでに datadir を調べるように言っています。 mysqlにログインして実行します

SHOW GLOBAL VARIABLES LIKE 'datadir';
SHOW GLOBAL VARIABLES LIKE 'hostname';

OSで、そのフォルダーに移動し、ls -l(またはWindowsを使用しているユーザーの場合はdir)を実行して、ホスト名で始まり、-relay-bin.で始まり、6桁になるファイルを探します。 。

リレーログを無効にする唯一の方法は、レプリケーションを完全に無効にすることです。そうでない場合、CHANGE MASTER TOが手動またはmysqldスタートアップによって実行されると、MySQLはリレーログを生成します。

2
RolandoMySQLDBA