レプリケーション中にスレーブサーバーは,マスターからスレーブにリレーされるバイナリログイベントを保持し,現在のステータスとリレーログ内の位置に関する情報を記録するいくつかのログを作成します。処理に使用されるログには,ここで示すように3。
リレログは,スレーブI / Oスレッドによってマスターのバイナリログから読み取られ,書き込まれるイベントから構成されます。リレログ内の,sqlスレッドの一部としてスレ。
マスタ情報ログには,スレブのマスタへの接続に関するステタスと現在の構成情報が含まれます。このログは,マスターホスト名,ログイン資格証明,およびスレーブがマスターのバイナリログからどのくらい離れて読み取ったかを示す座標に関する情報を保持します。
MySQL 5.6より前では,このログは常にファ
master.info
)でしたが,MySQL 5.6以降では,スレブを——master-info-repository =表
で起動することで、このログをファ以及ルにではなくmysql.slave_master_info
テブルに書き込むことができます。リレログ情報は,スレブのリレログ内の実行ポ。
MySQL 5.6より前では,このログは常にファ
relay-log.info
)でしたが,MySQL 5.6以降では,スレブを——relay-log-info-repository =表
で起動することで、このログをファ以及ルにではなくmysql.slave_relay_log_info
テブルに書き込むことができます。
MySQL 5.6.7より前では,slave_master_info
およびslave_relay_log_info
テブルのMaster_id
カラムは,マスタ。(错误# 12334346)
クラッシュセフレプリケションステータスおよびリレー情報のログのためにテーブルを使用するときにレプリケーションがクラッシュセーフであるためには,これらのテーブルはInnoDB
などのトランザクションストレジエンジンを使用する必要があります。MySQL 5.6.6以降では,これらのテブルはInnoDB
を使用して作成されます。(错误# 13538891)
このため,スレ,ブでのクラッシュ安全性を保証するには,——relay-log-recovery
が有効な状態でスレブを実行し,さらに——relay-log-info-repository
を表格
に設定する必要があります。
MySQL 5.6.6より前では,mysqldがレプリケションロギングテブルを初期化できなかった場合,スレブは起動を拒否しました。MySQL 5.6.6以降では,これが発生すると警告が出されますが,スレーブは起動を続けることが許可されます。(错误# 13971348)この状況が発生する可能性が高いのは,スレーブロギングテーブルをサポートしないバージョンのMySQLからサポートされるバージョンにアップグレードするときです。
MySQL 5.6.5以前では,slave_master_info
およびslave_relay_log_info
テブルがデフォルトでMyISAM
を使用していて,これはレプリケションを開始する前にここで示すように修改表…引擎= InnoDB
を発行することで,これらのテブルが使用するストレジエンジンを変更する必要がありました。
修改mysql表。slave_master_info引擎= InnoDB; ALTER TABLE mysql.slave_relay_log_info ENGINE=InnoDB;
ALTER TABLE
ステトメントは,mysql
デタベスで適切な権限を持MySQL . xml根
またはほかのユザアカウントで実行される必要があります。レプリケションの実行中にこれを実行しようとしてはいけません。MySQL 5.6.3 以降では、レプリケーションの進行中にこれらのいずれかのテーブルでALTER TABLE
を実行しようとすることは許可されません。MySQL 5.6.4以降では,これらのテーブルのいずれかまたは両方で書き込みロックを必要とするステートメントを実行することは,レプリケーションの進行中は許可されませんが,読み取りのみを実行するステートメントはいつでも許可されます。
slave_master_info
またはslave_relay_log_info
テブルで手動で行を更新または挿入しようとしないでください。そのようにすることは,未定義の動作になる可能性があり,サポ,トされていません。
MySQL 5.6.4より前では;, mysqldumpはレプリケションログテブルをダンプしませんでした(それらが名前で指定されて——主数据
オプションが使用された場合を除く)。