高速なクロスリージョン災害対策および低レイテンシーのグローバル読み取り

Amazon Aurora Global Database を使用する

このチュートリアルでは、複数の AWS リージョンにまたがり、パフォーマンスに影響を与えずにデータを複製する Amazon Aurora Global Database のデプロイを作成する方法を学びます。Aurora Global Database は、リージョン全体の停止からの災害対策を提供し、低レイテンシーのグローバル読み取りを可能にします。

Amazon Aurora は、MySQL および PostgreSQL と互換性のあるリレーショナルデータベースであり、従来のエンタープライズデータベースのパフォーマンスと可用性に加え、オープンソースデータベースのシンプルさと費用対効果も兼ね備えています。

Aurora Global Database は、データがマスターされるプライマリ AWS リージョンと、データが複製される複数の読み取り専用セカンダリ AWS リージョンで構成されます。書き込みはプライマリデータベースに送信されますが、任意のリージョンから読み取ることができ、低レイテンシーのメリットを得ることができます。

このチュートリアルでは、MySQL 互換の Amazon Aurora を使用します。チュートリアルは無料利用枠内では行えません。ただし、チュートリアルの手順通りにチュートリアル終了時にリソースを終了する場合にかかる料金は 1 USD 未満です。

前提条件

Amazon Aurora DB クラスターは、1 つ以上の DB インスタンスと、それらの DB インスタンスのデータを管理するクラスターボリュームで構成されます。Aurora クラスターボリュームは、複数のアベイラビリティーゾーンにまたがる仮想データベースストレージボリュームであり、各アベイラビリティーゾーンには DB クラスターデータのコピーがあります。読み取りおよび書き込み操作をサポートするプライマリ DB インスタンスと、Aurora レプリカといった 2 つのタイプの DB インスタンスが Aurora DB クラスターを構成します。プライマリ DB インスタンスと同じストレージボリュームに接続し、読み取り操作のみをサポートします。各 Aurora DB クラスターは、最大 15 個の Aurora レプリカを別々のアベイラビリティーゾーンに配置できます。プライマリ DB インスタンスが使用できなくなった場合、Aurora は自動的に Aurora レプリカにフェイルオーバーします。

このチュートリアルでは、1 つのリージョンにプライマリクラスターがあり、別のリージョンにセカンダリクラスターがある Aurora Global Database を作成します。どのリージョンを使用するかはお客様次第です。使用する各リージョンにアプリケーションを配置することをお勧めします。たとえば、Aurora Global Database のプライマリクラスターが us-east-1 にあり、セカンダリクラスターが eu-west-3 にある場合、us-east-1 にインスタンスが、eu-west-3 に別のインスタンスが配置されます。

また、時間を節約したい場合は、それらのリージョンごとに、インスタンスからの受信接続を許可するセキュリティグループを作成できます。たとえば、インスタンスのセキュリティグループからポート 3306 での TCP 接続を許可する、タイプ MYSQL/Aurora のインバウンドルールでセキュリティグループを作成できます。

最後に、Aurora Global Database をテストするには (ステップ 8 を参照)、MySQL クライアントが必要です。アプリケーションインスタンスが Amazon Linux を実行している場合、MySQL クライアントをインストールするのは sudo yum install mysql を実行するのと同じくらい簡単ですが、正確なコマンドは実行している OS によって異なります。Windows を実行している場合は、代わりに MySQL ワークベンチをダウンロードできます。

このチュートリアルの内容
時間 10 分                                           
料金 1 USD 未満
ユースケース データベース
製品 Amazon Aurora、Amazon RDS
対象者 データベース管理者、開発者
レベル 中級コース
最終更新日 2019 年 6 月 3 日

ステップ 1: Amazon RDS コンソールへのアクセス

1.1 — ブラウザを開き、[Amazon RDS コンソール] に移動します。すでに AWS アカウントをお持ちの場合は、コンソールにログインします。それ以外の場合は、開始用に新しい AWS アカウントを作成します。

