mysql.rds_set_external_master_with_delay
RDS for MySQL DB インスタンスを、Amazon RDS の外部で動作する MySQL インスタンスのリードレプリカとして設定し、さらに遅延レプリケーションを設定します。
この手順を実行するには、autocommit
を有効にする必要があります。これを有効にするには、autocommit
パラメータを 1
に設定します。パラメータの変更については、「DB パラメータグループのパラメータの変更」を参照してください。
[Syntax] (構文)
CALL mysql.rds_set_external_master_with_delay ( host_name , host_port , replication_user_name , replication_user_password , mysql_binary_log_file_name , mysql_binary_log_file_location , ssl_encryption , delay );
パラメータ
- host_name
-
Amazon RDS の外部で動作する MySQL インスタンス (出典データベースインスタンス) のホスト名または IP アドレス。
- host_port
-
Amazon RDS の外部で動作する MySQL インスタンス (出典データベースインスタンス) で使用されるポート。ポート番号を変換する SSH ポートのレプリケーションがネットワーク設定に含まれる場合、SSH によって公開されるポート番号を指定します。
- replication_user_name
-
Amazon RDS の外部で実行される MySQL インスタンスの
REPLICATION CLIENT
およびREPLICATION SLAVE
のアクセス許可を持つユーザーの ID。外部インスタンスのレプリケーション専用のアカウントを使用することをお勧めします。 - replication_user_password
-
replication_user_name
で指定されたユーザー ID のパスワード。 - mysql_binary_log_file_name
-
出典データベースインスタンスのバイナリログの名前には、レプリケーション情報が含まれています。
- 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
-
出典データベースインスタンスからのレプリケーションを遅延させる最小秒数。
このパラメータの上限は 1 日 (86400 秒) です。
使用に関する注意事項
マスターユーザーが mysql.rds_set_external_master_with_delay
を実行する必要があります。このプロシージャは、Amazon RDS の外部で動作する MySQL インスタンスのリードレプリカとして設定される MySQL DB インスタンス上で実行する必要があります。
mysql.rds_set_external_master_with_delay
を実行する前に、Amazon RDS の外部で動作する MySQL インスタンスを出典データベースインスタンスとして必ず設定してください。Amazon RDS の外部で実行する MySQL インスタンスに接続するには、replication_user_name
および replication_user_password
の値を指定する必要があります。これらの値は、MySQL の外部インスタンスで、REPLICATION CLIENT
および REPLICATION SLAVE
アクセス権限を持つレプリケーションユーザーを示す必要があります。
MySQL の外部インスタンスを出典データベースインスタンスとして設定するには
選択した MySQL クライアントを使用して、MySQL の外部インスタンスに接続し、レプリケーションに使用されるユーザーアカウントを作成します。次に例を示します。
CREATE USER 'repl_user'@'mydomain.com' IDENTIFIED BY 'SomePassW0rd'
-
MySQL の外部インスタンスで、
REPLICATION CLIENT
とREPLICATION SLAVE
の特権をレプリケーションユーザーに付与します。次の例では、ドメインのREPLICATION CLIENT
ユーザーに、すべてのデータベースのREPLICATION SLAVE
および'repl_user'
特権を付与します。GRANT REPLICATION CLIENT, REPLICATION SLAVE ON *.* TO 'repl_user'@'mydomain.com' IDENTIFIED BY 'SomePassW0rd'
詳細については、「外部のソースインスタンスを使用したバイナリログファイル位置のレプリケーションの設定」を参照してください。
可能な場合は、2 つの Amazon RDS DB インスタンス間のレプリケーションを管理するために、リードレプリカを使用することをお勧めします。その場合、このプロシージャとレプリケーション関連のストアドプロシージャだけを使用することをお勧めします。これらのプラクティスにより、Amazon RDS DB インスタンス間で、より複雑なレプリケーショントポロジが有効になります。これらのストアドプロシージャは、主に Amazon RDS 外部で実行されている MySQL インスタンスのレプリケーションの有効化のために提供されています。Amazon RDS DB インスタンス間でのレプリケーションの管理の詳細については、「リードレプリカの使用」を参照してください。
mysql.rds_set_external_master_with_delay
を呼び出して Amazon RDS DB インスタンスをリードレプリカとして設定した後で、このリードレプリカで mysql.rds_start_replication を呼び出してレプリケーションプロセスをスタートできます。mysql.rds_reset_external_master を呼び出して、リードレプリカの設定を削除することもできます。
mysql.rds_set_external_master_with_delay
を呼び出すと、Amazon RDS では、時刻、ユーザー、set master
アクションが mysql.rds_history
テーブルと mysql.rds_replication_status
テーブルに記録されます。
障害復旧のために、このプロシージャを mysql.rds_start_replication_until または mysql.rds_start_replication_until_gtid ストアドプロシージャで使用できます。mysql.rds_set_external_master_with_delay
プロシージャを実行して、遅延したリードレプリカへの変更を災害発生直前の時点までロールフォワードできます。mysql.rds_start_replication_until
でのレプリケーションが停止したら、「リードレプリカをスタンドアロン DB インスタンスに昇格させる」の手順に従ってリードレプリカを新しいプライマリ DB インスタンスに昇格させることができます。
mysql.rds_rds_start_replication_until_gtid
プロシージャを使用するためには、GTID ベースのレプリケーションを有効にする必要があります。障害の原因となることが知られている特定の GTID ベースの処理をスキップするために、mysql.rds_skip_transaction_with_gtid ストアドプロシージャを使用できます。GTID ベースのレプリケーションの使用に関する詳細については、「Amazon RDS for MySQL の GTID ベースレプリケーションを使用する」を参照してください。
mysql.rds_set_external_master_with_delay
プロシージャは、以下のバージョンの RDS for MySQL で利用できます。
-
MySQL のバージョン 8.0 (8.0.26 以降)
-
MySQL の バージョン 5.7 (5.7.22 以降)
例
MySQL DB インスタンス上で実行すると、DB インスタンスが Amazon RDS の外部で動作する MySQL インスタンスのリードレプリカとして設定されます。次に例を示します。この例では、MySQL DB インスタンスでのレプリケーションの最小遅延間隔を 1 時間 (3600 秒) に設定します。Amazon RDS の外部で動作する MySQL 出典データベースインスタンスの変更は、少なくとも 1 時間は MySQL DB インスタンスのリードレプリカに適用されません。
call mysql.rds_set_external_master_with_delay( 'Externaldb.some.com', 3306, 'repl_user', 'SomePassW0rd', 'mysql-bin-changelog.000777', 120, 0, 3600);