マルチソースレプリケーションの管理 - Amazon Relational Database Service

マルチソースレプリケーションの管理

以下のストアドプロシージャは、RDS for MySQL マルチソースレプリカでレプリケーションチャネルを設定および管理します。詳細については、「RDS for MySQL のマルチソースレプリケーションの設定」を参照してください。

これらのストアドプロシージャは、次のエンジンバージョンを実行している RDS for MySQL DB インスタンスでのみ使用できます。

  • 8.0.35 以降のマイナーバージョン

  • 5.7.44 以降のマイナーバージョン

注記

このドキュメントではソース DB インスタンスを RDS for MySQL DB インスタンスと呼びますが、これらの手順は Amazon RDS の外部で実行されている MySQL インスタンスでも機能します。

mysql.rds_next_source_log_for_channel

ソース DB インスタンスログの位置を、チャネルのソース DB インスタンスの次のバイナリログの先頭に変更します。このプロシージャは、マルチソースレプリカでレプリケーション I/O エラー 1236 が発生した場合にのみ使用してください。

Syntax

CALL mysql.rds_next_source_log_for_channel( curr_master_log, channel_name );

パラメータ

curr_master_log

現在のソースログファイルのインデックス。例えば、現在のファイルが mysql-bin-changelog.012345 という名前の場合は、インデックスは 12345 になります。現在のソースログファイルの名前を調べるには、SHOW REPLICA STATUS FOR CHANNEL 'channel_name' コマンドを実行し、Source_Log_File フィールドを確認します。

注記

MySQL の旧バージョンは、SHOW REPLICA STATUS ではなく SHOW SLAVE STATUS を使用していました。8.0.23 より前の MySQL バージョンを使用している場合は、SHOW SLAVE STATUS を使用します。

channel_name

マルチソースレプリカのレプリケーションチャネルの名前。各レプリケーションチャネルは、特定のホストとポートで実行されているシングルソース RDS for MySQL DB インスタンスからバイナリログイベントを受け取ります。

使用に関する注意事項

マスターユーザーが mysql.rds_next_source_log_for_channel を実行する必要があります。例えば、IO_Thread エラーが発生した場合、このプロシージャを使用して現在のバイナリログファイルのすべてのイベントをスキップし、channel_name で指定されたチャネルの次のバイナリログファイルからレプリケーションを再開できます。

マルチソースレプリカのチャネルでレプリケーションが失敗するとします。マルチソースレプリカで SHOW REPLICA STATUS FOR CHANNEL 'channel_1'\G を実行すると、次の結果が返されます。

mysql> SHOW REPLICA STATUS FOR CHANNEL 'channel_1'\G *************************** 1. row *************************** Replica_IO_State: Waiting for source to send event Source_Host: myhost.XXXXXXXXXXXXXXX.rr-rrrr-1.rds.amazonaws.com Source_User: ReplicationUser Source_Port: 3306 Connect_Retry: 60 Source_Log_File: mysql-bin-changelog.012345 Read_Source_Log_Pos: 1219393 Relay_Log_File: replica-relay-bin.000003 Relay_Log_Pos: 30223388 Relay_Source_Log_File: mysql-bin-changelog.012345 Replica_IO_Running: No Replica_SQL_Running: Yes Replicate_Do_DB:. . . Last_IO_Errno: 1236 Last_IO_Error: Got fatal error 1236 from master when reading data from binary log: 'Client requested master to start replication from impossible position; the first event 'mysql-bin-changelog.013406' at 1219393, the last event read from '/rdsdbdata/log/binlog/mysql-bin-changelog.012345' at 4, the last byte read from '/rdsdbdata/log/binlog/mysql-bin-changelog.012345' at 4.' Last_SQL_Errno: 0 Last_SQL_Error: . . Channel_name: channel_1 . . -- Some fields are omitted in this example output