1.2 — 右上から、プライマリ Aurora DB クラスターを起動するリージョンを選択します。このチュートリアルでは、プライマリリージョンとして us-east-1 を使用し、セカンダリリージョンとして eu-west-1 を使用します。

AWS アカウントをお持ちですか? アカウントにログインする

1.3 — Amazon Aurora ウィンドウで [データベースを作成] をクリックします。

1.4 — 下にスクロールして、[Aurora Global Database] ウィンドウで [今すぐ試す] をクリックします。[今すぐ試す] オプションが表示されない場合は、ここをクリックしてください。

ステップ 2: エンジンオプション

2.1 — エンジンタイプで、[Amazon Aurora] を選択します。

2.2 — エディションでは、[MySQL 互換の Amazon Aurora] を選択します。

2.3 — [バージョン] で、最新の MySQL バージョンを選択します。

2.4 — [データベースの場所] で、[グローバル] を選択します。

2.5 — [制作] テンプレートを選択します。

ステップ 3: Global Database の設定

3.1 — Global Database 識別子には、[global-database-1] と入力します。

ステップ 4: プライマリリージョンの設定

4.1 — DB インスタンスのサイズとして、大きなインスタンス (.large で終わる) を選択します。

4.2 — 可用性と耐久性については、[Aurora レプリカを作成しない] を選択します。

Aurora レプリカを使用すると、読み取りをスケーリングでき、プライマリデータベースと同じリージョン内で自動的にフェイルオーバーできるため、本番環境にお勧めです。このチュートリアルでは、簡単に練習を行うことのみを目的として Aurora レプリカを追加していません。

ステップ 5: 接続性

5.1 — データベースを作成する VPC を選択します。

作成したデータベースは別の VPC に移行できないことにご注意ください。

5.2 — [追加の接続構成] をクリックします。

5.3 — サブネットグループのデフォルト値を選択します。

5.4 — [一般公開] で [いいえ] を選択します。

つまり、同じ VPC 内の EC2 インスタンスからデータベースに接続する必要があります。

5.5 — VPC セキュリティグループで、[新規作成] を選択します。ポート 3306 での着信 TCP 接続を許可するセキュリティグループがある場合は、代わりにそれを選択できます。

5.6 — [新しい VPC セキュリティグループ名] に [global-database] と入力します。

5.7 — データベースポートのデフォルト値をそのままにします。

ステップ 6: 追加構成

6.1 — データベースオプション、バックアップ、モニタリング、ログエクスポート、メンテナンス、および削除保護はデフォルト値のままにします。

6.2 — [データベースを作成] をクリックします。

インスタンスが作成されている間、認証情報の取得方法を説明するバナーが表示されます。このパスワードを表示できるのはこの瞬間だけなので、認証情報をどこかに保存する良い機会です。

6.3 — [認証情報の詳細を表示] をクリックします。

6.4 — ユーザー名とパスワードを保存します。

ステップ 7: セカンダリリージョンを追加する

7.1 — [global-database-1] を選択します。

7.2 — [アクション > リージョンを追加] をクリックします。

7.3 — ドロップダウンから、リージョンを選択します。

7.4 — 手順 4.1〜5.7 を繰り返します。

7.5 — [リージョンを追加] をクリックします。

データベースが使用可能になったら、ステップ 8 に進みます。

ステップ 8: Aurora Global Database をテストする

8.1 — [プライマリデータベース] をクリックします。

8.2 — ライターのエンドポイントをコピーします。

2 つのターミナルウィンドウを開き、プライマリリージョンとセカンダリリージョンのインスタンスにログインして、mysql コマンドラインのクライアントを使用してデータベースに接続します。

これで、データベースを作成し、テーブルを作成して、いくつかのレコードを書き込むことができます。プライマリに書き込むものはすべて、セカンダリクラスターに複製されます。

8.3 — プライマリデータベースに接続します。

$ mysql -h endpoint -P 3306 -u admin -p

パスワードの入力を求められたら、ステップ 6.6 で保存したパスワードを入力します。

8.4 — データベースを作成し、データを書き込みます。

