アプリケーション開発を加速する高速データベースクローニングおよびバックトラック

Amazon Aurora を使用する

Amazon Aurora は、MySQL および PostgreSQL と互換性のあるリレーショナルデータベースであり、従来のエンタープライズデータベースのパフォーマンスと可用性に加え、オープンソースデータベースのシンプルさと費用対効果も兼ね備えています。このチュートリアルでは、開発およびテスト用に Aurora DB クラスターのクローンを作成する方法と、バックトラックを有効にして使用して、指定した時間まで DB クラスターを「巻き戻す」方法を学びます。

Aurora クラスターのクローンは、変更によってデータベースに及ぼした影響を評価する場合、データのエクスポートや分析クエリの実行などのようにワークロードを多用するオペレーションを実行する必要がある場合、または単に開発環境またはテスト環境での運用データベースのコピーを使用する場合に非常に役立ちます。Aurora DB クラスターのクローンを複数作成できます。クローンデータベースはソースデータベースと同じリージョンに作成しなければならないという制約の下で、他のクローンから追加のクローンを作成することもできます。

バックトラックを使用すると、Aurora DB クラスターを指定した時刻まで巻き戻すことができます。バックトラックを有効にすると、Aurora はデータベースへの変更記録を保持し、以前の一貫した状態に切り替えることができます。この機能を使用すると、間違いを簡単に元に戻すことができます。例えば、WHERE 句のない DELETE などの破壊的なアクションを誤って実行した場合、問題が発生する前の状態にすばやく戻すことができます。スナップショットまたは自動バックアップからの復元とは異なるためオペレーションが遅くなりますが、バックトラックを使用すると数分で時間を前後に移動できます。

このチュートリアルでは、バックトラックを有効にして Aurora DB クラスターを作成します。データを追加し、バックトラック機能を使用して時間を前後に移動します。データベースのクローンを作成し、コピーに対してクエリを実行します。

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

前提条件

データベースに接続してコマンドを発行する機能が必要です。DB クラスターにパブリック IP アドレスを割り当てないことをお勧めします。そのため、DB クラスターと同じ VPC に EC2 インスタンスが必要になる可能性があります。まだ実行していない場合は、次の手順通りにプロビジョニングします。

次に、sudo yum install mysql を実行して MySQL クライアントをインストールできます。 

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

ステップ 1: Aurora DB クラスターを作成する

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

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

1.2 - 右上から、Aurora DB クラスターを起動するリージョンを選択します。

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

続行する前に、新しいデータベース作成フローに切り替えます。

エンジンオプション

1.4 - データベースエンジンで、[Amazon Aurora] を選択します。

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

1.6 - [Version] (バージョン) で、MySQL 5.6 と互換性のある最新の Aurora バージョンを選択します。[Backtrack] (バックトラック) がそのバージョンでのみ使用できるためです。

1.7 - [データベースの場所] で、[リージョン] を選択します。

データベース機能

1.8 - [ライター 1 人と複数のリーダー] を選択します。

テンプレート

1.9 - [制作] を選択します。

設定

1.10 - Aurora DB クラスターの識別子 (例: [データベース-1]) を選択します。

DB インスタンスサイズ

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

可用性、および堅牢性

1.12 - [Aurora レプリカ/リーダーを作成] を選択します。

接続

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

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

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

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

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

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

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

1.18 - [新しい VPC セキュリティグループ名] に [aurora-tutorial] と入力します。

追加構成

1.19 - バックトラックを有効にします。

1.20 - [ターゲットのバックトラックウィンドウ] に [24] と入力します。[バックトラック] ウィンドウでは、どこまで前に戻すことができるかを決め、Aurora はそのウィンドウの時間をサポートするのに十分なログ情報を保持しようとします。

1.21 - [deletion protection] (削除保護) で、[Enable deletion protection] (削除保護を有効にする) のチェックを外します。

削除保護を有効にすることをお勧めします。ただし、チュートリアルの最後でデータベースを削除する場合は、オプションのチェックボックスをオフのままにしておくことができます。 

確認して作成する

フォームのすべてのフィールドを簡単に確認した後に進むことができます。

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

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

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

