Amazon Aurora の Global Database と クロスリージョンリードレプリカを同一リージョンに作成してみた

同一リージョンに、Amazon Aurora の Global Database Secondary Cluster と Cross-Region Read Replica が作成できるようになりました。
2020.08.30

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

こんにちは、崔です。

Amazon Aurora MySQL では、プライマリークラスターとは別のリージョンに対して、物理レプリケーションである Global Database の機能が提供されています。
また、論理レプリケーションであるクロスリージョンリードレプリカの機能を用いて、レプリケートすることも可能です。

今回、Amazon Aurora のドキュメント履歴を確認していると、 May 18,2020 に更新がされており、Aurora Global Database のセカンダリークラスターと同じリージョンにクロスリージョンリードレプリカを作成できるようになっていました。

Document History - Amazon Aurora

念の為、Amazon Aurora のドキュメントの更新された Using Amazon Aurora Global Databases - Amazon AuroraGitHub 更新履歴 で確認しました。

確かに、上記のピンクの部分、

You can't create an Aurora MySQL cross\-Region read replica from the primary cluster in the same region as a secondary cluster\.

の箇所がなくなっています。

それでは、早速、同一リージョンにGlobal Database のセカンダリークラスターとクロスリージョンリードレプリカを作成してみましょう。

Global Database の作成

では、まずこのクラスターからGlobal Databaseを作成していきます。

「アクション」から「リージョンの追加」を選択します。

「グローバルデータベース名」を指定、セカンダリーリージョンを選択します。

DBインスタンスサイズとマルチAZ配置を設定した後に、セカンダリーリージョンで利用するVPC等を設定します。
あらかじめ、セカンダリーリージョンでVPCやサブネット、サブネットグループ、パラメーターグループ等を作成しておきましょう。

セカンダリークラスターのクラスター名、インスタンス名、パラメーターグループを設定します。

各項目を設定後、「リージョンの追加」をクリックします。

これで、セカンダリークラスターの完成です。

クロスリージョンリードレプリカの作成

では、クロスリージョンリードレプリカを作成していきます。
まず、クラスタパラメータグループの binlog_formatOFF から MIXED へ設定します。

変更したパラメーターグループを反映させるために、プライマリークラスターのインスタンスを再起動します。

アクションメニューから、「クロスリージョンリードレプリカの作成」を選択します。

「送信先リージョン」、「DBサブネットグループ」、「クラスター名」、「インスタンス名」等を入力します。

これで、クロスリージョンリードレプリカが作成されます。

無事に作成することができました。

まとめ

プライマリークラスターとは別のリージョンで、Global Database のセカンダリークラスターとクロスリージョンリードレプリカを併用できることが確認できました。
ですが、正直、これら2つの機能は、同一リージョンで併用することはあまりないかなあと思います。
セカンダリークラスターを最大インスタンス数までスケールしても、まだ足りない場合などでしょうか。

基本的には、別リージョンにレプリケートする場合、Global Database を選択することが多いでしょう。
Global Database は、通常、1秒未満のレイテンシーでレプリケート、1分未満で昇格することが可能、かつ、物理レプリケーションのため、プライマリークラスターへのパフォーマンス影響もほとんどありません。

それに比べて、クロスリージョンリードレプリカは、AWSリージョン間のネットワークチャネルの分だけ、ラグタイムが発生します。
また、ソースDBクラスターから転送されるデータやスナップショットにも転送料金がかかります。

ただし、Global Database を利用するには、次のようにバージョンやインスタンスクラスに制限があるので、注意が必要です。

  • Aurora MySQL 5.6.10a または、1.22以降、もしくは、2.07以降で利用可能
  • Aurora PostgreSQL 10.11, 10.12, 11.7 以降
    • (ただし、PostgreSQL互換には、Auroraによるクロスリージョンリードレプリカ機能は未提供)
  • db.r4 もしくはdb.r5インスタンスクラスで利用可能
  • Global Database内のDBクラスターは停止/起動ができない

上記以外のGlobal Database の制限についてはこちらを確認ください。
Amazon Aurora グローバルデータベースの使用 - Amazon Aurora

これらの制限に引っかかる場合は、クロスリージョンリードレプリカを利用することになります。
Global Database とクロスリージョンリードレプリカについては、環境によって、うまく使い分けをしていければと思います。