
PostgreSQL 互換 Amazon Auroraが正式リリースされました
この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
ウィスキー、シガー、パイプをこよなく愛する大栗です。
かねてからパブリックプレビューになっていた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として認識されています。
# psql -h pgaurora.example.us-west-2.rds.amazonaws.com -U awsuser -d mydb Password for user 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" for help. mydb=>
普通にログインできることは確認できたので、少し負荷をかけてみます。
ここではpgbenchでデータを作成してみます。
# pgbench -i -s 100 -U awsuser -h pgaurora.example.us-west-2.rds.amazonaws.com mydb Password: NOTICE: table "pgbench_history" does not exist, skipping NOTICE: table "pgbench_tellers" does not exist, skipping NOTICE: table "pgbench_accounts" does not exist, skipping NOTICE: table "pgbench_branches" does not exist, skipping creating 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... set primary keys... done.
テーブル一覧を見るとこんな感じです。
mydb=> \dt
              List of relations
 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)
各テーブルの件数を見るとこんな感じです。
mydb=> select count(*) from pgbench_accounts ;
  count
----------
 10000000
(1 row)
mydb=> select count(*) from pgbench_branches ;
 count
-------
   100
(1 row)
mydb=> select count(*) from pgbench_history  ;
 count
-------
     0
(1 row)
mydb=> select count(*) from pgbench_tellers  ;
 count
-------
  1000
(1 row)
ここで、プレビューになっているパフォーマンスインサイトを見てみましょう。
このように実行したクエリが表示されています。各クエリでの待ち時間が何によるものなのかを表示してくれます。

このように簡単にですが触ってみました。
さいごに
PostgreSQL 互換 Amazon Auroraの正式リリースということで、手始めに起動してみました。Aurora特有の高性能や高速フェイルオーバーなど試したいことが色々とあるため、検証してブログ化していきたいと思います。










