NDB Cluster のレプリケーションの準備には、次の手順が含まれます:
すべての MySQL サーバーに対してバージョンの互換性を確認します (セクション23.6.2「NDB Cluster レプリケーションの一般的な要件」を参照してください)。
-
次の 2 つの SQL ステートメントを使用して、適切な権限でソースクラスタにレプリケーションアカウントを作成します:
mysqlS> CREATE USER 'replica_user'@'replica_host' -> IDENTIFIED BY 'replica_password'; mysqlS> GRANT REPLICATION SLAVE ON *.* -> TO 'replica_user'@'replica_host';
前述のステートメントで、
replica_user
はレプリケーションアカウントユーザー名、replica_host
はレプリカのホスト名または IP アドレス、replica_password
はこのアカウントに割り当てるパスワードです。たとえば、
myreplica
という名前のレプリカユーザーアカウントを作成し、replica-host
という名前のホストからログインし、パスワード53cr37
を使用するには、次のCREATE USER
およびGRANT
ステートメントを使用します:mysqlS> CREATE USER 'myreplica'@'replica-host' -> IDENTIFIED BY '53cr37'; mysqlS> GRANT REPLICATION SLAVE ON *.* -> TO 'myreplica'@'replica-host';
セキュリティ上の理由から、レプリケーションアカウントには、他の目的には使用されない一意のユーザーアカウントを使用することをお薦めします。
-
ソースを使用するようにレプリカを設定します。 これは、mysql クライアントを使用して、
CHANGE REPLICATION SOURCE TO
ステートメント (MySQL 8.0.23 の場合) またはCHANGE MASTER TO
ステートメント (MySQL 8.0.23 の場合) で実行できます:mysqlR> CHANGE MASTER TO -> MASTER_HOST='source_host', -> MASTER_PORT=source_port, -> MASTER_USER='replica_user', -> MASTER_PASSWORD='replica_password'; Or from MySQL 8.0.23: mysqlR> CHANGE REPLICATION SOURCE TO -> SOURCE_HOST='source_host', -> SOURCE_PORT=source_port, -> SOURCE_USER='replica_user', -> SOURCE_PASSWORD='replica_password';
前述のステートメントで、
source_host
はレプリケーションソースのホスト名または IP アドレス、source_port
はソースへの接続時に使用するレプリカのポート、replica_user
はソースのレプリカに設定されたユーザー名、replica_password
は前のステップでそのユーザーアカウントに設定されたパスワードです。たとえば、前のステップで作成したレプリケーションアカウントでホスト名が
rep-source
の MySQL サーバーを使用するようレプリカに指示するには、次のステートメントを使用します:mysqlR> CHANGE MASTER TO -> MASTER_HOST='rep-source', -> MASTER_PORT=3306, -> MASTER_USER='myreplica', -> MASTER_PASSWORD='53cr37'; Or from MySQL 8.0.23: mysqlR> CHANGE REPLICATION SOURCE TO -> SOURCE_HOST='rep-source', -> SOURCE_PORT=3306, -> SOURCE_USER='myreplica', -> SOURCE_PASSWORD='53cr37';
このステートメントで使用できるオプションの完全なリストについては、セクション13.4.2.1「CHANGE MASTER TO ステートメント」を参照してください。
レプリケーションバックアップ機能を提供するには、レプリケーションプロセスを開始する前に、レプリカ
my.cnf
ファイルに--ndb-connectstring
オプションを追加する必要もあります。 詳細は、セクション23.6.9「NDB Cluster レプリケーションによる NDB Cluster バックアップ」,を参照してください。レプリカ用に
my.cnf
で設定できるその他のオプションについては、セクション17.1.6「レプリケーションおよびバイナリロギングのオプションと変数」 を参照してください。 -
ソースクラスタがすでに使用されている場合は、ソースのバックアップを作成してレプリカにロードし、レプリカがソースと同期するのに必要な時間を短縮できます。 レプリカで NDB Cluster も実行されている場合は、セクション23.6.9「NDB Cluster レプリケーションによる NDB Cluster バックアップ」 で説明されているバックアップおよび復元手順を使用してこれを実行できます。
ndb-connectstring=management_host[:port]
レプリカで NDB Cluster を使用していない場合は、ソースで次のコマンドを使用してバックアップを作成できます:
shellS> mysqldump --master-data=1
次に、ダンプファイルをレプリカにコピーして、結果のデータダンプをレプリカにインポートします。 この後、次に示すように、mysql クライアントを使用してダンプファイルからレプリカデータベースにデータをインポートできます。ここで、
dump_file
はソースで mysqldump を使用して生成されたファイルの名前、db_name
はレプリケートされるデータベースの名前です:shellR> mysql -u root -p db_name < dump_file
mysqldump で使用するオプションの完全なリストは、セクション4.5.4「mysqldump — データベースバックアッププログラム」を参照してください。
注記この方法でレプリカにデータをコピーする場合は、コマンドラインで
--skip-slave-start
オプションを使用してレプリカが起動されていることを確認するか、レプリカmy.cnf
ファイルにskip-slave-start
を含めて、すべてのデータがロードされる前にソースへの接続を試行してレプリケートを開始しないようにする必要があります。 データのロードが完了したら、次の 2 つのセクションで説明する追加ステップに従います。 レプリケーションソースとして機能する各 MySQL サーバーに一意のサーバー ID が割り当てられ、行ベースの形式を使用してバイナリロギングが有効になっていることを確認します。 (セクション17.2.1「レプリケーション形式」を参照してください。) また、
slave_allow_batching
システム変数を有効にし、場合によっては--ndb-batch-size
および--ndb-blob-write-batch-bytes
オプションで使用される値も増やすことをお薦めします。 これらのオプションはすべて、ソースサーバーのmy.cnf
ファイルで設定することも、ソース mysqld プロセスの起動時にコマンドラインで設定することもできます。 詳しくはセクション23.6.6「NDB Cluster レプリケーションの開始 (シングルレプリケーションチャネル)」,をご覧ください。