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として認識されています。
# 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特有の高性能や高速フェイルオーバーなど試したいことが色々とあるため、検証してブログ化していきたいと思います。