ちょっと話題の記事

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のコンソールを開き、インスタンスのメニューを開きます。

RDS_·_AWS_Console

DB インスタンスの起動をクリックします。

RDS_·_AWS_Console

エンジンのオプションでAuroraを選択するとエディションにPostgreSQL 対応が表示されるので選択します。

RDS_·_AWS_Console

次にDB詳細の指定を設定していきます。

項目 設定値
DB インスタンスのクラス db.r4.large — 2 vCPU, 15.25 GiB RAM
マルチ AZ 配置 Create Replica in Different Zone
DB インスタンス識別子 <任意>
マスターユーザーの名前 <任意>
マスターパスワード <任意>

RDS_·_AWS_Console

[詳細設定]の設定を行っていきます。

ここでは簡単にするためにほぼデフォルト設定にしています。

ネットワーク & セキュリティ

項目 設定値
Virtual Private Cloud(VPC) デフォルト VPC
サブネットグループ default
パブリックアクセシビリティ いいえ
アベイラビリティゾーン us-west-2a
VPC セキュリティグループ 既存 VPC セキュリティグループの選択 deafult(VPC)

スクリーンショット_2017_10_26_18_56

データベースの設定

項目 設定値
DB クラスター識別子 <任意>
データベースの名前 <任意>
データベースのポート 5432
DB パラメータグループ default.aurora-postgresql9.6
DB クラスターのパラメータグループ default.aurora-postgresql9.6
オプショングループ default:aurora-postgresql-9-6
タグをスナップショットへコピー チェックなし

スクリーンショット_2017_10_26_18_57

Encryption

項目 設定値
Encryption 暗号を有効化
マスターキー (default)aws/rds

フェイルオーバー

項目 設定値
優先度 指定なし

スクリーンショット_2017_10_26_18_58

バックアップ

項目 設定値
バックアップの保存期間 7 日間

モニタリング

項目 設定値
拡張モニタリング 拡張モニタリングを無効にする

スクリーンショット_2017_10_26_18_58

パフォーマンスインサイト

項目 設定値
パフォーマンスインサイト パフォーマンスインサイトの無効化
マスターキー (default)aws/rds

メンテナンス

項目 設定値
マイナーバージョン自動アップグレード マイナーバージョン自動アップグレードの有効化
メンテナンスウィンドウ 指定なし

スクリーンショット_2017_10_26_18_59

Auroraが起動するまでしばらく待ちます。

スクリーンショット_2017_10_26_19_00

このように2台のインスタンスが起動します。

RDS_·_AWS_Console

接続してみる

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)

ここで、プレビューになっているパフォーマンスインサイトを見てみましょう。

このように実行したクエリが表示されています。各クエリでの待ち時間が何によるものなのかを表示してくれます。

RDS_·_AWS_Console

このように簡単にですが触ってみました。

さいごに

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