MySQL 8.0 リファレンスマニュアル


17.1.2.4 レプリケーションソースのバイナリログ座標の取得

レプリケーションプロセスを正しい時点で開始するようにレプリカを構成するには、そのバイナリログ内のソースの現在の座標を書き留める必要があります。

警告

このプロシージャでは、InnoDB テーブルの COMMIT 操作をブロックする FLUSH TABLES WITH READ LOCK を使用します。

ソースを停止してデータスナップショットを作成する場合は、オプションでこの手順をスキップし、かわりにバイナリログインデックスファイルのコピーをデータスナップショットとともに格納できます。 その場合、ソースは再起動時に新しいバイナリログファイルを作成します。 したがって、レプリカがレプリケーションプロセスを開始すべきソースのバイナリログ座標は、その新しいファイルの開始点であり、コピーされたバイナリログインデックスファイルにリストされているファイルの次のソースのバイナリログファイルとなります。

ソースバイナリログ座標を取得するには、次のステップに従います:

  1. コマンドラインクライアントを使用してソースに接続してセッションを開始し、FLUSH TABLES WITH READ LOCK ステートメントを実行してすべてのテーブルおよびブロック書込みステートメントをフラッシュします:

    mysql> FLUSH TABLES WITH READ LOCK;
    警告

    読み取りロックを有効のままにするため、FLUSH TABLES ステートメントを発行したクライアントを実行中のままにしてください。 クライアントを終了すると、ロックは解除されます。

  2. ソース上の別のセッションで、SHOW MASTER STATUS ステートメントを使用して現在のバイナリログファイルの名前と位置を確認します:

    mysql > SHOW MASTER STATUS;
    +------------------+----------+--------------+------------------+
    | File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
    +------------------+----------+--------------+------------------+
    | mysql-bin.000003 | 73       | test         | manual,mysql     |
    +------------------+----------+--------------+------------------+

    File カラムにはログファイルの名前が表示され、Position カラムにはファイル内の位置が表示されます。 この例では、バイナリログファイルは mysql-bin.000003 で、位置は 73 です。 これらの値を記録します。 これらは、後でレプリカを設定するときに必要になります。 これらは、レプリカがソースからの新しい更新の処理を開始するレプリケーション座標を表します。

    ソースがそれまでバイナリロギングを無効にして実行されていた場合、SHOW MASTER STATUS または mysqldump --master-data によって表示されるログファイルの名前と位置の値は空です。 その場合、あとでソースバイナリログファイルと位置を指定するときに使用する必要がある値は、空の文字列 ('') と 4 です。

これで、レプリカがレプリケーションを開始するための正しい場所でソースバイナリログからの読み取りを開始できるようにするために必要な情報が得られました。

次のステップは、ソースに既存のデータがあるかどうかによって異なります。 次のいずれかのオプションを選択します:


関連キーワード:  ソース, バイナリ, ステートメント, ベース, 設定, 構成, GTID, 開始, 位置, ログ