Documentation Home
MySQL 5.6 リファレンスマニュアル
Download this Manual
PDF (US Ltr) - 26.9Mb
PDF (A4) - 26.9Mb
HTML Download (TGZ) - 7.2Mb
HTML Download (Zip) - 7.2Mb


17.4.1.22 レプリケーションと一時テーブル

binlog_format=ROW のときは次の段落の説明は適用されません。なぜなら、その場合は一時テーブルは複製されないためです。これは、スレーブによる計画外シャットダウンの場合、スレーブ上の一時テーブルが失われることがないことを意味します。このセクションの残りは、ステートメントベースまたは混合形式レプリケーションを使用するときにのみ適用されます。ステートメントベース形式を使用して安全にログを記録できる一時テーブルを使用するステートメントでは、binlog_formatSTATEMENT または MIXED のときは常に、スレーブ上で複製された一時テーブルを失うことが問題となる可能性があります。行ベースレプリケーションと一時テーブルの詳細は、一時テーブルの行ベースロギングを参照してください。

一時テーブルを使用するときの安全なスレーブシャットダウン  スレーブサーバーを停止する場合 (スレーブスレッドだけではなく)、およびスレーブ上でまだ実行されていない更新で使用するために開いている一時テーブルを複製した場合を除いて、一時テーブルは複製されます。スレーブサーバーを停止した場合、これらの更新が必要とする一時テーブルは、スレーブが再起動されたときに使用できなくなっています。この問題を回避するために、一時テーブルが開いている間はスレーブをシャットダウンしないでください。代わりに、次の手順を使用してください。

  1. STOP SLAVE SQL_THREAD ステートメントを発行します。

  2. SHOW STATUS を使用して Slave_open_temp_tables 変数の値を確認します。

  3. 値が 0 でない場合は、スレーブ SQL スレッドを START SLAVE SQL_THREAD で再起動してから、あとで手順を繰り返します。

  4. 値が 0 のときは、mysqladmin shutdown コマンドを発行してスレーブを停止します。

一時テーブルとレプリケーションオプション  デフォルトでは、すべての一時テーブルが複製されます。これは、対応する --replicate-do-db--replicate-do-table、または --replicate-wild-do-table オプションが有効かどうかに関係なく発生します。ただし、--replicate-ignore-table および --replicate-wild-ignore-table オプションは一時テーブルで受け付けられます。

ステートメントベースまたは混合形式レプリケーションを使用するときに推奨される操作は、複製したくない一時テーブルに名前を付けるためだけに使用するプリフィクスを指定してから、そのプリフィクスを照合するために --replicate-wild-ignore-table オプションを使用することです。たとえば、このようなすべてのテーブルに norep で始まる名前を付けてから (たとえば、norepmytablenorepyourtable など)、テーブルが複製されることを回避するために --replicate-wild-ignore-table=norep% を使用します。