Last_IO_Errno フィールドはインスタンスが I/O エラー 1236 を受け取ったことを示します。Source_Log_File フィールドは、ファイル名が mysql-bin-changelog.012345 であることを示しています。これは、ログファイルのインデックスが 12345 であることを表しています。エラーを解決するには、以下のパラメータを使用して mysql.rds_next_source_log_for_channel を呼び出すことができます。

CALL mysql.rds_next_source_log_for_channel(12345,'channel_1');
注記

MySQL の旧バージョンは、SHOW REPLICA STATUS ではなく SHOW SLAVE STATUS を使用していました。8.0.23 より前の MySQL バージョンを使用している場合は、SHOW SLAVE STATUS を使用します。

mysql.rds_reset_external_source_for_channel

指定されたチャネルでのレプリケーションプロセスを停止し、マルチソースレプリカからチャネルおよび関連する設定を削除します。

重要

この手順を実行するには、autocommit を有効にする必要があります。これを有効にするには、autocommit パラメータを 1 に設定します。パラメータの変更については、「DB パラメータグループのパラメータの変更」を参照してください。

構文

CALL mysql.rds_reset_external_source_for_channel (channel_name);

パラメータ

channel_name

マルチソースレプリカのレプリケーションチャネルの名前。各レプリケーションチャネルは、特定のホストとポートで実行されているシングルソース RDS for MySQL DB インスタンスからバイナリログイベントを受け取ります。

使用に関する注意事項

マスターユーザーが mysql.rds_reset_external_source_for_channel を実行する必要があります。このプロシージャは、削除されるチャネルに属するすべてのリレーログを削除します。

mysql.rds_set_external_source_for_channel

RDS for MySQL DB インスタンスのレプリケーションチャネルを設定して、別の RDS for MySQL DB インスタンスからデータをレプリケートします。

重要

この手順を実行するには、autocommit を有効にする必要があります。これを有効にするには、autocommit パラメータを 1 に設定します。パラメータの変更については、「DB パラメータグループのパラメータの変更」を参照してください。

注記

代わりに mysql.rds_set_external_source_with_delay_for_channel ストアドプロシージャを使用して、このチャネルを遅延レプリケーションで設定できます。

構文

CALL mysql.rds_set_external_source_for_channel ( host_name , host_port , replication_user_name , replication_user_password , mysql_binary_log_file_name , mysql_binary_log_file_location , ssl_encryption , channel_name );

パラメータ

host_name

RDS for MySQL ソース DB インスタンスのホスト名または IP アドレス。

host_port

RDS for MySQL ソース DB インスタンスで使用されるポート。ポート番号を変換する Secure Shell (SSH) ポートのレプリケーションがネットワーク設定に含まれる場合、SSH によって発行されるポート番号を指定します。

replication_user_name

RDS for MySQL ソース DB インスタンスの REPLICATION CLIENT および REPLICATION SLAVE アクセス許可を持つユーザーの ID。ソース DB インスタンスのレプリケーション専用のアカウントを使用することをお勧めします。

replication_user_password

replication_user_name で指定されたユーザー ID のパスワード。

mysql_binary_log_file_name

レプリケーション情報を含むソース DB インスタンスのバイナリログの名前。

mysql_binary_log_file_location

mysql_binary_log_file_name バイナリログ内の場所。レプリケーションでは、この場所からレプリケーション情報の読み取りをスタートします。

binlog ファイルの名前と場所は、ソース DB インスタンスで SHOW MASTER STATUS を実行することによって決定できます。

ssl_encryption

レプリケーション接続で Secure Socket Layer (SSL) 暗号化を使用するかどうかを指定する値。1 は SSL 暗号化を使用することを指定し、0 は暗号化を使用しないことを指定します。デフォルトは 0 です。

注記

MASTER_SSL_VERIFY_SERVER_CERT オプションはサポートされていません。このオプションは 0 に設定されます。つまり、接続は暗号化されますが、証明書は検証されません。

channel_name

レプリケーションチャネルの名前。各レプリケーションチャネルは、特定のホストとポートで実行されているシングルソース RDS for MySQL DB インスタンスからバイナリログイベントを受け取ります。

使用に関する注意事項

