諸事情あって、EC2 on PostgreSQL 9.3 を知る必要があるので、ひとまず環境を作成してみる
やったこと
- EC2環境構築
- PostgreSQL 9.3 のインストール
- PostgreSQL 9.3 の起動
- ユーザとDB、tableを作成して、select を実行
EC2環境構築
適当に web UI から Amazon linux の t2.small を作成
- ストレージはデフォルト8GBだと足りなそうなので16GBに
PostgreSQL 9.3 のインストール
手順
それぞれ、EC2環境にsshして実行している
- yumリポジトリの設定ファイルの rpm をinstall
- yum install
yumリポジトリの設定ファイルの rpm をinstall
PostgreSQL は yumリポジトリの設定ファイルをrpmで配布しているので、それを取得する
- PostgreSQLの公式ページ にAmazon linuxの場合これをダウンロードすると書かれているので従う
$ wget https://download.postgresql.org/pub/repos/yum/9.3/redhat/rhel-6-x86_64/pgdg-ami201503-93-9.3-3.noarch.rpm
rpmのインストール
$ sudo rpm -ivh pgdg-ami201503-93-9.3-3.noarch.rpm
yumリポジトリが追加されたことを確認
$ rpm -ql pgdg-ami201503-93-9.3-3.noarch /etc/pki/rpm-gpg /etc/pki/rpm-gpg/RPM-GPG-KEY-PGDG-93 /etc/yum.repos.d/pgdg-93-ami201503.repo
yum install
追加された postgresql93
関係のパッケージを確認
$ sudo yum list all postgresql93* 読み込んだプラグイン:extras_suggestions, langpacks, priorities, update-motd 14 packages excluded due to repository priority protections 利用可能なパッケージ postgresql93.x86_64 9.3.25-1PGDG.rhel6 pgdg93 postgresql93-contrib.x86_64 9.3.25-1PGDG.rhel6 pgdg93 postgresql93-debuginfo.x86_64 9.3.25-1PGDG.rhel6 pgdg93 postgresql93-devel.x86_64 9.3.25-1PGDG.rhel6 pgdg93 postgresql93-docs.x86_64 9.3.25-1PGDG.rhel6 pgdg93 postgresql93-libs.x86_64 9.3.25-1PGDG.rhel6 pgdg93 postgresql93-odbc.x86_64 10.03.0000-1PGDG.rhel6 pgdg93 postgresql93-odbc-debuginfo.x86_64 09.03.0400-1PGDG.rhel6 pgdg93 postgresql93-plperl.x86_64 9.3.25-1PGDG.rhel6 pgdg93 postgresql93-plpython.x86_64 9.3.25-1PGDG.rhel6 pgdg93 postgresql93-pltcl.x86_64 9.3.25-1PGDG.rhel6 pgdg93 postgresql93-server.x86_64 9.3.25-1PGDG.rhel6 pgdg93 postgresql93-tcl.x86_64 2.4.0-1.rhel6 pgdg93 postgresql93-tcl-debuginfo.x86_64 2.3.1-1.rhel6 pgdg93 postgresql93-test.x86_64 9.3.25-1PGDG.rhel6 pgdg93
yum install postgresql-server
すれば、必要なものはすべてインストールされるらしいので、それに従う
$ sudo yum -y install postgresql93-server.x86_64
結果、以下のパッケージがインストールされた
インストール中: postgresql93-server x86_64 9.3.25-1PGDG.rhel6 pgdg93 4.1 M 依存性関連でのインストールをします: postgresql93 x86_64 9.3.25-1PGDG.rhel6 pgdg93 1.0 M postgresql93-libs x86_64 9.3.25-1PGDG.rhel6 pgdg93 198 k
PostgreSQL 9.3の起動
PostgreSQLをインストールすると、postgresql userが追加されるので、それを確認
$ id postgres uid=26(postgres) gid=26(postgres) groups=26(postgres)
serviceをONにする
$ sudo chkconfig postgresql-9.3 on $ chkconfig --list postgresql-9.3 注記: この出力に含まれるのは SysV サービスのみです。ネイティブな systemd サービスは含まれません。SysV の設定データはネイティブな systemd 設定で上書きされる場合があります。 systemd サービスを一覧表示する場合は 'systemctl list-unit-files' を使用します。 特定のターゲットで有効になっているサービスを確認する場合は 'systemctl list-dependencies [target]'を使用します。 postgresql-9.3 0:off 1:off 2:on 3:on 4:on 5:on 6:off
initdb
$ sudo service postgresql-9.3 initdb -E UTF-8 --no-locale
-E
はエンコードの指定。明示的に指定しないと、起動環境のエンコードを引き継ぐので、UTF-8を明示的に指定--no-locale
はロケールの指定。こちらも明示的にロケールを引き継がないようにしている(ソート順などに影響がでるらしい
起動
$ sudo service postgresql-9.3 start
本当はこの後にアクセス制限を設定する必要があるが割愛
ユーザとDB、tableを作成して、select を実行
ユーザの作成
$ sudo su - postgres $ createuser ec2-user
DB作成権限を付与
$ psql
postgres=# ALTER ROLE "ec2-user" WITH CREATEDB; ALTER ROLE
権限が付与されたことを確認
postgres=# \du List of roles Role name | Attributes | Member of -----------+------------------------------------------------+----------- ec2-user | Create DB | {} postgres | Superuser, Create role, Create DB, Replication | {}
DBの作成
ec2-user で実行
$ createdb mydb -U ec2-user
作られたことを確認
$ psql -l データベース一覧 名前 | 所有者 | エンコーディング | 照合順序 | Ctype(変換演算子) | アクセス権 -----------+----------+------------------+-------------+-------------------+----------------------- mydb | ec2-user | UTF8 | en_US.UTF-8 | en_US.UTF-8 | postgres | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | template0 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres + | | | | | postgres=CTc/postgres template1 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres + | | | | | postgres=CTc/postgres (4 行)
テーブルの作成
DBに接続
$ psql mydb
ここのチュートリアルを参考に、テーブルを作成してみる
CREATE TABLE weather ( city varchar(80), temp_lo int, -- 最低気温 temp_hi int, -- 最高気温 prcp real, -- 降水量 date date );
作られたことを確認
mydb=> \d リレーションの一覧 スキーマ | 名前 | 型 | 所有者 ----------+---------+----------+---------- public | weather | テーブル | ec2-user (1 行)
行を挿入
INSERT INTO weather VALUES ('San Francisco', 46, 50, 0.25, '1994-11-27');
挿入されたことを確認
mydb=> select * from weather; city | temp_lo | temp_hi | prcp | date ---------------+---------+---------+------+------------ San Francisco | 46 | 50 | 0.25 | 1994-11-27 (1 行)
今日はここまで
その後やりたいこと
- サンプルデータの挿入
- レプリケーション
- バックアップとリカバリ
- DBのバージョンアップ(to 9.6)