mysql.rds_set_external_master_with_delay - Amazon Relational Database Service

mysql.rds_set_external_master_with_delay

Amazon RDS MySQL DB インスタンスを、Amazon RDS の外部で動作する MySQL インスタンスのリードレプリカとして設定し、さらに遅延レプリケーションを設定します。

重要

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

構文

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 バイナリログ内の場所。レプリケーションでは、この場所からレプリケーション情報の読み取りを開始します。

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 の外部インスタンスをソースデータベースインスタンスとして設定するには

  1. 選択した MySQL クライアントを使用して、MySQL の外部インスタンスに接続し、レプリケーションに使用されるユーザーアカウントを作成します。次に例を示します。

    CREATE USER 'repl_user'@'mydomain.com' IDENTIFIED BY 'SomePassW0rd'
  2. MySQL の外部インスタンスで、REPLICATION CLIENTREPLICATION SLAVE の特権をレプリケーションユーザーに付与します。次の例では、ドメインの 'repl_user' ユーザーに、すべてのデータベースの REPLICATION CLIENT および REPLICATION SLAVE 特権を付与します。

    GRANT REPLICATION CLIENT, REPLICATION SLAVE ON *.* TO 'repl_user'@'mydomain.com' IDENTIFIED BY 'SomePassW0rd'

詳細については、「Amazon RDS の外部で実行される MySQL または MariaDB インスタンスとのレプリケーション」を参照してください。

注記

可能な場合は、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 MySQL の GTID ベースレプリケーションを使用する」を参照してください。

mysql.rds_set_external_master_with_delay プロシージャは、以下のバージョンの Amazon RDS MySQL で利用できます。

  • MySQL 5.6.40 以降の 5.6 バージョン

  • MySQL 5.7.22 以降の 5.7 バージョン

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);