LoginSignup
5
7

More than 1 year has passed since last update.

AWS Aurora PostgreSQL 使ってみた

Posted at

初めに

Aurora を使う機会があったので自分なりに触ってみたことのメモです。

データベースの作成

マネジメントコンソールから「データベースの作成」をクリックし、作成方法とエンジンのタイプを選択します。エディションは PostgreSQL 互換を選択します。

create-1.png

エンジンバージョンは最新の 13.6 を選択します。検証用なのでテンプレートは「開発/テスト」を選択します。

create-2.png

以下、必要な情報を入力します。認証情報はログイン時に必要になります。

create-3.png

検証用のため、汎用の小さいインスタンスタイプを選択します。

create-4.png

VPC などは適切なものを選択します。

create-5.png

以下はデフォルトのまま進めます。

create-6.png

データベース名はデフォルトで作成されるデータベースです。空欄にすると作成されません。ログイン後、手動で作成するので空欄にします。

create-7.png

検証用ため、暗号化や Perfomance Insight や無効化しておきます。

create-8.png

メンテナンスウィンドウを「選択ウィンドウ」にすると、メンテナンス期間をカスタマイズできます。

create-9.png

「データベースの作成」をクリックします。

create-10.png

Aurora データベース に接続する

Aurora クラスターのエンドポイントを取得する

ライターインスタンスのエンドポイントをコピーします。

connect-1.png

PostgreSQL クライアントのインストール

  • PostgreSQL クライアントをインストールする
sudo amazon-linux-extras install -y postgresql13

なお、特定のバージョンでインストールし直したいときは以下の手順で行います。postgresql13 をアンインストールし、postgresql12 をインストールします。

  • postgresql13 クライアントをアンインストールする
sudo yum remove $(yum list installed | grep amzn2extra-postgresql13 | awk '{ print $1 }')
  • アンインストールされたことを確認する
[ec2-user@ip-172-31-8-7 ~]$ psql
-bash: /usr/bin/psql: No such file or directory
  • amazon-linux-extras でインストール可能なトピックを確認する
[ec2-user@ip-172-31-8-7 ~]$ amazon-linux-extras list | grep 'postgresql'
  5  postgresql9.6            available    \
  6  postgresql10             available    [ =10  =stable ]
 41  postgresql11             available    [ =11  =stable ]
 58  postgresql12             available    [ =stable ]
 59  postgresql13=latest      enabled      [ =stable ]
  • postgresql13 トピックを非有効化する
sudo amazon-linux-extras disable postgresql13
  • postgresql12 クライアントをインストールする
sudo amazon-linux-extras install -y postgresql12

※非有効化しない状態で postgresql12 をインストールしても、postgresql13 がインストールされます。

[ec2-user@ip-172-31-8-7 ~]$ psql --version
psql (PostgreSQL) 13.3

サーバにログインする

  • psql コマンドでサーバにログインする。パスワードを聞かれるので入力する。
    • psql
    • -h ・・・ サーバのホスト名
    • -p ・・・ ポート番号
    • -U ・・・ ログインユーザー名
    • -d ・・・ 接続先データベース
psql -h database-1-instance-1.xxxxxxxx.ap-northeast-1.rds.amazonaws.com -p 5432 -U postgres -d postgres

CRUD - 例

postgres=> CREATE DATABASE mydb;
CREATE DATABASE
postgres=> \l
                                  List of databases
   Name    |  Owner   | Encoding |   Collate   |    Ctype    |   Access privileges
-----------+----------+----------+-------------+-------------+-----------------------
 mydb      | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 |
 postgres  | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 |
 rdsadmin  | rdsadmin | UTF8     | en_US.UTF-8 | en_US.UTF-8 | rdsadmin=CTc/rdsadmin
 template0 | rdsadmin | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/rdsadmin          +
           |          |          |             |             | rdsadmin=CTc/rdsadmin
 template1 | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/postgres          +
           |          |          |             |             | postgres=CTc/postgres
(5 rows)
  • DB を切り替える
postgres=> \c mydb
  • テーブルを作成する。(大文字でテーブル名を作成したい場合、ダブルクォーテーションで囲う)
    • CREATE TABLE
    • 作成した後、\d でテーブル一覧を表示する。
mydb=> CREATE TABLE "movies" (
  title  varchar(100) PRIMARY KEY,
  year   integer
);
CREATE TABLE
mydb=> \d
         List of relations
 Schema |  Name  | Type  |  Owner
--------+--------+-------+----------
 public | movies | table | postgres
(1 row)
mydb=> INSERT INTO movies (title, year) VALUES ('Fight Club', 1999);
INSERT 0 1
mydb=> INSERT INTO movies VALUES ('Frozen', 2013);
INSERT 0 1
  • テーブルの全データを表示する
mydb=> SELECT * FROM movies;
   title    | year
------------+------
 Fight Club | 1999
 Frozen     | 2013
(2 rows)
  • テーブルの全行を削除する
mydb=> DELETE FROM movies;
DELETE 2
mydb=> DROP TABLE movies;
DROP TABLE
mydb=> \d
Did not find any relations.
  • ログアウト
mydb=> \q

スナップショットの取得・復元

「スナップショットの取得」をクリックします。

snapshot-1.png

必要な情報を入力し、「スナップショットの取得」をクリックします。

snapshot-2.png

復元する場合は、復元したいスナップショットを選択し、「スナップショットを復元」をクリックします。

snapshot-3.png

識別子を入力します。

snapshot-5.png

インスタンスタイプを選択します。

snapshot-6.png

最後に「DB クラスターを復元」をクリックします。

CloudFormation で Aurora PostgreSQl を作成

CloudFormation で Aurora PostreSQL を作成しました。

aurora-template.yaml
AWSTemplateFormatVersion: 2010-09-09
Resources:
  AuroraCluster:
    Type: 'AWS::RDS::DBCluster'
    Properties:
      Engine: aurora-postgresql
      EngineMode: provisioned
      EngineVersion: '13.6'
      MasterUsername: postgres
      MasterUserPassword: PostgresAdmin1!
  AuroraInstance:
    Type: 'AWS::RDS::DBInstance'
    Properties:
      Engine: aurora-postgresql
      DBInstanceClass: db.t3.medium
      DBClusterIdentifier: !Ref AuroraCluster

以下はテンプレートの実行結果です。

cfn-1.png

参考記事

5
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
7