PostgreSQL 互換 Amazon Auroraが正式リリースされました
ウィスキー、シガー、パイプをこよなく愛する大栗です。
かねてからパブリックプレビューになっていたPostgreSQL 互換 Amazon Auroraが正式リリースされましたので、試してみます。
PostgreSQL 互換 Amazon Aurora
概要
PostgreSQL 互換 Amazon Auroraはre:Invent 2016で発表されたRDSの新しいDBエンジンです。今までのMySQL互換Auroraと同様に3つのAZに2個のデータを配置して6重化したストレージを持ち、従来のPostgreSQLの2倍以上のパフォーマンスが出ると謳っているサービスです。
提供リージョン
提供するリージョンは以下の4箇所となっています。初期リリース時では東京に来ていないようです。東京に来るのが待ち遠しいですね。
- 北部バージニア
- オレゴン
- オハイオ
- アイルランド
インスタンスクラス
PostgreSQL 互換 Amazon AuroraではR4系のインスタンスクラスが提供されています。
| インスタンスクラス | vCPU | ECU | メモリ | EBS最適化 | ネットワークパフォーマンス | 
|---|---|---|---|---|---|
| db.r4.large | 2 | 7 | 15.25 GB | 425 Mbps | 最大 10 Gbps | 
| db.r4.xlarge | 4 | 13.5 | 30.5GB | 850 Mbps | 最大 10 Gbps | 
| db.r4.2xlarge | 8 | 27 | 61 GB | 1700 Mbps | 最大 10 Gbps | 
| db.r4.4xlarge | 16 | 53 | 122 GB | 3500 Mbps | 最大 10 Gbps | 
| db.r4.8xlarge | 32 | 99 | 244 GB | 7000 Mbps | 10 Gbps | 
| db.r4.16xlarge | 64 | 195 | 488 GB | 14000 Mbps | 25 Gbps | 
料金
オンデマンドの料金は、1時間あたりで以下のようになっています。
| インスタンスクラス | 北部バージニア、オレゴン、オハイオ | アイルランド | 
|---|---|---|
| db.r4.large | $0.29 | $0.32 | 
| db.r4.xlarge | $0.58 | $0.64 | 
| db.r4.2xlarge | $1.16 | $1.28 | 
| db.r4.4xlarge | $2.32 | $2.56 | 
| db.r4.8xlarge | $4.64 | $5.12 | 
| db.r4.16xlarge | $9.28 | $10.24 | 
その他
詳細については、re:Invent 2016のスライドを御覧ください。
PostgreSQL 互換 Amazon AuroraではPerformance Insightsにより、詳細な性能情報を確認することができます。DB性能のボトルネックの調査は難しいものですが、Performance Insightsにより調査が楽になると思います。
試してみる
起動する
基本的な流れはプレビューのときと同じです。コンソールの画面が変わっていますが。。。
前提として、ここではオレゴンリージョンで実施します。
RDSのコンソールを開き、インスタンスのメニューを開きます。
DB インスタンスの起動をクリックします。
エンジンのオプションでAuroraを選択するとエディションにPostgreSQL 対応が表示されるので選択します。
次にDB詳細の指定を設定していきます。
| 項目 | 設定値 | 
|---|---|
| DB インスタンスのクラス | db.r4.large — 2 vCPU, 15.25 GiB RAM | 
| マルチ AZ 配置 | Create Replica in Different Zone | 
| DB インスタンス識別子 | <任意> | 
| マスターユーザーの名前 | <任意> | 
| マスターパスワード | <任意> | 
[詳細設定]の設定を行っていきます。
ここでは簡単にするためにほぼデフォルト設定にしています。
ネットワーク & セキュリティ
| 項目 | 設定値 | 
|---|---|
| Virtual Private Cloud(VPC) | デフォルト VPC | 
| サブネットグループ | default | 
| パブリックアクセシビリティ | いいえ | 
| アベイラビリティゾーン | us-west-2a | 
| VPC セキュリティグループ | 既存 VPC セキュリティグループの選択 deafult(VPC) | 
データベースの設定
| 項目 | 設定値 | 
|---|---|
| DB クラスター識別子 | <任意> | 
| データベースの名前 | <任意> | 
| データベースのポート | 5432 | 
| DB パラメータグループ | default.aurora-postgresql9.6 | 
| DB クラスターのパラメータグループ | default.aurora-postgresql9.6 | 
| オプショングループ | default:aurora-postgresql-9-6 | 
| タグをスナップショットへコピー | チェックなし | 
Encryption
| 項目 | 設定値 | 
|---|---|
| Encryption | 暗号を有効化 | 
| マスターキー | (default)aws/rds | 
フェイルオーバー
| 項目 | 設定値 | 
|---|---|
| 優先度 | 指定なし | 
バックアップ
| 項目 | 設定値 | 
|---|---|
| バックアップの保存期間 | 7 日間 | 
モニタリング
| 項目 | 設定値 | 
|---|---|
| 拡張モニタリング | 拡張モニタリングを無効にする | 
パフォーマンスインサイト
| 項目 | 設定値 | 
|---|---|
| パフォーマンスインサイト | パフォーマンスインサイトの無効化 | 
| マスターキー | (default)aws/rds | 
メンテナンス
| 項目 | 設定値 | 
|---|---|
| マイナーバージョン自動アップグレード | マイナーバージョン自動アップグレードの有効化 | 
| メンテナンスウィンドウ | 指定なし | 
Auroraが起動するまでしばらく待ちます。
このように2台のインスタンスが起動します。
接続してみる
psqlでログインしてみます。普通にpsqlでログインできます。バージョンは9.6.3として認識されています。
| 1 2 3 4 5 6 7 | # psql -h pgaurora.example.us-west-2.rds.amazonaws.com -U awsuser -d mydbPassword foruser awsuser:psql (9.6.4, server 9.6.3)SSL connection (protocol: TLSv1.2, cipher: DHE-RSA-AES256-GCM-SHA384, bits: 256, compression: off)Type "help"forhelp.mydb=> | 
普通にログインできることは確認できたので、少し負荷をかけてみます。
ここではpgbenchでデータを作成してみます。
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | # pgbench -i -s 100 -U awsuser -h pgaurora.example.us-west-2.rds.amazonaws.com mydbPassword:NOTICE:  table "pgbench_history"does not exist, skippingNOTICE:  table "pgbench_tellers"does not exist, skippingNOTICE:  table "pgbench_accounts"does not exist, skippingNOTICE:  table "pgbench_branches"does not exist, skippingcreating tables...100000 of 10000000 tuples (1%) done(elapsed 0.02 s, remaining 2.09 s)200000 of 10000000 tuples (2%) done(elapsed 0.11 s, remaining 5.56 s)300000 of 10000000 tuples (3%) done(elapsed 0.20 s, remaining 6.53 s)400000 of 10000000 tuples (4%) done(elapsed 0.55 s, remaining 13.22 s)500000 of 10000000 tuples (5%) done(elapsed 0.64 s, remaining 12.10 s)・・・9600000 of 10000000 tuples (96%) done(elapsed 18.29 s, remaining 0.76 s)9700000 of 10000000 tuples (97%) done(elapsed 18.37 s, remaining 0.57 s)9800000 of 10000000 tuples (98%) done(elapsed 18.75 s, remaining 0.38 s)9900000 of 10000000 tuples (99%) done(elapsed 18.84 s, remaining 0.19 s)10000000 of 10000000 tuples (100%) done(elapsed 19.18 s, remaining 0.00 s)vacuum...setprimary keys...done. | 
テーブル一覧を見るとこんな感じです。
| 1 2 3 4 5 6 7 8 9 | mydb=> \dt              List ofrelations Schema|       Name| Type  |  Owner--------+------------------+-------+--------- public| pgbench_accounts | table| awsuser public| pgbench_branches | table| awsuser public| pgbench_history  | table| awsuser public| pgbench_tellers  | table| awsuser(4 rows) | 
各テーブルの件数を見るとこんな感じです。
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | mydb=> selectcount(*) frompgbench_accounts ;  count---------- 10000000(1 row)mydb=> selectcount(*) frompgbench_branches ; count-------   100(1 row)mydb=> selectcount(*) frompgbench_history  ; count-------     0(1 row)mydb=> selectcount(*) frompgbench_tellers  ; count-------  1000(1 row) | 
ここで、プレビューになっているパフォーマンスインサイトを見てみましょう。
このように実行したクエリが表示されています。各クエリでの待ち時間が何によるものなのかを表示してくれます。
このように簡単にですが触ってみました。
さいごに
PostgreSQL 互換 Amazon Auroraの正式リリースということで、手始めに起動してみました。Aurora特有の高性能や高速フェイルオーバーなど試したいことが色々とあるため、検証してブログ化していきたいと思います。