1.24 - ユーザー名、パスワード、およびエンドポイントを保存します。

ステップ 2: データベースを入力する

[ターミナル] ウィンドウを開き、アプリケーションインスタンスにログインし、mysql コマンドラインクライアントを使用して Aurora DB クラスターに接続します。その後、データベースを作成し、テーブルを作成して、いくつかのレコードを書き込むことができます。

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

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

コマンドでエンドポイントを読み取るたびに、ステップ 1.24 で保存したエンドポイントのホスト名を入力する必要があります。

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

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

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

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

ステップ 3: データベースをバックトラックする

3.1 - [Aurora DB クラスター] をクリックします。

3.2 - [アクション] をクリックし、[バックトラック] を選択します。

バックトラック DB クラスター

3.3 - 日付と時刻を選択します。Aurora は、新しい DB クラスターを作成せずに、DB クラスターを指定された時点まで巻き戻します。データベースまたはテーブルを作成した時点より前の時刻を選択できます。

3.4 - [Backtrack DB cluster] (バックトラック DB クラスター) をクリックします。

バックトラックオペレーションが実行中であることを説明する青いバナーの画面が表示されます。

しばらくすると、バックトラックオペレーションが完了したことを示す緑色のバナーが表示されます。

これで、ステップ 2 で行ったようにデータベースに接続し、データベースが以前の状態に戻ったことを確認できます。バックトラックオペレーションを繰り返して、時間を進めることができます。

ステップ 4: データベースのクローンを作成する

4.1 - データベースを選択します。

4.2 - [アクション] をクリックし、[クローンを作成] を選択します。

4.3 - 識別子を選択します (例: database-1-clone)。

4.4 - [ユーザーを作成] をクリックします。

クローンが作成された Aurora DB クラスターを含むデータベース一覧が表示されます。

このクローンでどんな操作を行っても、元の DB クラスターには影響しません。クローンが作成されたクラスターの名前をクリックすると、クローンが作成された DB とそのレプリカのエンドポイントを見つけることができます。

次に、[Endpoints] (エンドポイント) セクションの下にエンドポイントが表示されます。

これで、ステップ 2 で行ったようにクローンデータベースに接続し、データベースがクローンデータベースと同じであることを確認できます。クローンデータベースに、作成したデータベース、テーブル、ユーザー、およびレコードが含まれていることを確認します。クローンデータベースを変更して、必要に応じて実験を行い、元のデータベースを調べて、影響を受けていないことを確認できます。

ステップ 5: クラスターを削除する

このチュートリアルを完了し、追加料金を回避するには、Aurora DB クラスターが不要になったときに削除する方法を学びます。Aurora DB クラスターを削除するには、[RDS Dashboard] (RDS ダッシュボード) に移動して、次の手順に従って実行します。

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

これにより、すべての Aurora DB クラスターのリストが表示されます。まず、クローンデータベースを削除します。 

5.2 - ライターインスタンスを選択します。

5.3 - [アクション] をクリックし、[削除] を選択します。

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

5.4 - [最終スナップショットを作成] のチェックボックスをオフにし、[同意します...] のチェックボックスをオンにします。

5.5 - [delete me] と入力し、[削除] をクリックします。

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

5.6 - このチュートリアル用に作成した Aurora DB クラスターのリーダーインスタンスを選択します。 

5.7 - [アクション] をクリックし、[削除] を選択します。

5.8 - アクションの確認を求められます。[delete me] と入力し、[削除] をクリックします。

5.9 - このチュートリアル用に作成した Aurora DB クラスターのライターインスタンスを選択します。

5.10 - [アクション] をクリックし、[削除] を選択します。

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

5.11 - [最終スナップショットを作成] のチェックボックスをオフにし、[同意します...] のチェックボックスをオンにします。

5.12 - [delete me] と入力し、[削除] をクリックします。

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

お疲れ様でした。

バックトラックを有効にして Aurora DB クラスターを作成しました。データベースに合わせて前後に移動できる時間範囲の設定方法を学びました。最後に、Aurora DB クラスターのクローンを作成する方法を学びました。

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