マスターユーザーが mysql.rds_set_external_source_for_channel を実行する必要があります。このプロシージャは、レプリケーションチャネルを作成するターゲット RDS for MySQL DB インスタンスで実行する必要があります。

mysql.rds_set_external_source_for_channel を実行する前に、マルチソースレプリカに必要な権限を持つレプリケーションユーザーをソース DB インスタンスに設定します。マルチソースレプリカをソース DB インスタンスに接続するには、ソース DB インスタンスに対する REPLICATION CLIENT および REPLICATION SLAVE アクセス許可を持つレプリケーションユーザーの replication_user_name および replication_user_password の値を指定する必要があります。

ソース DB インスタンスでレプリケーションユーザーを設定するには
  1. 選択した MySQL クライアントを使用して、ソース DB インスタンスに接続し、レプリケーションに使用するユーザーアカウントを作成します。次に例を示します。

    重要

    セキュリティのベストプラクティスとして、次の例に示すプレースホルダー値以外のパスワードを指定します。

    MySQL 8.0

    CREATE USER 'repl_user'@'example.com' IDENTIFIED WITH mysql_native_password BY 'password';

    MySQL 5.7

    CREATE USER 'repl_user'@'example.com' IDENTIFIED BY 'password';
  2. ソース DB インスタンスで、REPLICATION CLIENT および REPLICATION SLAVE 特権をレプリケーションユーザーに付与します。次の例では、ドメインの 「repl_user」ユーザーに、すべてのデータベースの REPLICATION CLIENT および REPLICATION SLAVE 特権を付与します。

    GRANT REPLICATION CLIENT, REPLICATION SLAVE ON *.* TO 'repl_user'@'example.com';

暗号化されたレプリケーションを使用するには、SSL 接続を使用するようにソース DB インスタンスを設定します。

mysql.rds_set_external_source_for_channel を呼び出し、このレプリケーションチャネルを設定した後、レプリカに対して mysql.rds_start_replication_for_channel を呼び出してチャネルでレプリケーションプロセスを開始できます。mysql.rds_reset_external_source_for_channel を呼び出してチャンネルのレプリケーションを停止し、レプリカからチャンネル設定を削除できます。

mysql.rds_set_external_source_for_channel を呼び出すと、Amazon RDS は、set channel source の時間、ユーザー、およびアクションをチャネル固有の詳細なしで mysql.rds_history テーブルに記録し、mysql.rds_replication_status テーブルにチャネル名を記録します。この情報は、内部使用およびモニタリングの目的でのみ記録されます。監査目的で完全なプロシージャ呼び出しを記録するには、アプリケーションの特定の要件に基づいて、監査ログまたは一般ログを有効にすることを検討してください。

RDS for MySQL DB インスタンスで実行すると、次の例は、ホスト sourcedb.example.comとポート 3306 で指定されたソースからデータをレプリケートするように、この DB インスタンスで channel_1 という名前のレプリケーションチャネルを設定します。

call mysql.rds_set_external_source_for_channel( 'sourcedb.example.com', 3306, 'repl_user', 'password', 'mysql-bin-changelog.0777', 120, 0, 'channel_1');

mysql.rds_set_external_source_with_auto_position_for_channel

オプションのレプリケーション遅延を使用して、RDS for MySQL DB インスタンスのレプリケーションチャネルを設定します。このレプリケーションは、グローバルトランザクション識別子 (GTID) に基づきます。

重要

この手順を実行するには、autocommit を有効にする必要があります。これを有効にするには、autocommit パラメータを 1 に設定します。パラメータの変更については、「DB パラメータグループのパラメータの変更」を参照してください。

構文

CALL mysql.rds_set_external_source_with_auto_position_for_channel ( host_name , host_port , replication_user_name , replication_user_password , ssl_encryption , delay , channel_name );

パラメータ

host_name

RDS for MySQL ソース DB インスタンスのホスト名または IP アドレス。

host_port

RDS for MySQL ソース DB インスタンスで使用されるポート。ポート番号を変換する Secure Shell (SSH) ポートのレプリケーションがネットワーク設定に含まれる場合、SSH によって発行されるポート番号を指定します。

