6

MySQL では、ステートメント ベースのレプリケーションを使用して、すべての SQL ステートメントがマスターとまったく同じ方法でスレーブ上で実行されると想定しています。ただし、ステートメントを実行すると:

LOAD DATA INFILE 'filename' INTO SomeTable;

ファイルがマスターと同じようにスレーブに存在する必要があるかどうかはわかりません。この機能のドキュメントを教えてもらえますか?

4

1 に答える 1

5

マスターにロードしたファイルはLOAD DATA INFILE、レプリケーション ログを介してマスターからレプリカに自動的に転送されるようです。LOAD DATA INFILEレプリカは、ステートメント ベースのレプリケーション キューに到達すると、これらのファイルをロードします。

これは、ドキュメントのいくつかのステートメントから推測しています。

16.1:レプリケーション スレーブのバックアップ

MySQL サーバーがスレーブ レプリケーション サーバーである場合は、選択したバックアップ方法に関係なく、スレーブのデータをバックアップするときに master.info ファイルと relay-log.info ファイルもバックアップする必要があります。これらのファイルは、スレーブのデータを復元した後にレプリケーションを再開するために常に必要です。スレーブが LOAD DATA INFILE コマンドをレプリケートする必要がある場合は、 --slave-load-tmpdir オプションで指定されたディレクトリに存在する SQL_LOAD-* ファイルもバックアップする必要があります。

16.1.2.3:レプリケーションスレーブのオプションと変数

スレーブ SQL スレッドは、LOAD DATA INFILE ステートメントを複製するときに、ロードするファイルをリレー ログから一時ファイルに抽出し、それらをテーブルにロードします。マスターにロードされたファイルが巨大な場合、スレーブ上の一時ファイルも巨大になります。したがって、このオプションを使用して、使用可能なスペースが多いファイルシステムにあるディレクトリに一時ファイルを配置するようにスレーブに指示することをお勧めします。その場合、リレー ログも巨大になるため、 --relay-log オプションを使用してリレー ログをそのファイル システムに配置することもできます。

于 2008-12-15T17:11:09.263 に答える