バイナリログファイルの位置ベースのレプリケーションを使用するようにソースを構成するには、バイナリロギングが有効になっていることを確認し、一意のサーバー ID を確立する必要があります。
レプリケーショントポロジ内の各サーバーは、server_id
システム変数を使用して指定できる一意のサーバー ID で構成する必要があります。 このサーバー ID は、レプリケーショントポロジ内の個々のサーバーを識別するために使用され、1 から (2 32)−1 までの正の整数である必要があります。 MySQL 8.0 のデフォルトの server_id
値は 1 です。 次のようなステートメントを発行して、server_id
値を動的に変更できます:
SET GLOBAL server_id = 2;
各サーバー ID がレプリケーショントポロジ内の他のサーバーで使用されている他のすべてのサーバー ID と異なるかぎり、サーバー ID を編成して選択する方法が選択されます。 サーバー ID に 0 (以前のリリースではデフォルト) の値が以前に設定されていた場合は、サーバーを再起動して、ソースを新しいゼロ以外のサーバー ID で初期化する必要があります。 それ以外の場合は、サーバー ID を変更するときにサーバーを再起動する必要はありません。ただし、サーバー ID を必要とする他の構成を変更する場合は除きます。
バイナリログはソースからそのレプリカに変更をレプリケートするための基礎であるため、ソースではバイナリロギングが必要です。 バイナリロギングはデフォルトで有効になっています (log_bin
システム変数は ON に設定されています)。 --log-bin
オプションは、バイナリログファイルに使用するベース名をサーバーに指示します。 ホスト名が変更された場合でも同じバイナリログファイル名を簡単に使用できるように、バイナリログファイルにデフォルト以外のベース名を付けるには、このオプションを指定することをお勧めします (セクションB.3.7「MySQL の既知の問題」 を参照)。 バイナリロギングが以前に --skip-log-bin
オプションを使用してソースで無効になっていた場合は、このオプションを指定せずにサーバーを再起動して有効にする必要があります。
次のオプションもソースに影響します:
InnoDB
とトランザクションを使用したレプリケーション設定で永続性と一貫性を最大限に高めるには、ソースmy.cnf
ファイルでinnodb_flush_log_at_trx_commit=1
およびsync_binlog=1
を使用する必要があります。ソースで
skip_networking
システム変数が有効になっていないことを確認します。 ネットワーキングが無効になっている場合、レプリカはソースと通信できず、レプリケーションは失敗します。