replication_user_name

RDS for MySQL ソース DB インスタンスの REPLICATION CLIENT および REPLICATION SLAVE アクセス許可を持つユーザーの ID。ソース DB インスタンスのレプリケーション専用のアカウントを使用することをお勧めします。

replication_user_password

replication_user_name で指定されたユーザー ID のパスワード。

ssl_encryption

レプリケーション接続で Secure Socket Layer (SSL) 暗号化を使用するかどうかを指定する値。1 は SSL 暗号化を使用することを指定し、0 は暗号化を使用しないことを指定します。デフォルトは 0 です。

注記

MASTER_SSL_VERIFY_SERVER_CERT オプションはサポートされていません。このオプションは 0 に設定されます。つまり、接続は暗号化されますが、証明書は検証されません。

delay

ソース DB インスタンスからのレプリケーションを遅延させる最小秒数。

このパラメータの上限は 1 日 (86400 秒) です。

channel_name

レプリケーションチャネルの名前。各レプリケーションチャネルは、特定のホストとポートで実行されているシングルソース RDS for MySQL DB インスタンスからバイナリログイベントを受け取ります。

使用に関する注意事項

マスターユーザーが mysql.rds_set_external_source_with_auto_position_for_channel を実行する必要があります。このプロシージャは、レプリケーションチャネルを作成するターゲット RDS for MySQL DB インスタンスで実行する必要があります。

rds_set_external_source_with_auto_position_for_channel を実行する前に、マルチソースレプリカに必要な権限を持つレプリケーションユーザーをソース DB インスタンスに設定します。マルチソースレプリカをソース DB インスタンスに接続するには、ソース DB インスタンスに対する REPLICATION CLIENT および REPLICATION SLAVE アクセス許可を持つレプリケーションユーザーの replication_user_name および replication_user_password の値を指定する必要があります。

ソース DB インスタンスでレプリケーションユーザーを設定するには
  1. 選択した MySQL クライアントを使用して、ソース DB インスタンスに接続し、レプリケーションに使用するユーザーアカウントを作成します。次に例を示します。

    重要

    セキュリティのベストプラクティスとして、次の例に示すプレースホルダー値以外のパスワードを指定します。

    MySQL 8.0

    CREATE USER 'repl_user'@'example.com' IDENTIFIED WITH mysql_native_password BY 'password';

    MySQL 5.7

    CREATE USER 'repl_user'@'example.com' IDENTIFIED BY 'password';
  2. ソース DB インスタンスで、REPLICATION CLIENT および REPLICATION SLAVE 特権をレプリケーションユーザーに付与します。次の例では、ドメインの 「repl_user」ユーザーに、すべてのデータベースの REPLICATION CLIENT および REPLICATION SLAVE 特権を付与します。

    GRANT REPLICATION CLIENT, REPLICATION SLAVE ON *.* TO 'repl_user'@'example.com';

暗号化されたレプリケーションを使用するには、SSL 接続を使用するようにソース DB インスタンスを設定します。

mysql.rds_set_external_source_with_auto_position_for_channel を呼び出して、Amazon RDS DB インスタンスを特定のチャネルのリードレプリカとして設定した後、このリードレプリカで mysql.rds_start_replication_for_channel を呼び出して、そのチャネルのレプリケーションプロセスを開始できます。

mysql.rds_set_external_source_with_auto_position_for_channel を呼び出し、このレプリケーションチャネルを設定した後、レプリカに対して mysql.rds_start_replication_for_channel を呼び出してチャネルでレプリケーションプロセスを開始できます。mysql.rds_reset_external_source_for_channel を呼び出してチャンネルのレプリケーションを停止し、レプリカからチャンネル設定を削除できます。

