Amazon Aurora を使用する際のメモ

作成日：2017-01-26

# やりたいこと
AWSの公式ドキュメント
[Amazon Aurora](http://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/CHAP_Aurora.html) 
[Amazon Aurora を使用する際のベストプラクティス](http://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/Aurora.BestPractices.html) 
等を読んでの自己流要約。当面に必要なもののみの抜粋

# Amazon Aurora の概要
MySQL と互換性のあるRDS
Aurora DB クラスターという構成で作られる
MySQL に比べ、最大 5 倍のパフォーマンスを実現するらしい（実質2倍～3倍くらいかな？）
お値段は少し安い？r3.largeでの比較でAurora( $ 212.78)、MySQL( $ 175.68 ～$ 352.52）
ただ、最低スペックが r3.large なので安価なサービスには向かない（実験用で db.t2.mediumもある）

# 構成
Aurora DB クラスターは 2 種類のインスタンスで構成

## プライマリインスタンス
読み取り/書き込み
クラスターボリュームに対するすべてのデータ変更を実行
各Aurora DB クラスターに 1 つのプライマリインスタンス

## Aurora レプリカ
読み取りオペレーションのみ
最大 15 個の Aurora レプリカ

![AuroraArch001.png](https://qiita-image-store.s3.amazonaws.com/0/21749/343560e9-b0d9-275d-c84c-2683f890a1fa.png)

# Aurora エンドポイント
## クラスターエンドポイント
プライマリインスタンスに接続
読み取りと書き込みの両方のオペレーションを実行可能

## 読み込みエンドポイント
DB クラスターの Aurora レプリカの 1 つに接続
 Aurora レプリカ間で接続を負荷分散

## インスタンスエンドポイント
特定のインスタンスに直接接続する際に使用できる一意のエンドポイント
識別子に cluster- が含まれていません

# Amazon Aurora ストレージ
SSD (Solid State Disk) ドライブを利用する単一の仮想ボリューム
最大 64 テラバイト (TB)
使用する領域に対してのみ料金が請求

# Amazon Aurora レプリケーション
レプリカラグは、通常はプライマリインスタンスが更新を書き込んだ後、100 ミリ秒未満

## Aurora レプリカの作成
最大 15 個の Aurora レプリカを追加可能
1.  https://console.aws.amazon.com/rds で Amazon Aurora コンソールを開きます。
2. 左のナビゲーションペインの [Instances] をクリックします。
3. Aurora DB クラスターのプライマリインスタンスの左側にあるチェックボックスをクリックしてオンにします。
4. [Instance Actions] をクリックし、[Create Aurora Replica] をクリックします。
5.  [Create Aurora Replica] ページで、Aurora レプリカのオプションを指定します。次の表は、Aurora レプリカの設定を示しています。

# Amazon Aurora のセキュリティ
3 つのレベルで管理

## Amazon RDS 管理アクションを実行できるユーザーを管理
AWS Identity and Access Management (IAM) を使用
Amazon RDS の管理オペレーションを実行するためのアクセス権限を付与する IAM ポリシーが必要
「[Amazon RDS に対する認証とアクセスコントロール](http://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/UsingWithRDS.IAM.html)」を参照

## Aurora DB クラスターは Amazon Virtual Private Cloud (VPC) に作成
VPC の詳細については、「[Virtual Private Cloud (VPC) および Amazon RDS](http://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/USER_VPC.html)」を参照

## Amazon Aurora DB インスタンスに対するログインとアクセス権限を認証
MySQL のスタンドアロンインスタンスと同じ方法
「[MySQL ユーザーアカウントの管理](https://dev.mysql.com/doc/refman/5.6/ja/user-account-management.html)」を参照
DB インスタンスの作成時に rdsadmin ユーザーが作成される
``
標準的なコマンド kill と kill_query の使用は制限
Amazon RDS の rds_kill コマンドと rds_kill_query コマンドを代わりに使用する

## SSL での Aurora データの保護


パブリックキーは https://s3.amazonaws.com/rds-downloads/rds-combined-ca-bundle.pem に保存

mysql クライアントを使用して接続を暗号化するには、以下の例のように、--ssl-ca パラメータでパブリックキーを参照して mysql クライアントを起動

```
mysql -h mycluster-primary.c9akciq32.rds-us-east-1.amazonaws.com --ssl-ca=[full path]rds-combined-ca-bundle.pem --ssl-verify-server-cert
```

以下のステートメントを使用して、ユーザーアカウント encrypted_user に SSL 接続を要求

```
GRANT USAGE ON *.* TO 'encrypted_user'@'%' REQUIRE SSL
```

# Amazon Aurora DB クラスターのローカルタイムゾーン
タイムゾーンは協定世界時 (UTC)
インスタンスのタイムゾーンをアプリケーションのローカルタイムゾーンに設定可能
パラメーターグループの time_zone パラメーターを変更する

```
Asia/Tokyo
```

# Aurora DB クラスターの耐障害性
障害を検知した際に以下の対応が自動的に実行される

## 既存の Aurora レプリカを新しいプライマリインスタンスに昇格
DB クラスターに 1 つ以上の Aurora レプリカがある場合
障害発生中に 1 つの Aurora レプリカがプライマリインスタンスに昇格
一般的なサービスの復元時間は 120 秒未満であり、多くの場合 60 秒未満で復元

## 新しいプライマリインスタンスを作成
DB クラスターに Aurora レプリカが含まれていない場合
障害イベントの発生時にプライマリインスタンスが再作成
通常は 10 分未満

# 参考リンク
[Amazon Aurora と Amazon RDS for MySQL の比較](http://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/Aurora.Overview.html#Aurora.Overview.CompareMySQL)

[Amazon RDS の Aurora 料金表](https://aws.amazon.com/jp/rds/aurora/pricing/)

[SIMPLE MONTHLY CALCULATOR](http://calculator.s3.amazonaws.com/index.html?lng=ja_JP)
料金の見積もりが取れる