mysql> データベースチュートリアルを作成
クエリは正常、1 行に影響 (0.01 秒)

この時点で、チュートリアルデータベースを使用して、テーブルを作成し、いくつかのレコードを追加できます。

8.5 — セカンダリリージョンに移動します。

8.6 — [セカンダリデータベース] をクリックします。

8.7 — リーダーエンドポイントをコピーします。

8.8 — セカンダリデータベースに接続します。

$ mysql -h endpoint -P 3306 -u admin -p

パスワードの入力を求められたら、ステップ 6.6 で保存したパスワードを入力します。

8.9 — データを読み込みます。

mysql> チュートリアルを使用
データベースが変更されました

データベースがセカンダリデータベースに複製されたことを確認できます。テーブルを作成した場合は、プライマリクラスターに書き込み、セカンダリクラスターからデータを読み取ることができます。

ステップ 9: セカンダリリージョンへのフェイルオーバー

デフォルトの Aurora クラスターではリージョン内のフェイルオーバー機能が提供されますが、Aurora Global Database では別のリージョンのセカンダリクラスターにフェイルオーバーできます。リージョン全体が使用できなくなっても、データベースは存続します。

Aurora Global Database のフェイルオーバーを実行するには、元のグローバルデータベースからセカンダリクラスターを削除して、完全な読み取り/書き込み機能を持つリージョン別のクラスターに戻し、新しい Aurora Global Database のプライマリクラスターとして使用します。

以下の手順通りに、手動でフェイルオーバーを実行できます。

9.1 — プライマリデータベースへの書き込みを停止します。

9.2 — セカンダリクラスターを選択します。

9.3 — [アクション > グローバルから削除] をクリックします。

9.4 — [削除して昇格] をクリックして確認します。

9.5 — 新しく昇格したクラスターに書き込むようにアプリケーションを構成します。

9.6 — 引き続き [セカンダリリージョン] で、[リージョン別のクラスター] を選択します。

9.7 — [アクション > グローバルデータベースを作成] をクリックします。

9.8 — ドロップダウンから、リージョンを選択します。

9.9 — 手順 4.1〜5.7 を繰り返します。

ステップ 10: クリーンアップ

このチュートリアルを完了するには、Aurora Global Database を削除します。そのままにしておくこともできますが、料金が発生することにご注意ください。

Aurora Global Database を削除するには、[RDS ダッシュボード] に移動して、次の手順通りに実行します。

10.1 — 左側のペインで [データベース] を選択します。

これにより、すべての Aurora DB クラスターのリストが表示されます。

10.2 — [Global Database インスタンス] を選択します。

10.3 — [アクション] > [削除] の順にクリックします。

10.4 — 最終的なバックアップを作成するかどうかを尋ねられます。通常の場合は良い考えですが、このチュートリアルでは必要ありません。[いいえ] を選択し、[削除] をクリックします。

10.5 — [Global Database クラスター] を選択します。

10.6 — [アクション > グローバルから削除] をクリックします。

10.7 — [グローバルから削除] をクリックして確認します。

10.8 — [リージョン別のデータベースクラスター] を選択します。

10.9 — [アクション] > [削除] の順にクリックします。

10.10 — 最終的なスナップショットを作成するかどうかを尋ねられます。通常の場合は良い考えですが、このチュートリアルでは必要ありません。[いいえ] を選択し、[DB クラスターを削除] をクリックします。

10.11 — セカンダリリージョンに切り替えて、手順 10.1〜10.9 を実行します。

10.12 — [Global Database] を選択します。

10.13 — [アクション] > [削除] の順にクリックします。

10.14 — [delete me] と入力して [削除] をクリックして確認します。

クラスターのステータスが [削除中] に変わります。

おめでとうございます

リージョン間でレプリケーションを行う Aurora Global Database を作成しました。レイテンシーを低減するために読み取りを他のリージョンにスケーリングする方法を学び、セカンダリリージョンへのフェイルオーバーを実行しました。

このチュートリアルは役に立ちましたか?