RDS for MySQL DB インスタンスで実行すると、次の例は、この DB インスタンスで channel_1 という名前のレプリケーションチャネルを設定して、ホスト sourcedb.example.com とポート 3306 で指定されたソースからデータをレプリケートします。最小レプリケーション遅延は 1 時間 (3,600 秒) に設定されます。つまり、ソース RDS for MySQL DB インスタンスからの変更は、少なくとも 1 時間はマルチソースレプリカに適用されません。

call mysql.rds_set_external_source_with_auto_position_for_channel( 'sourcedb.example.com', 3306, 'repl_user', 'password', 0, 3600, 'channel_1');

mysql.rds_set_external_source_with_delay_for_channel

指定されたレプリケーション遅延を使用して、RDS for MySQL DB インスタンスのレプリケーションチャネルを設定します。

重要

この手順を実行するには、autocommit を有効にする必要があります。これを有効にするには、autocommit パラメータを 1 に設定します。パラメータの変更については、「DB パラメータグループのパラメータの変更」を参照してください。

構文

CALL mysql.rds_set_external_source_with_delay_for_channel ( host_name , host_port , replication_user_name , replication_user_password , mysql_binary_log_file_name , mysql_binary_log_file_location , ssl_encryption , delay , channel_name );

パラメータ

host_name

RDS for MySQL ソース DB インスタンスのホスト名または IP アドレス。

host_port

RDS for MySQL ソース DB インスタンスで使用されるポート。ポート番号を変換する Secure Shell (SSH) ポートのレプリケーションがネットワーク設定に含まれる場合、SSH によって発行されるポート番号を指定します。

replication_user_name

RDS for MySQL ソース DB インスタンスの REPLICATION CLIENT および REPLICATION SLAVE アクセス許可を持つユーザーの ID。ソース DB インスタンスのレプリケーション専用のアカウントを使用することをお勧めします。

replication_user_password

replication_user_name で指定されたユーザー ID のパスワード。

mysql_binary_log_file_name

ソース DB インスタンスのバイナリログの名前には、レプリケーション情報が含まれています。

mysql_binary_log_file_location

mysql_binary_log_file_name バイナリログ内の場所。レプリケーションでは、この場所からレプリケーション情報の読み取りをスタートします。

binlog ファイルの名前と場所は、SHOW MASTER STATUS出典データベースインスタンス上で実行することによって決定できます。

ssl_encryption

レプリケーション接続で Secure Socket Layer (SSL) 暗号化を使用するかどうかを指定する値。1 は SSL 暗号化を使用することを指定し、0 は暗号化を使用しないことを指定します。デフォルトは 0 です。

注記

MASTER_SSL_VERIFY_SERVER_CERT オプションはサポートされていません。このオプションは 0 に設定されます。つまり、接続は暗号化されますが、証明書は検証されません。

delay

ソース DB インスタンスからのレプリケーションを遅延させる最小秒数。

このパラメータの上限は 1 日 (86400 秒) です。

channel_name

レプリケーションチャネルの名前。各レプリケーションチャネルは、特定のホストとポートで実行されているシングルソース RDS for MySQL DB インスタンスからバイナリログイベントを受け取ります。

使用に関する注意事項

マスターユーザーが mysql.rds_set_external_source_with_delay_for_channel を実行する必要があります。このプロシージャは、レプリケーションチャネルを作成するターゲット RDS for MySQL DB インスタンスで実行する必要があります。

mysql.rds_set_external_source_with_delay_for_channel を実行する前に、マルチソースレプリカに必要な権限を持つレプリケーションユーザーをソース DB インスタンスに設定します。マルチソースレプリカをソース DB インスタンスに接続するには、ソース DB インスタンスに対する REPLICATION CLIENT および REPLICATION SLAVE アクセス許可を持つレプリケーションユーザーの replication_user_name および replication_user_password の値を指定する必要があります。

