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


17.3.9 遅延レプリケーション

MySQL 5.6 は、スレーブサーバーがマスターから意図的に少なくとも指定した時間遅れる、遅延レプリケーションをサポートします。デフォルトの遅延は 0 秒です。CHANGE MASTER TOMASTER_DELAY オプションを使用して、遅延を N 秒に設定してください。

CHANGE MASTER TO MASTER_DELAY = N;

マスターから受信するイベントは、マスター上での実行より少なくとも N 秒後になるまで実行されません。例外は、形式記述イベントまたはログファイルローテーションイベントには遅延がなく、これらは SQL スレッドの内部状態にのみ影響します。

遅延レプリケーションはいくつかの目的に使用できます。

  • マスター上でのユーザーの誤りから保護するため。DBA は遅延スレーブを障害の直前までロールバックできます。

  • 遅延があるときにシステムがどのように動作するかをテストするため。たとえば、アプリケーションで、スレーブでの大きな負荷が原因で遅延が発生する場合があります。しかし、この負荷レベルを生成するのが難しい場合があります。遅延レプリケーションは、負荷をシミュレートしなくても遅延をシミュレートできます。遅延をしているスレーブに関連する条件をデバッグするために使用することもできます。

  • バックアップをリロードすることなく、データベースが以前にどのようであったかを調べるため。たとえば、遅延が 1 週間で、最後の数日間の開発の前にデータベースがどのようであったかを DBA が確認する必要がある場合には、遅延スレーブを検査できます。

START SLAVE および STOP SLAVE はすぐに適用され、遅延を無視します。RESET SLAVE は遅延を 0 にリセットします。

SHOW SLAVE STATUS には、遅延に関する情報を提供する次のような 3 つのフィールドがあります。

  • SQL_Delay: スレーブがマスターより遅延する必要がある秒数を示す、負でない整数。

  • SQL_Remaining_Delay: Slave_SQL_Running_StateWaiting until MASTER_DELAY seconds after master executed event のときに、このフィールドには遅延の残り秒数を示す整数が含まれます。ほかのときは、このフィールドは NULL です。

  • Slave_SQL_Running_State: SQL スレッドの状態を示す文字列 (Slave_IO_State に似ています)。値は、SHOW PROCESSLIST で表示される、SQL スレッドの State 値と同じです。

スレーブ SQL スレッドがイベント実行前に遅延が経過するのを待機しているときは、SHOW PROCESSLIST はその State 値を Waiting until MASTER_DELAY seconds after master executed event として表示します。

relay-log.info ファイルに遅延値が含まれるようになり、ファイル形式が変更されました。セクション17.2.2.2「スレーブステータスログ」を参照してください。たとえば、ファイルの最初の行がファイル内の行数を示すようになりました。スレーブサーバーを MySQL 5.6 より前のバージョンにダウングレードすると、古いサーバーはファイルを正しく読み取りません。これに対処するには、テキストエディタでファイルを変更し、行数を含む最初の行を削除します。