目的
Windows10+VMware(R) Workstation 15 Pro+CentOS7+PostgreSQL11で動作するPostgreSQL11検証環境作成
業務での動作確認用だがOSS-DB Silver[ver2.0]での動作確認にも使う予定
VMware(R) Workstation 15 Proを使用しているのは後で複数台のホストを立てて
PostgreSQLのStreaming Replicationを確認するため
ハードウェア環境

仮想環境作成
CentOS7 ISO メディア取得
http://ftp.jaist.ac.jp/pub/Linux/CentOS/7.9.2009/isos/x86_64/
⇒CentOS-7-x86_64-Everything-2009.iso
VMware(R) Workstation 15 Pro 設定
- 起動、仮想マシンの作成









CentOSインストール
- GUIのインストーラ起動









ネットワーク設定(Windows10)
- コントロールパネルを開き、「ネットワークとインターネット」⇒「ネットワークと共有センター」⇒「アダプターの設定の変更」をクリック(カテゴリ表示を想定)





ネットワーク設定(CentOS7)
※VMware(R) Workstation 15 Proで開いている以下のコンソール画面から入力
Workstation 15 Proのメニューからテキスト貼り付けは可能
- ログイン
localhost login: root
Password: (rootのパスワード)
- バージョン確認
# cat /etc/redhat-release
CentOS Linux release 7.9.2009 (Core)
- ネットワーク設定事前確認
# ip addr show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:xx:xx:xx:xx:xx brd ff:ff:ff:ff:ff:ff
- ネットワーク設定
# nmcli connection modify ens33 ipv4.addresses 192.168.100.102/24 ipv4.method manual
- OS起動時自動接続設定
# nmcli connection modify ens33 connection.autoconnect yes
- ネットワーク設定事後確認
# ip addr show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:xx:xx:xx:xx:xx brd ff:ff:ff:ff:ff:ff
inet 192.168.100.102/24 brd 192.168.100.255 scope global noprefixroute ens33
valid_lft forever preferred_lft forever
inet6 fe80::1846:a86c:868:a9e0/64 scope link noprefixroute
valid_lft forever preferred_lft forever
- OS再起動
# shutdown -r now
- OS再起動後ログイン
localhost login: root
Password: rootのパスワード
- OS再起動後自動接続確認
# ip addr show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:xx:xx:xx:xx:xx brd ff:ff:ff:ff:ff:ff
inet 192.168.100.101/24 brd 192.168.100.255 scope global noprefixroute ens33
valid_lft forever preferred_lft forever
inet6 fe80::1846:a86c:868:a9e0/64 scope link noprefixroute
valid_lft forever preferred_lft forever
※以下Teraterm等ターミナルソフトでログイン可能
PostgreSQLパッケージインストール
今回は隔離したネットワーク上にサーバを構築しているため、rpmのパッケージをダウンロードしてscp転送、インストールを実施
-
パッケージダウンロード場所
https://yum.postgresql.org/11/redhat/rhel-7-x86_64/repoview/postgresqldbserver11.group.html -
ダウンロード項目
postgresql11 - PostgreSQL client programs and libraries
postgresql11-contrib - Contributed source and binaries distributed with PostgreSQL
postgresql11-libs - The shared libraries required for any PostgreSQL clients
postgresql11-server - The programs needed to create and run a PostgreSQL server -
ダウンロードファイル
postgresql11-11.11-1PGDG.rhel7.x86_64.rpm
postgresql11-contrib-11.11-1PGDG.rhel7.x86_64.rpm
postgresql11-libs-11.11-1PGDG.rhel7.x86_64.rpm
postgresql11-server-11.11-1PGDG.rhel7.x86_64.rpm
postgresql11-contribはメインのパッケージには取り込まれていないが使用用途によっては必要となる物が入ってるパッケージ⇒今回は入れない
ダウンロードしたパッケージはWin_SCPやTeratermのSSH SCP転送などで/tmp配下に転送する
-
Teratermにて192.168.100.102へrootユーザでログイン
-
パッケージ確認
# ls -l /tmp/*.rpm
-rw-r--r--. 1 root root 1764536 2月 27 20:03 /tmp/postgresql11-11.11-1PGDG.rhel7.x86_64.rpm
-rw-r--r--. 1 root root 623984 2月 27 20:04 /tmp/postgresql11-contrib-11.11-1PGDG.rhel7.x86_64.rpm
-rw-r--r--. 1 root root 371868 2月 27 20:04 /tmp/postgresql11-libs-11.11-1PGDG.rhel7.x86_64.rpm
-rw-r--r--. 1 root root 4967804 2月 27 20:04 /tmp/postgresql11-server-11.11-1PGDG.rhel7.x86_64.rpm
- パッケージインストールテスト
# cd /tmp
# rpm -i --test postgresql11-server-11.11-1PGDG.rhel7.x86_64.rpm postgresql11-libs-11.11-1PGDG.rhel7.x86_64.rpm postgresql11-11.11-1PGDG.rhel7.x86_64.rpm
警告: postgresql11-server-11.11-1PGDG.rhel7.x86_64.rpm: ヘッダー V4 DSA/SHA1 Signature、鍵 ID 442df0f8: NOKEY
エラー: 依存性の欠如:
libicui18n.so.50()(64bit) は postgresql11-server-11.11-1PGDG.rhel7.x86_64 に必要とされています
libicuuc.so.50()(64bit) は postgresql11-server-11.11-1PGDG.rhel7.x86_64 に必要とされています
libicu は postgresql11-11.11-1PGDG.rhel7.x86_64 に必要とされています
-
libicu取得
https://centos.pkgs.org/7/centos-x86_64/libicu-50.2-4.el7_7.x86_64.rpm.html
Download->Binary Package -
ダウンロードファイル
libicu-50.2-4.el7_7.x86_64.rpm
※こちらもWin_SCPやTeratermのSSH SCP転送などで/tmp配下に転送する -
パッケージ確認
# ls -l /tmp/*.rpm
-rw-r--r--. 1 root root 7202728 2月 27 20:15 /tmp/libicu-50.2-4.el7_7.x86_64.rpm
-rw-r--r--. 1 root root 1764536 2月 27 20:03 /tmp/postgresql11-11.11-1PGDG.rhel7.x86_64.rpm
-rw-r--r--. 1 root root 623984 2月 27 20:04 /tmp/postgresql11-contrib-11.11-1PGDG.rhel7.x86_64.rpm
-rw-r--r--. 1 root root 371868 2月 27 20:04 /tmp/postgresql11-libs-11.11-1PGDG.rhel7.x86_64.rpm
-rw-r--r--. 1 root root 4967804 2月 27 20:04 /tmp/postgresql11-server-11.11-1PGDG.rhel7.x86_64.rpm
- パッケージインストールテスト
# rpm -ihv --nosignature --test postgresql11-11.11-1PGDG.rhel7.x86_64.rpm postgresql11-libs-11.11-1PGDG.rhel7.x86_64.rpm postgresql11-server-11.11-1PGDG.rhel7.x86_64.rpm libicu-50.2-4.el7_7.x86_64.rpm
準備しています... ################################# [100%]
- パッケージインストール
# rpm -ihv --nosignature postgresql11-11.11-1PGDG.rhel7.x86_64.rpm postgresql11-libs-11.11-1PGDG.rhel7.x86_64.rpm postgresql11-server-11.11-1PGDG.rhel7.x86_64.rpm libicu-50.2-4.el7_7.x86_64.rpm
準備しています... ################################# [100%]
更新中 / インストール中...
1:libicu-50.2-4.el7_7 ################################# [ 25%]
2:postgresql11-libs-11.11-1PGDG.rhe################################# [ 50%]
3:postgresql11-11.11-1PGDG.rhel7 ################################# [ 75%]
4:postgresql11-server-11.11-1PGDG.r################################# [100%]
- インストール確認
# rpm -qa | grep -e "postgresql11" -e "libicu"
libicu-50.2-4.el7_7.x86_64
postgresql11-11.11-1PGDG.rhel7.x86_64
postgresql11-libs-11.11-1PGDG.rhel7.x86_64
postgresql11-server-11.11-1PGDG.rhel7.x86_64
DBクラスタ作成
- 実行ファイルインストール場所
# find / -name postgres
/usr/pgsql-11/bin/postgres
- ファイル確認
# ls -l /usr/pgsql-11/bin/
合計 10048
-rwxr-xr-x. 1 root root 58864 2月 11 09:42 clusterdb
-rwxr-xr-x. 1 root root 58840 2月 11 09:42 createdb
-rwxr-xr-x. 1 root root 59304 2月 11 09:42 createuser
-rwxr-xr-x. 1 root root 54512 2月 11 09:42 dropdb
-rwxr-xr-x. 1 root root 54488 2月 11 09:42 dropuser
-rwxr-xr-x. 1 root root 121888 2月 11 09:42 initdb
-rwxr-xr-x. 1 root root 28840 2月 11 09:42 pg_archivecleanup
-rwxr-xr-x. 1 root root 109752 2月 11 09:42 pg_basebackup
-rwxr-xr-x. 1 root root 28768 2月 11 09:42 pg_config
-rwxr-xr-x. 1 root root 41264 2月 11 09:42 pg_controldata
-rwxr-xr-x. 1 root root 54280 2月 11 09:42 pg_ctl
-rwxr-xr-x. 1 root root 396672 2月 11 09:42 pg_dump
-rwxr-xr-x. 1 root root 88632 2月 11 09:42 pg_dumpall
-rwxr-xr-x. 1 root root 54440 2月 11 09:42 pg_isready
-rwxr-xr-x. 1 root root 71824 2月 11 09:42 pg_receivewal
-rwxr-xr-x. 1 root root 50040 2月 11 09:42 pg_resetwal
-rwxr-xr-x. 1 root root 159528 2月 11 09:42 pg_restore
-rwxr-xr-x. 1 root root 83920 2月 11 09:42 pg_rewind
-rwxr-xr-x. 1 root root 29088 2月 11 09:42 pg_test_fsync
-rwxr-xr-x. 1 root root 24784 2月 11 09:42 pg_test_timing
-rwxr-xr-x. 1 root root 125824 2月 11 09:42 pg_upgrade
-rwxr-xr-x. 1 root root 41400 2月 11 09:42 pg_verify_checksums
-rwxr-xr-x. 1 root root 79696 2月 11 09:42 pg_waldump
-rwxr-xr-x. 1 root root 142928 2月 11 09:42 pgbench
-rwxr-xr-x. 1 root root 7457088 2月 11 09:42 postgres
-rwxr-xr-x. 1 root root 2176 2月 11 09:41 postgresql-11-check-db-dir
-rwxr-xr-x. 1 root root 9413 2月 11 09:41 postgresql-11-setup
lrwxrwxrwx. 1 root root 8 2月 28 05:23 postmaster -> postgres
-rwxr-xr-x. 1 root root 606680 2月 11 09:42 psql
-rwxr-xr-x. 1 root root 58960 2月 11 09:42 reindexdb
-rwxr-xr-x. 1 root root 63248 2月 11 09:42 vacuumdb
- posrgresログ出力ディレクトリ作成
# ls -ld /var/log/postgres
ls: /var/log/postgres にアクセスできません: そのようなファイルやディレクトリはありません
# mkdir -p /var/log/postgres
# chown postgres:postgres /var/log/postgres
# ls -ld /var/log/postgres
drwxr-xr-x. 2 postgres postgres 6 2月 28 11:19 /var/log/postgres
- postgresユーザ作成確認
# grep postgres /etc/passwd
postgres:x:26:26:PostgreSQL Server:/var/lib/pgsql:/bin/bash
# grep postgres /etc/group
postgres:x:26:
- ユーザ切り替え
# su - postgres
$ uname -n;id;date
uid=26(postgres) gid=26(postgres) groups=26(postgres) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
2021年 2月 28日 日曜日 11:25:05 JST
- postgres状態確認
$ /usr/pgsql-11/bin/pg_ctl status
pg_ctl: ディレクトリ"/var/lib/pgsql/11/data"はデータベースクラスタディレクトリではありません
- データベースクラスタ作成
# /usr/pgsql-11/bin/initdb -D /var/lib/pgsql/11/data -E UTF8 --no-locale -U postgres
データベースシステム内のファイルの所有者は"postgres"となります。
このユーザがサーバプロセスも所有する必要があります。
データベースクラスタはロケール"C"で初期化されます。
デフォルトのテキスト検索設定はenglishに設定されました。
データベージのチェックサムは無効です。
既存のディレクトリ/var/lib/pgsql/11/dataの権限を修正します ... 完了
サブディレクトリを作成します ... 完了
max_connectionsのデフォルト値を選択します ... 100
shared_buffersのデフォルト値を選択します ... 128MB
selecting default timezone ... Asia/Tokyo
動的共有メモリの実装を選択します ... posix
設定ファイルを作成します ... 完了
ブートストラップスクリプトを実行します ... 完了
ブートストラップ後の初期化を行っています ... 完了
データをディスクに同期します...完了
警告: ローカル接続で"trust"認証を有効にします。
この設定はpg_hba.confを編集するか、次回のinitdbの実行の際であれば-Aオプ
ション、または、--auth-localおよび--auth-hostを使用することで変更するこ
とができます。
成功しました。以下のようにしてデータベースサーバを起動できます。
/usr/pgsql-11/bin/pg_ctl -D /var/lib/pgsql/11/data -l <ログファイル> start
initdbオプション
https://www.postgresql.jp/document/11/html/app-initdb.html
https://www.postgresql.jp/document/11/html/locale.html
-D: データベースクラスタを格納すべきディレクトリを指定
-E: エンコードを指定
--no-locale: ロケールを使用しない
-U: データベースのスーパーユーザのユーザ名
PostgreSQL起動
- PostgreSQL状態確認
$ /usr/pgsql-11/bin/pg_ctl status
pg_ctl: サーバが動作していません
DBクラスタができたので作成前とはメッセージが異なる
- PostgreSQL起動
$ /usr/pgsql-11/bin/pg_ctl -D /var/lib/pgsql/11/data -l /var/log/postgres/postgres.log start
サーバの起動完了を待っています....完了
サーバ起動完了
- PostgreSQL起動後状態確認
$ /usr/pgsql-11/bin/pg_ctl status
pg_ctl: サーバが動作中です(PID: 2588)
/usr/pgsql-11/bin/postgres "-D" "/var/lib/pgsql/11/data"```
- postgresバージョン確認
$ postgres -V
postgres (PostgreSQL) 11.11
- psqlバージョン確認
$ psql -V
psql (PostgreSQL) 11.11
- psqlでpostgresへ接続
$ psql
psql (11.11)
"help" でヘルプを表示します。
postgres=#
- 接続状態
postgres=# \conninfo
データベース "postgres" にユーザ "postgres" として、ソケット "/var/run/postgresql" のポート "5432" を介して接続しています。
- DB状態
postgres=# \l
データベース一覧
名前 | 所有者 | エンコーディング | 照合順序 | Ctype(変換演算子) | アクセス権限
-----------+----------+------------------+----------+-------------------+-----------------------
postgres | postgres | UTF8 | C | C |
template0 | postgres | UTF8 | C | C | =c/postgres +
| | | | | postgres=CTc/postgres
template1 | postgres | UTF8 | C | C | =c/postgres +
| | | | | postgres=CTc/postgres
(3 行)
- DB変更確認
postgres=# CREATE DATABASE test;
CREATE DATABASE
postgres=# \l
データベース一覧
名前 | 所有者 | エンコーディング | 照合順序 | Ctype(変換演算子) | アクセス権限
-----------+----------+------------------+----------+-------------------+-----------------------
postgres | postgres | UTF8 | C | C |
template0 | postgres | UTF8 | C | C | =c/postgres +
| | | | | postgres=CTc/postgres
template1 | postgres | UTF8 | C | C | =c/postgres +
| | | | | postgres=CTc/postgres
test | postgres | UTF8 | C | C |
(4 行)
postgres=# \c test
データベース "test" にユーザ "postgres" として接続しました。
test=# create table sample (id integer, name varchar(10));
CREATE TABLE
test=# \dt
リレーション一覧
スキーマ | 名前 | 型 | 所有者
----------+--------+----------+----------
public | sample | テーブル | postgres
(1 行)
test=# SELECT * FROM sample;
id | name
----+------
(0 行)
test=# INSERT INTO sample (id, name) VALUES (10010, 'SPEEDCORE');
INSERT 0 1
test=# INSERT INTO sample (id, name) VALUES (10011, 'GABBA');
INSERT 0 1
test=# SELECT * FROM SAMPLE;
id | name
-------+-----------
10010 | SPEEDCORE
10011 | GABBA
(2 行)
test=# DELETE FROM sample WHERE id = '10011';
DELETE 1
test=# SELECT * FROM SAMPLE;
id | name
-------+-----------
10010 | SPEEDCORE
(1 行)
test=# TRUNCATE TABLE sample;
TRUNCATE TABLE
test=# SELECT * FROM SAMPLE;
id | name
----+------
(0 行)
test=# DROP TABLE sample;
DROP TABLE
test=# SELECT * FROM SAMPLE;
ERROR: relation "sample" does not exist
行 1: SELECT * FROM SAMPLE;
^
test=# \dt
リレーションが見つかりませんでした。
test=# DROP DATABASE TEST;
ERROR: cannot drop the currently open database
test=# \c postgres
データベース "postgres" にユーザ "postgres" として接続しました。
postgres=# DROP DATABASE test;
DROP DATABASE
postgres=# \l
データベース一覧
名前 | 所有者 | エンコーディング | 照合順序 | Ctype(変換演算子) | アクセス権限
-----------+----------+------------------+----------+-------------------+-----------------------
postgres | postgres | UTF8 | C | C |
template0 | postgres | UTF8 | C | C | =c/postgres +
| | | | | postgres=CTc/postgres
template1 | postgres | UTF8 | C | C | =c/postgres +
| | | | | postgres=CTc/postgres
(3 行)
- psql終了
postgres=# \q
- ログ出力確認
$ cat /var/log/postgres/postgres.log
2021-02-28 11:39:47.358 JST [2588] LOG: listening on IPv6 address "::1", port 5432
2021-02-28 11:39:47.358 JST [2588] LOG: listening on IPv4 address "127.0.0.1", port 5432
2021-02-28 11:39:47.359 JST [2588] LOG: listening on Unix socket "/var/run/postgresql/.s.PGSQL.5432"
2021-02-28 11:39:47.360 JST [2588] LOG: listening on Unix socket "/tmp/.s.PGSQL.5432"
2021-02-28 11:39:47.366 JST [2588] LOG: redirecting log output to logging collector process
2021-02-28 11:39:47.366 JST [2588] HINT: Future log output will appear in directory "log".
- 終了
$ exit;exit