ソース DB インスタンスでレプリケーションユーザーを設定するには
  1. 選択した MySQL クライアントを使用して、ソース DB インスタンスに接続し、レプリケーションに使用するユーザーアカウントを作成します。次に例を示します。

    重要

    セキュリティのベストプラクティスとして、次の例に示すプレースホルダー値以外のパスワードを指定します。

    MySQL 8.0

    CREATE USER 'repl_user'@'example.com' IDENTIFIED WITH mysql_native_password BY 'password';

    MySQL 5.7

    CREATE USER 'repl_user'@'example.com' IDENTIFIED BY 'password';
  2. ソース DB インスタンスで、REPLICATION CLIENT および REPLICATION SLAVE 特権をレプリケーションユーザーに付与します。次の例では、ドメインの 「repl_user」ユーザーに、すべてのデータベースの REPLICATION CLIENT および REPLICATION SLAVE 特権を付与します。

    GRANT REPLICATION CLIENT, REPLICATION SLAVE ON *.* TO 'repl_user'@'example.com';

暗号化されたレプリケーションを使用するには、SSL 接続を使用するようにソース DB インスタンスを設定します。

mysql.rds_set_external_source_with_delay_for_channel を呼び出し、このレプリケーションチャネルを設定した後、レプリカに対して mysql.rds_start_replication_for_channel を呼び出してチャネルでレプリケーションプロセスを開始できます。mysql.rds_reset_external_source_for_channel を呼び出してチャンネルのレプリケーションを停止し、レプリカからチャンネル設定を削除できます。

mysql.rds_set_external_source_with_delay_for_channel を呼び出すと、Amazon RDS は、set channel source の時間、ユーザー、およびアクションをチャネル固有の詳細なしで mysql.rds_history テーブルに記録し、mysql.rds_replication_status テーブルにチャネル名を記録します。この情報は、内部使用およびモニタリングの目的でのみ記録されます。監査目的で完全なプロシージャ呼び出しを記録するには、アプリケーションの特定の要件に基づいて、監査ログまたは一般ログを有効にすることを検討してください。

RDS for MySQL DB インスタンスで実行すると、次の例は、この DB インスタンスで channel_1 という名前のレプリケーションチャネルを設定して、ホスト sourcedb.example.com とポート 3306 で指定されたソースからデータをレプリケートします。最小レプリケーション遅延は 1 時間 (3,600 秒) に設定されます。つまり、ソース RDS for MySQL DB インスタンスからの変更は、少なくとも 1 時間はマルチソースレプリカに適用されません。

call mysql.rds_set_external_source_with_delay_for_channel( 'sourcedb.example.com', 3306, 'repl_user', 'password', 'mysql-bin-changelog.000777', 120, 0, 3600, 'channel_1');

mysql.rds_set_source_auto_position_for_channel

バイナリログファイルの位置、またはグローバルトランザクション識別子 (GTID) に基づいて、指定されたチャネルのレプリケーションモードを設定します。

構文

CALL mysql.rds_set_source_auto_position_for_channel ( auto_position_mode , channel_name );

パラメータ

auto_position_mode

ファイルの位置に基づくレプリケーション、または GTID ベースのレプリケーションかどうかを示す値:

  • 0 - バイナリログファイルの位置に基づくレプリケーション方法を使用します。デフォルト: 0

  • 1 - GTID ベースのレプリケーション方法を使用します。

channel_name

マルチソースレプリカのレプリケーションチャネルの名前。各レプリケーションチャネルは、特定のホストとポートで実行されているシングルソース RDS for MySQL DB インスタンスからバイナリログイベントを受け取ります。

使用に関する注意事項

マスターユーザーが mysql.rds_set_source_auto_position_for_channel を実行する必要があります。このプロシージャは、指定されたチャネルでレプリケーションを再起動して、指定された自動位置モードを適用します。

次の例は、channel_1 の自動位置モードを、GTID ベースのレプリケーション方法を使用するように設定します。

call mysql.rds_set_source_auto_position_for_channel(1,'channel_1');

mysql.rds_set_source_delay_for_channel

指定されたチャネルについて、ソースデータベースインスタンスからマルチソースレプリカへのレプリケーションを遅延させる最小秒数を設定します。

構文

CALL mysql.rds_set_source_delay_for_channel(delay, channel_name);

パラメータ

delay

ソース DB インスタンスからのレプリケーションを遅延させる最小秒数。

