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


18.2.1.3 分散リカバリのユーザー資格証明

グループレプリケーションでは、分散リカバリプロセスを使用して、グループに参加するときにグループメンバーを同期します。 分散リカバリでは、group_replication_recovery という名前のレプリケーションチャネルを使用して、ドナーのバイナリログから参加メンバーにトランザクションを転送します。 したがって、グループレプリケーションが直接メンバー間レプリケーションチャネルを確立できるように、適切な権限を持つレプリケーションユーザーを設定する必要があります。 MySQL 8.0.17 から使用可能な分散リカバリの一部としてリモートクローニング操作の使用をサポートするようにグループメンバーが設定されている場合、このレプリケーションユーザーはドナーのクローンユーザーとしても使用され、このロールに対する正しい権限も必要です。 分散リカバリの詳細は、セクション18.4.3「分散リカバリ」 を参照してください。

すべてのグループメンバーで分散リカバリに同じレプリケーションユーザーを使用する必要があります。 分散リカバリ用のレプリケーションユーザーを作成するプロセスをバイナリログに取得し、分散リカバリを使用してユーザーの作成に使用されるステートメントをレプリケートできます。 または、レプリケーションユーザーを作成する前にバイナリロギングを無効にし、変更が他のサーバーインスタンスに伝播されないようにする場合などは、各メンバーでユーザーを手動で作成することもできます。 これを行う場合は、ユーザーを構成したあとでバイナリロギングを再度有効にしてください。

重要

グループの分散リカバリ接続で SSL を使用する場合は、参加メンバーがドナーに接続する前に、各サーバーにレプリケーションユーザーを作成する必要があります。 分散リカバリ接続用に SSL を設定し、SSL を必要とするレプリケーションユーザーを作成する手順は、セクション18.5.3「分散リカバリ接続の保護」 を参照してください

重要

デフォルトでは、MySQL 8 で作成されたユーザーは セクション6.4.1.2「SHA-2 プラガブル認証のキャッシュ」 を使用します。 分散リカバリのレプリケーションユーザーがキャッシュ SHA-2 認証プラグインを使用しており、分散リカバリ接続に SSL を使用していない場合、RSA キーペアがパスワード交換に使用されます。 レプリケーションユーザーの公開キーを参加メンバーにコピーするか、リクエスト時に公開キーを提供するようにドナーを構成できます。 これを行う手順は、セクション18.5.3.1「分散リカバリのためのセキュアなユーザー資格証明」 を参照してください。

分散リカバリのレプリケーションユーザーを作成するには、次のステップに従います:

  1. MySQL サーバーインスタンスを起動し、それにクライアントを接続します。

  2. レプリケーションユーザーをインスタンスごとに個別に作成するためにバイナリロギングを無効にする場合は、次のステートメントを発行します:

    mysql> SET SQL_LOG_BIN=0;
  3. 分散リカバリに使用する REPLICATION SLAVE 権限を持つ MySQL ユーザーを作成し、クローニングをサポートするようにサーバーが設定されている場合は、クローニング操作でドナーとして使用する BACKUP_ADMIN 権限を作成します。 この例では、パスワード password を持つユーザー rpl_user が表示されます。 サーバーを構成するときは、適切なユーザー名とパスワードを使用します:

    mysql> CREATE USER rpl_user@'%' IDENTIFIED BY 'password';
    mysql> GRANT REPLICATION SLAVE ON *.* TO rpl_user@'%';
    mysql> GRANT BACKUP_ADMIN ON *.* TO rpl_user@'%';
    mysql> FLUSH PRIVILEGES;
  4. バイナリロギングを無効にした場合は、次のステートメントを発行して、ユーザーを作成した直後に再度有効にします:

    mysql> SET SQL_LOG_BIN=1;
  5. レプリケーションユーザーを作成したら、分散リカバリで使用するユーザー資格証明をサーバーに指定する必要があります。 これを行うには、CHANGE REPLICATION SOURCE TO ステートメント (MySQL 8.0.23 の場合) または CHANGE MASTER TO ステートメント (MySQL 8.0.23 の場合) を使用して、ユーザー資格証明を group_replication_recovery チャネルの資格証明として設定します。 または、MySQL 8.0.21 から、START GROUP_REPLICATION ステートメントで分散リカバリのユーザー資格証明を指定できます。

    • CHANGE REPLICATION SOURCE TO | CHANGE MASTER TO を使用して設定されたユーザー資格証明は、サーバー上のレプリケーションメタデータリポジトリにプレーンテキストで格納されます。 これらは、group_replication_start_on_boot システム変数が ON に設定されている場合は自動起動を含め、グループレプリケーションが開始されるたびに適用されます。

    • START GROUP_REPLICATION で指定されたユーザー資格証明はメモリーにのみ保存され、STOP GROUP_REPLICATION ステートメントまたはサーバーの停止によって削除されます。 START GROUP_REPLICATION ステートメントを発行して資格証明を再度指定する必要があるため、これらの資格証明を使用してグループレプリケーションを自動的に開始することはできません。 ユーザー資格証明を指定するこの方法は、認可されていないアクセスからグループレプリケーションサーバーを保護するのに役立ちます。

    ユーザー資格証明を提供する各方法のセキュリティへの影響の詳細は、セクション18.5.3.1.3「レプリケーションユーザー資格証明のセキュアな提供」 を参照してください。 CHANGE REPLICATION SOURCE TO | CHANGE MASTER TO ステートメントを使用してユーザー資格証明を指定する場合は、rpl_user および password をユーザーの作成時に使用した値に置き換えて、サーバーインスタンスで次のステートメントを発行します:

    mysql> CHANGE MASTER TO MASTER_USER='rpl_user', MASTER_PASSWORD='password' \\
    		      FOR CHANNEL 'group_replication_recovery';
    
    Or from MySQL 8.0.23:
    mysql> CHANGE REPLICATION SOURCE TO SOURCE_USER='rpl_user', SOURCE_PASSWORD='password' \\
    		      FOR CHANNEL 'group_replication_recovery';

関連キーワード:  グループ, ユーザー, リカバリ, 分散, 資格, 証明, 作成, サーバー, ステートメント, 接続