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


MySQL 8.0 リファレンスマニュアル  /  ...  /  NDB Cluster のレプリケーションの準備

23.6.5 NDB Cluster のレプリケーションの準備

NDB Cluster のレプリケーションの準備には、次の手順が含まれます:

  1. すべての MySQL サーバーに対してバージョンの互換性を確認します (セクション23.6.2「NDB Cluster レプリケーションの一般的な要件」を参照してください)。

  2. 次の 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';

    セキュリティ上の理由から、レプリケーションアカウントには、他の目的には使用されない一意のユーザーアカウントを使用することをお薦めします。

  3. ソースを使用するようにレプリカを設定します。 これは、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「レプリケーションおよびバイナリロギングのオプションと変数」 を参照してください。

  4. ソースクラスタがすでに使用されている場合は、ソースのバックアップを作成してレプリカにロードし、レプリカがソースと同期するのに必要な時間を短縮できます。 レプリカで 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 つのセクションで説明する追加ステップに従います。

  5. レプリケーションソースとして機能する各 MySQL サーバーに一意のサーバー ID が割り当てられ、行ベースの形式を使用してバイナリロギングが有効になっていることを確認します。 (セクション17.2.1「レプリケーション形式」を参照してください。) また、slave_allow_batching システム変数を有効にし、場合によっては --ndb-batch-size および --ndb-blob-write-batch-bytes オプションで使用される値も増やすことをお薦めします。 これらのオプションはすべて、ソースサーバーの my.cnf ファイルで設定することも、ソース mysqld プロセスの起動時にコマンドラインで設定することもできます。 詳しくはセクション23.6.6「NDB Cluster レプリケーションの開始 (シングルレプリケーションチャネル)」,をご覧ください。


関連キーワード:  NDB, テーブル, ndbinfo, ndb, replica, バックアップ, ノード, ソース, データ, 構成