このパラメータの上限は 1 日 (86400 秒) です。

channel_name

マルチソースレプリカのレプリケーションチャネルの名前。各レプリケーションチャネルは、特定のホストとポートで実行されているシングルソース RDS for MySQL DB インスタンスからバイナリログイベントを受け取ります。

使用に関する注意事項

マスターユーザーが mysql.rds_set_source_delay_for_channel を実行する必要があります。このプロシージャを使用するには、まず、mysql.rds_stop_replication_for_channel を呼び出して、レプリケーションを停止します。次に、このプロシージャを呼び出して、レプリケーションの遅延値を設定します。遅延が設定されたら、mysql.rds_start_replication_for_channel を呼び出して、レプリケーションを再開します。

次の例は、マルチソースレプリカの channel_1 のソースデータベースインスタンスからのレプリケーションの遅延を少なくとも 1 時間 (3,600 秒) に設定します。

CALL mysql.rds_set_source_delay_for_channel(3600,'channel_1');

mysql.rds_skip_repl_error_for_channel

バイナリログイベントをスキップし、指定したチャネルの MySQL DB マルチソースレプリカのレプリケーションエラーを削除します。

構文

CALL mysql.rds_skip_repl_error_for_channel(channel_name);

パラメータ

channel_name

マルチソースレプリカのレプリケーションチャネルの名前。各レプリケーションチャネルは、特定のホストとポートで実行されているシングルソース RDS for MySQL DB インスタンスからバイナリログイベントを受け取ります。

使用に関する注意事項

マスターユーザーはリードレプリカに対して mysql.rds_skip_repl_error_for_channel プロシージャを実行する必要があります。mysql.rds_skip_repl_error を使用してリードレプリカのエラーをスキップする場合と同様の方法で、このプロシージャを使用できます。詳細については、「mysql.rds_skip_repl_error の手順を呼び出します。」を参照してください。

注記

GTID ベースのレプリケーションのエラーをスキップするには、代わりにプロシージャ mysql.rds_skip_transaction_with_gtid を使用することをお勧めします。

MySQL の SHOW REPLICA STATUS FOR CHANNEL 'channel_name'\G コマンドを実行して、エラーがあるかどうかを判断します。レプリケーションエラーが重要ではない場合、mysql.rds_skip_repl_error_for_channel を実行して、エラーをスキップすることができます。複数のエラーがある場合、mysql.rds_skip_repl_error_for_channel は、指定されたレプリケーションチャネルの最初のエラーを削除してから、他にもエラーが存在することを警告します。その後で SHOW REPLICA STATUS FOR CHANNEL 'channel_name'\G を使用して、次のエラーに対処するための適切な対応方法を判断することができます。戻り値の詳細については、MySQL ドキュメントの「SHOW REPLICA STATUS statement」(SHOW REPLICA STATUS ステートメント) を参照してください。

mysql.rds_start_replication_for_channel

RDS for MySQL DB インスタンスから指定されたチャネルのマルチソースレプリカへのレプリケーションを開始します。

注記

mysql.rds_start_replication_until_for_channel、または mysql.rds_start_replication_until_gtid_for_channel ストアドプロシージャを使用して、RDS for MySQL DB インスタンスからレプリケーションをスタートし、指定したバイナリログファイルの場所でレプリケーションを停止できます。

構文

CALL mysql.rds_start_replication_for_channel(channel_name);

パラメータ

channel_name

マルチソースレプリカのレプリケーションチャネルの名前。各レプリケーションチャネルは、特定のホストとポートで実行されているシングルソース RDS for MySQL DB インスタンスからバイナリログイベントを受け取ります。

使用に関する注意事項

マスターユーザーが mysql.rds_start_replication_for_channel を実行する必要があります。ソース RDS for MySQL DB インスタンスからデータをインポートした後、マルチソースレプリカでこのコマンドを実行して、指定したチャネルでレプリケーションを開始します。

次の例では、マルチソースレプリカの channel_1 でレプリケーションを開始します。

