マルチソースレプリケーションの管理
以下のストアドプロシージャは、RDS for MySQL マルチソースレプリカでレプリケーションチャネルを設定および管理します。詳しくは、「Amazon 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
- mysql.rds_reset_external_source_for_channel
- mysql.rds_set_external_source_for_channel
- mysql.rds_set_external_source_with_auto_position_for_channel
- mysql.rds_set_external_source_with_delay_for_channel
- mysql.rds_set_source_auto_position_for_channel
- mysql.rds_set_source_delay_for_channel
- mysql.rds_skip_repl_error_for_channel
- mysql.rds_start_replication_for_channel
- mysql.rds_start_replication_until_for_channel
- mysql.rds_start_replication_until_gtid_for_channel
- mysql.rds_stop_replication_for_channel
mysql.rds_next_source_log_for_channel
ソース DB インスタンスログの位置を、チャネルのソース DB インスタンスの次のバイナリログの先頭に変更します。このプロシージャは、マルチソースレプリカでレプリケーション I/O エラー 1236 が発生した場合にのみ使用してください。
構文
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 SLAVE STATUS
ではなくSHOW REPLICA 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
に設定します。パラメータの変更については、「Amazon RDS の 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
に設定します。パラメータの変更については、「Amazon RDS の 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 インスタンスでレプリケーションユーザーを設定するには
選択した 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
';ソース 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
に設定します。パラメータの変更については、「Amazon RDS の 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 インスタンスでレプリケーションユーザーを設定するには
選択した 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
';ソース 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
を呼び出す前に、必ず mysql.rds_set_external_source_gtid_purged を呼び出して、外部ソースから指定された GTID 範囲を持つ gtid_purged
システム変数を設定します。
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
に設定します。パラメータの変更については、「Amazon RDS の 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 インスタンスでレプリケーションユーザーを設定するには
選択した 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
';ソース 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
'\Gmysql.rds_skip_repl_error_for_channel
を実行して、エラーをスキップすることができます。複数のエラーがある場合、mysql.rds_skip_repl_error_for_channel
は、指定されたレプリケーションチャネルの最初のエラーを削除してから、他にもエラーが存在することを警告します。その後で SHOW REPLICA STATUS FOR CHANNEL '
を使用して、次のエラーに対処するための適切な対応方法を判断することができます。戻り値の詳細については、MySQL ドキュメントの「SHOW REPLICA STATUS statementchannel_name
'\G
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_Thread
と IO_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');