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


MySQL 5.6 リファレンスマニュアル  /  ...  /  レプリケーションリレーおよびステータスログ

17.2.2 レプリケーションリレーおよびステータスログ

レプリケーション中にスレーブサーバーは、マスターからスレーブにリレーされるバイナリログイベントを保持し、現在のステータスとリレーログ内の位置に関する情報を記録するいくつかのログを作成します。処理に使用されるログには、ここで示すように 3 つのタイプがあります。

  • リレーログは、スレーブ I/O スレッドによってマスターのバイナリログから読み取られ、書き込まれるイベントから構成されます。リレーログ内のイベントは、SQL スレッドの一部としてスレーブ上で実行されます。

  • マスター情報ログ には、スレーブのマスターへの接続に関するステータスと現在の構成情報が含まれます。このログは、マスターホスト名、ログイン資格証明、およびスレーブがマスターのバイナリログからどのくらい離れて読み取ったかを示す座標に関する情報を保持します。

    MySQL 5.6 より前では、このログは常にファイル (master.info) でしたが、MySQL 5.6 以降では、スレーブを --master-info-repository=TABLE で起動することで、このログをファイルにではなく mysql.slave_master_info テーブルに書き込むことができます。

  • リレーログ情報 は、スレーブのリレーログ内の実行ポイントに関するステータス情報を保持します。

    MySQL 5.6 より前では、このログは常にファイル (relay-log.info) でしたが、MySQL 5.6 以降では、スレーブを --relay-log-info-repository=TABLE で起動することで、このログをファイルにではなく mysql.slave_relay_log_info テーブルに書き込むことができます。

MySQL 5.6.7 より前では、slave_master_info および slave_relay_log_info テーブルの Master_id カラムは、マスターのサーバー ID ではなくスレーブのサーバー ID を示していました。(Bug #12334346)

クラッシュセーフレプリケーション  ステータスおよびリレー情報のログのためにテーブルを使用するときにレプリケーションがクラッシュセーフであるためには、これらのテーブルは InnoDB などのトランザクションストレージエンジンを使用する必要があります。MySQL 5.6.6 以降では、これらのテーブルは InnoDB を使用して作成されます。(Bug #13538891)

このため、スレーブでのクラッシュ安全性を保証するには、--relay-log-recovery が有効な状態でスレーブを実行し、さらに --relay-log-info-repositoryTABLE に設定する必要があります。

MySQL 5.6.6 より前では、mysqld がレプリケーションロギングテーブルを初期化できなかった場合、スレーブは起動を拒否しました。MySQL 5.6.6 以降では、これが発生すると警告が出されますが、スレーブは起動を続けることが許可されます。(Bug #13971348) この状況が発生する可能性が高いのは、スレーブロギングテーブルをサポートしないバージョンの MySQL からサポートされるバージョンにアップグレードするときです。

MySQL 5.6.5 以前では、slave_master_info および slave_relay_log_info テーブルがデフォルトで MyISAM を使用していて、これはレプリケーションを開始する前にここで示すように ALTER TABLE ... ENGINE=InnoDB を発行することで、これらのテーブルが使用するストレージエンジンを変更する必要がありました。

ALTER TABLE mysql.slave_master_info ENGINE=InnoDB;
ALTER TABLE mysql.slave_relay_log_info ENGINE=InnoDB;

ALTER TABLE ステートメントは、mysql データベースで適切な権限を持つ MySQL root またはほかのユーザーアカウントで実行される必要があります。レプリケーションの実行中にこれを実行しようとしてはいけません。MySQL 5.6.3 以降では、レプリケーションの進行中にこれらのいずれかのテーブルで ALTER TABLE を実行しようとすることは許可されません。MySQL 5.6.4 以降では、これらのテーブルのいずれかまたは両方で書き込みロックを必要とするステートメントを実行することは、レプリケーションの進行中は許可されませんが、読み取りのみを実行するステートメントはいつでも許可されます。

重要

slave_master_info または slave_relay_log_info テーブルで手動で行を更新または挿入しようとしないでください。そのようにすることは、未定義の動作になる可能性があり、サポートされていません。

MySQL 5.6.4 より前では、mysqldump はレプリケーションログテーブルをダンプしませんでした (それらが名前で指定されて --master-data オプションが使用された場合を除く)。


User Comments
Sign Up Login You must be logged in to post a comment.