CALL mysql.rds_start_replication_for_channel('channel_1');

mysql.rds_start_replication_until_for_channel

指定されたチャネルの RDS for MySQL DB インスタンスからレプリケーションを開始し、指定されたバイナリログファイルの場所でレプリケーションを停止します。

構文

CALL mysql.rds_start_replication_until_for_channel ( replication_log_file , replication_stop_point , channel_name );

パラメータ

replication_log_file

ソース DB インスタンスのバイナリログの名前には、レプリケーション情報が含まれています。

replication_stop_point

replication_log_file バイナリログ内でレプリケーションが停止する場所。

channel_name

マルチソースレプリカのレプリケーションチャネルの名前。各レプリケーションチャネルは、特定のホストとポートで実行されているシングルソース RDS for MySQL DB インスタンスからバイナリログイベントを受け取ります。

使用に関する注意事項

マスターユーザーが mysql.rds_start_replication_until_for_channel を実行する必要があります。このプロシージャでは、レプリケーションが開始され、指定されたバイナリログファイルの位置に達すると停止します。バージョン 8.0 では、プロシージャは SQL_Thread のみを停止します。バージョン 5.7 では、プロシージャは SQL_ThreadIO_Thread の両方を停止します。

replication_log_file パラメータで指定されたファイル名は、ソース DB インスタンスの binlog ファイル名と一致する必要があります。

replication_stop_point パラメータで指定した停止場所が過去の時点である場合、レプリケーションは即座に停止します。

次の例では、channel_1 でレプリケーションを開始し、mysql-bin-changelog.000777 バイナリログファイルの位置 120 に達するまで変更をレプリケートします。

call mysql.rds_start_replication_until_for_channel( 'mysql-bin-changelog.000777', 120, 'channel_1' );

mysql.rds_start_replication_until_gtid_for_channel

指定されたチャネルで RDS for MySQL DB インスタンスからレプリケーションを開始し、指定されたグローバルトランザクション識別子 (GTID) でレプリケーションを停止します。

構文

CALL mysql.rds_start_replication_until_gtid_for_channel(gtid,channel_name);

パラメータ

gtid

その後でレプリケーションを停止する GTID。

channel_name

マルチソースレプリカのレプリケーションチャネルの名前。各レプリケーションチャネルは、特定のホストとポートで実行されているシングルソース RDS for MySQL DB インスタンスからバイナリログイベントを受け取ります。

使用に関する注意事項

マスターユーザーが mysql.rds_start_replication_until_gtid_for_channel を実行する必要があります。このプロシージャは、指定されたチャネルでレプリケーションを開始し、指定された GTID 値までのすべての変更を適用します。その後、チャンネルのレプリケーションを停止します。

gtidパラメータで指定したトランザクションがレプリカによって既に実行されている場合、レプリケーションは即座に停止します。

この手順を実行する前に、replica_parallel_workers または slave_parallel_workers の値を 0 に設定して、マルチスレッドレプリケーションを無効にする必要があります。

次の例では、channel_1 でレプリケーションを開始し、GTID 3E11FA47-71CA-11E1-9E33-C80AA9429562:23 に達するまで変更をレプリケートします。

call mysql.rds_start_replication_until_gtid_for_channel('3E11FA47-71CA-11E1-9E33-C80AA9429562:23','channel_1');

mysql.rds_stop_replication_for_channel

指定されたチャネルで MySQL DB インスタンスからのレプリケーションを停止します。

構文

CALL mysql.rds_stop_replication_for_channel(channel_name);

パラメータ

channel_name

マルチソースレプリカのレプリケーションチャネルの名前。各レプリケーションチャネルは、特定のホストとポートで実行されているシングルソース RDS for MySQL DB インスタンスからバイナリログイベントを受け取ります。

使用に関する注意事項

マスターユーザーが mysql.rds_stop_replication_for_channel を実行する必要があります。

次の例では、マルチソースレプリカの channel_1 でレプリケーションを停止します。

CALL mysql.rds_stop_replication_for_channel('channel_1');