Aurora と MySQL との間、または Aurora と別の Aurora DB クラスターとの間のレプリケーション (バイナリログレプリケーション)
Amazon Aurora MySQL は MySQL と互換性があるため、MySQL データベースと Amazon Aurora MySQL DB クラスターとの間のレプリケーションを設定できます。このタイプのレプリケーションでは、MySQL バイナリログレプリケーションが使用され、一般に バイナリログレプリケーションと呼ばれます。Aurora でバイナリログレプリケーションを使用する場合は、MySQL データベースで MySQL バージョン 5.5 以降を実行することをお勧めします。Aurora MySQL DB クラスターがレプリケーションソースまたはレプリカである場合は、レプリケーションを設定できます。Amazon RDS MySQL DB インスタンス、Amazon RDS の外部の MySQL データベース、または別の Aurora MySQL DB クラスターを使用してレプリケートできます。
また、別の AWS リージョンで Amazon RDS MySQL DB インスタンス、または Aurora MySQL DB クラスターにレプリケートすることもできます。AWS リージョン間のレプリケーションを実行するときは、DB クラスターと DB インスタンスがパブリックにアクセス可能であることを確認してください。Aurora MySQL DB クラスターは、VPC のパブリックサブネットの一部である必要があります。
Aurora MySQL DB クラスターと Aurora MySQL DB クラスター間のレプリケーションを別のリージョンに設定する場合、Aurora MySQL DB クラスターをソース DB クラスターとは異なる AWS リージョン内のリードレプリカとして作成できます。詳細については、「AWS リージョン間での Amazon Aurora MySQL DB クラスターのレプリケーション」を参照してください。
Aurora MySQL 2.04 以上では、レプリケーションにグローバルトランザクション識別子 (GTID) を使用するソースまたはターゲットと Aurora MySQL との間でレプリケートできます。Aurora MySQL DB クラスターの GTID 関連のパラメータ内に、外部データベースの GTID ステータスと互換性がある設定が含まれていることを確認してください。これを行う方法については、「 Aurora MySQL の GTID ベースレプリケーションを使用する」を参照してください。
Aurora MySQL と MySQL との間でレプリケートする場合は、必ず InnoDB テーブルのみを使用します。MyISAM テーブルをレプリケートする場合は、これらのテーブルを以下のコマンドを使用して InnoDB に変換してから、レプリケーションを設定できます。
alter table <schema>.<table_name> engine=innodb, algorithm=copy;
Aurora MySQL と MySQL との間でレプリケーションを設定するには、次のステップを使用します。各ステップについて以下に詳しく説明します。
2.レプリケーションソースのバイナリログを不要になるまで保持する
MySQL または別の Aurora DB クラスターとのレプリケーションの設定
MySQL を使用して Aurora レプリケーションをセットアップするには、次のステップに従います。
1.レプリケーションソースのバイナリログ記録を有効にする
以下のデータベースエンジンのバイナリログ記録をレプリケーションソースで有効にする手順を確認します。
データベースエンジン | Instructions |
---|---|
Aurora |
Aurora MySQL DB クラスターのバイナリログ記録を有効にするには
詳細については、「Amazon Aurora の DB クラスターパラメータと DB インスタンスパラメータ」および「DB パラメータグループおよび DB クラスターパラメータグループを使用する」を参照してください。 |
RDS MySQL |
Amazon RDS DB インスタンスのバイナリログ記録を有効にするには Amazon RDS DB インスタンスのバイナリログ記録を直接有効にすることはできませんが、以下のいずれかの操作により有効にすることができます。
|
MySQL (外部) |
暗号化レプリケーションを設定するには Aurora MySQL バージョン 5.6 を使用してデータを安全に複製するには、暗号化されたレプリケーションを使用できます。 現在、外部の MySQL データベースからの暗号化されたレプリケーションは Aurora MySQL バージョン 5.6 でのみサポートされています。 暗号化レプリケーションを使う必要がない場合、このステップをスキップできます。 暗号化レプリケーションを使用するための前提条件は次のとおりです。
暗号化のレプリケーション中、Aurora MySQL DB クラスターはクライアントとして MySQL データベースサーバーに動作します。Aurora MySQL 用の証明書およびキーは、.pem 形式のファイルにあります。
外部 MySQL データベースのバイナリログ記録を有効にするには
|
2.レプリケーションソースのバイナリログを不要になるまで保持する
MySQL バイナリログのレプリケーションを使用しているとき、Amazon RDS によってレプリケーションプロセスは管理されません。したがって、レプリケーションソースのバイナリログファイルは、変更がレプリカに適用されるまで保持する必要があります。バイナリログが保持されていれば、障害発生時にソースデータベースを復元できます。
以下のデータベースエンジンのバイナリログを維持する手順を確認します。
データベースエンジン | Instructions |
---|---|
Aurora |
Aurora MySQL DB クラスターのバイナリログを保持するには Aurora MySQL DB クラスターのバイナリログファイルにはアクセスできません。そのため、確実に変更がレプリカに適用されてから、レプリケーションソースのバイナリログファイルが Amazon RDS によって削除されるように、バイナリログファイルの保持期間は十分に長く設定する必要があります。Aurora MySQL DB クラスターのバイナリログファイルは最大 90 日間、保持できます。 MySQL データベースまたは RDS MySQL DB インスタンスをレプリカとしてレプリケーションを設定する場合、レプリカを作成するデータベースが巨大であれば、レプリカへのデータベースの最初のコピーが完了し、レプリカラグが 0 に達するまで、バイナリログファイルが保持されるように、その保持期間は長く設定してください。 バイナリログの保持タイムフレームを設定するには、「mysql_rds_set_configuration」の手順を使用して、DB クラスターのバイナリログファイルの保持期間に合わせて、
レプリケーションが開始された後、レプリカに対して
|
RDS MySQL |
Amazon RDS DB インスタンスのバイナリログを保持するには 前のセクションで説明しているように、Amazon RDS DB インスタンスのバイナリログファイルを保持するには、その保持期間を Aurora MySQL DB クラスターのものと同様に設定します。 DB インスタンスのリードレプリカを作成しても、Amazon RDS DB インスタンスのバイナリログファイルを保持できます。このリードレプリカはバイナリログファイルの保持専用に一時的に作成されます。作成されたリードレプリカに対して
mysql_rds_stop_replication プロシージャを呼び出します ( |
MySQL (外部) |
外部 MySQL データベースのバイナリログを有効にするには 外部 MySQL データベースのバイナリログファイルは Amazon RDS によって管理されていないため、手動で削除されるまでは保持されます。 レプリケーションが開始された後、レプリカに対して |
3.レプリケーションソースのスナップショットを作成する
レプリケーションソースのスナップショットは、レプリカにデータのベースラインコピーをロードし、その時点からレプリケーションを開始するために使用します。
以下のデータベースエンジンのレプリケーションソースのスナップショットを作成する手順を確認します。
データベースエンジン | Instructions |
---|---|
Aurora |
Aurora MySQL DB クラスターのスナップショットを作成するには
|
RDS MySQL |
Amazon RDS DB インスタンスのスナップショットを作成するには
|
MySQL (外部) |
外部 MySQL データベースのスナップショットを作成するには
|
4.レプリカターゲットにスナップショットをロードする
Amazon RDS の外部 MySQL データベースのダンプからデータをロードする場合、ダンプファイルのコピー先となる EC2 インスタンスを作成してから、その EC2 インスタンスから DB クラスターまたは DB インスタンスにデータをロードします。この方法では、ダンプファイルを EC2 インスタンスにコピーする前に圧縮して、Amazon RDS へのデータのコピーに関連するネットワークコストを削減できます。また、ダンプファイルを暗号化して、ネットワーク経由で転送されるデータを保護することもできます。
以下のデータベースエンジンのレプリカターゲットにレプリケーションソースのスナップショットをロードする手順を確認します。
データベースエンジン | Instructions |
---|---|
Aurora |
Aurora MySQL DB クラスターにスナップショットをロードするには
|
RDS MySQL |
Amazon RDS DB インスタンスにスナップショットをロードするには
|
MySQL (外部) |
外部 MySQL データベースにスナップショットをロードするには 外部 MySQL データベースに DB スナップショットまたは DB クラスターのスナップショットをロードすることはできません。代わりに、
|
5.レプリカターゲットでレプリケーションを有効にする
レプリケーションを有効化する前に、Aurora MySQL DB クラスターまたは RDS MySQL DB インスタンスレプリカターゲットのスナップショットを手動で作成することをお勧めします。問題が発生し、DB クラスターまたは DB インスタンスレプリカターゲットとのレプリケーションを再開する必要がある場合は、このスナップショットから DB クラスターまたは DB インスタンスを復元できます。そのために、再びレプリカターゲットにデータをインポートする必要はありません。
また、レプリケーション専用のユーザー ID を作成します。次に例を示します。
mysql>
CREATE USER 'repl_user
'@'<domain_name>
' IDENTIFIED BY '<password>
';
ユーザーには REPLICATION CLIENT
および REPLICATION SLAVE
権限が必要です。ユーザーのこれらの権限を付与します。
GRANT REPLICATION CLIENT, REPLICATION SLAVE ON *.* TO '
repl_user
'@'<domain_name>
';
暗号化レプリケーションを使用する必要がある場合は、レプリケーションのユーザーに対して SSL 接続を要求します。たとえば、以下のいずれかのステートメントを使用して、ユーザーアカウント
repl_user
に SSL 接続を要求できます。
GRANT USAGE ON *.* TO '
repl_user
'@'<domain_name>
' REQUIRE SSL;
REQUIRE SSL
が含まれていない場合には、レプリケーション接続がメッセージの表示なしで非暗号化接続に戻る場合があります。
以下のデータベースエンジンの以下のレプリケーションを有効にする手順を確認します。
データベースエンジン | Instructions |
---|---|
Aurora |
Aurora MySQL DB クラスターからのレプリケーションを有効にするには
|
RDS MySQL |
Amazon RDS DB インスタンスからのレプリケーションを有効にするには
|
MySQL (外部) |
外部 MySQL データベースからのレプリケーションを有効にするには
|
6.レプリカをモニタリングする
Aurora MySQL DB クラスターと MySQL との間のレプリケーションを設定する場合、Aurora MySQL DB クラスターがレプリカターゲットであれば、そのクラスターのフェイルオーバーイベントをモニタリングする必要があります。フェイルオーバーが発生すると、レプリカターゲットである DB クラスターが、新しいホスト上に別のネットワークアドレスで再作成されます。フェイルオーバーイベントをモニタリングする方法については、「Amazon RDS イベント通知の使用」を参照してください。
また、レプリカターゲットに接続し、SHOW SLAVE STATUS
コマンドを実行することで、レプリケーションソースからレプリカターゲットへのコピーの進行状況をモニタリングできます。このコマンドの出力の Seconds Behind Master
フィールドに、マスターからレプリカターゲットへのコピーの進行状況が示されます。
Aurora と MySQL との間、または Aurora と別の Aurora DB クラスターとの間のレプリケーションの停止
MySQL DB インスタンス、外部 MySQL データベース、または別の Aurora DB クラスターでのバイナリログのレプリケーションを停止するには、このトピックの後で詳しく説明するステップに従ってください。
1.レプリカターゲットでバイナリログのレプリケーションを停止する
1.レプリカターゲットでバイナリログのレプリケーションを停止する
以下のデータベースエンジンのバイナリログレプリケーションを停止する手順を確認します。
データベースエンジン | Instructions |
---|---|
Aurora |
Aurora MySQL DB クラスターレプリカターゲットでのバイナリログのレプリケーションを停止するには レプリカターゲットである Aurora DB クラスターに接続し、 mysql_rds_stop_replication 手順を呼び出します。 |
RDS MySQL |
Amazon RDS DB インスタンスのバイナリログのレプリケーションを停止するには レプリカターゲットである RDS DB インスタンスに接続し、 mysql_rds_stop_replication 手順を呼び出します。 |
MySQL (外部) |
外部 MySQL データベースのバイナリログのレプリケーションを停止するには MySQL データベースに接続して、 |
2.レプリケーションソースのバイナリログ記録を無効にする
以下のデータベースエンジンのバイナリログ記録をレプリケーションソースで無効にする手順を確認します。
データベースエンジン | Instructions |
---|---|
Aurora |
Amazon Aurora DB クラスターのバイナリログ記録を無効にするには
|
RDS MySQL |
Amazon RDS DB インスタンスのバイナリログ記録を無効にするには Amazon RDS DB インスタンスのバイナリログ記録は、直接無効にすることはできませんが、以下のいずれかの操作により無効にできます。
|
MySQL (外部) |
外部 MySQL データベースのバイナリログ記録を無効にするには MySQL データベースに接続して、
|