OSS Fan ~OSSでLinuxサーバ構築~

このエントリーをはてなブックマークに追加

PostgreSQL 9.6.3をCentOS 7.3へインストールし、PITR可能な初期設定を行う

カテゴリ:OSSセットアップ | ソフトウェア:PostgreSQL | タグ:
最終更新日:2021/01/01 | 公開日:2017/05/28

目次

概要

 CentOS 7.3がインストールされたサーバに、PostgreSQL 9.6をインストールします。 運用の中で、人為的な操作ミスによるデータの削除や、バッチ処理のバグによるデータ誤りなどのデータベースの論理障害が 発生することを想定し、バックアップからのPITR(Point In Time Recovery)を行える設定を行います。 ただし、ディスクの故障など物理障害は今回想定から外すこととし、ディスク構成を簡略化しています。

 WALファイルをアーカイブする場合の注意点として、アーカイブファイルを自動で削除する仕組みがありません。 ディスクの使用率が不足する前に定期的に削除する必要があります。 適切なタイミングとしては、データベースクラスタのベースバックアップを取得したタイミングで、 それ以前に生成されたアーカイブファイルが不要となりますので、 ベースバックアップの実行とアーカイブファイルの削除をセットで運用するのが良いと思います。 今回はその詳細については触れませんが、運用設計として考慮しておいてください。

 WALはWrite Ahead Loggingの略で、いわゆるデータベースのトランザクションログです。 Oracle DatabaseではREDOログと呼んでいるものと同じです。

構成

想定環境

 今回構築するPostgreSQLサーバのプロセス、メモリ、接続の構成概要は以下の通りとなります。

PostgreSQL 9.6.3構成

 ディレクトリ構成は任意ですが、今回は以下の通りとします。 ご自身の環境に読み替えて構築してください。

最新データ/data/
バックアップデータ/bkup/
データベースクラスタ/data/pgdata1/
WALファイル/data/pgdata1/pg_xlog/
アーカイブファイル/bkup/pgdata1/pg_arch/

サーバ構成

OSバージョン

CentOS 7.3.1611 x86_64

パッケージ一覧

  • postgresql96-9.6.3-1PGDG.rhel7.x86_64.rpm
  • postgresql96-libs-9.6.3-1PGDG.rhel7.x86_64.rpm
  • postgresql96-server-9.6.3-1PGDG.rhel7.x86_64.rpm

環境構築

インストール

RPMパッケージのダウンロード

 PostgreSQLサーバに最低限必要なRPMパッケージを3つダウンロードします。 ダウンロードにはwgetコマンドを利用しますので、事前にwgetパッケージをインストールしておいてください。

 サーバがインターネットにつながっていない場合は、wgetではダウンロードできません。 インターネットに接続したPC等で以下のサイトからRPMパッケージをダウンロードして、 構築対象サーバの /media/installer/ ディレクトリに格納してください。

【ダウンロードサイト】
 RHEL 7系Linux向けPostgreSQL 9.6.3(x86_64)ダウンロードページ

# cd /media/
# mkdir installer
# cd installer/
# wget https://yum.postgresql.org/9.6/redhat/rhel-7-x86_64/postgresql96-9.6.3-1PGDG.rhel7.x86_64.rpm
--2017-05-23 23:51:43--  https://yum.postgresql.org/9.6/redhat/rhel-7-x86_64/postgresql96-9.6.3-1PGDG.rhel7.x86_64.rpm
yum.postgresql.org (yum.postgresql.org) をDNSに問いあわせています... 174.143.35.196
yum.postgresql.org (yum.postgresql.org)|174.143.35.196|:443 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 301 Moved Permanently
場所: http://download.postgresql.org/pub/repos/yum/9.6/redhat/rhel-7-x86_64/postgresql96-9.6.3-1PGDG.rhel7.x86_64.rpm [続く]
--2017-05-23 23:51:47--  http://download.postgresql.org/pub/repos/yum/9.6/redhat/rhel-7-x86_64/postgresql96-9.6.3-1PGDG.rhel7.x86_64.rpm
download.postgresql.org (download.postgresql.org) をDNSに問いあわせています... 204.145.124.244, 174.143.35.246, 217.196.149.55, ...
download.postgresql.org (download.postgresql.org)|204.145.124.244|:80 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 200 OK
長さ: 1411948 (1.3M) [application/x-redhat-package-manager]
`postgresql96-9.6.3-1PGDG.rhel7.x86_64.rpm' に保存中

100%[==================================================================================================>] 1,411,948   15.7KB/s 時間 1m 53s

2017-05-23 23:53:43 (12.2 KB/s) - `postgresql96-9.6.3-1PGDG.rhel7.x86_64.rpm' へ保存完了 [1411948/1411948]

# wget https://yum.postgresql.org/9.6/redhat/rhel-7-x86_64/postgresql96-server-9.6.3-1PGDG.rhel7.x86_64.rpm
--2017-05-23 23:54:03--  https://yum.postgresql.org/9.6/redhat/rhel-7-x86_64/postgresql96-server-9.6.3-1PGDG.rhel7.x86_64.rpm
yum.postgresql.org (yum.postgresql.org) をDNSに問いあわせています... 174.143.35.196
yum.postgresql.org (yum.postgresql.org)|174.143.35.196|:443 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 301 Moved Permanently
場所: http://download.postgresql.org/pub/repos/yum/9.6/redhat/rhel-7-x86_64/postgresql96-server-9.6.3-1PGDG.rhel7.x86_64.rpm [続く]
--2017-05-23 23:54:04--  http://download.postgresql.org/pub/repos/yum/9.6/redhat/rhel-7-x86_64/postgresql96-server-9.6.3-1PGDG.rhel7.x86_64.rpm
download.postgresql.org (download.postgresql.org) をDNSに問いあわせています... 87.238.57.227, 204.145.124.244, 217.196.149.55, ...
download.postgresql.org (download.postgresql.org)|87.238.57.227|:80 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 200 OK
長さ: 4492068 (4.3M) [application/x-redhat-package-manager]
`postgresql96-server-9.6.3-1PGDG.rhel7.x86_64.rpm' に保存中

100%[==================================================================================================>] 4,492,068   19.8KB/s 時間 4m 40s

2017-05-23 23:58:45 (15.7 KB/s) - `postgresql96-server-9.6.3-1PGDG.rhel7.x86_64.rpm' へ保存完了 [4492068/4492068]

# wget https://yum.postgresql.org/9.6/redhat/rhel-7-x86_64/postgresql96-libs-9.6.3-1PGDG.rhel7.x86_64.rpm
--2017-05-23 23:59:09--  https://yum.postgresql.org/9.6/redhat/rhel-7-x86_64/postgresql96-libs-9.6.3-1PGDG.rhel7.x86_64.rpm
yum.postgresql.org (yum.postgresql.org) をDNSに問いあわせています... 174.143.35.196
yum.postgresql.org (yum.postgresql.org)|174.143.35.196|:443 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 301 Moved Permanently
場所: http://download.postgresql.org/pub/repos/yum/9.6/redhat/rhel-7-x86_64/postgresql96-libs-9.6.3-1PGDG.rhel7.x86_64.rpm [続く]
--2017-05-23 23:59:14--  http://download.postgresql.org/pub/repos/yum/9.6/redhat/rhel-7-x86_64/postgresql96-libs-9.6.3-1PGDG.rhel7.x86_64.rpm
download.postgresql.org (download.postgresql.org) をDNSに問いあわせています... 217.196.149.55, 87.238.57.227, 174.143.35.246, ...
download.postgresql.org (download.postgresql.org)|217.196.149.55|:80 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 200 OK
長さ: 317876 (310K) [application/x-redhat-package-manager]
`postgresql96-libs-9.6.3-1PGDG.rhel7.x86_64.rpm' に保存中

100%[==================================================================================================>] 317,876     97.6KB/s 時間 3.2s

2017-05-23 23:59:19 (97.6 KB/s) - `postgresql96-libs-9.6.3-1PGDG.rhel7.x86_64.rpm' へ保存完了 [317876/317876]

# ls -l
合計 6080
-rw-r--r-- 1 root root 1411948  5月 10 00:01 postgresql96-9.6.3-1PGDG.rhel7.x86_64.rpm
-rw-r--r-- 1 root root  317876  5月 10 00:01 postgresql96-libs-9.6.3-1PGDG.rhel7.x86_64.rpm
-rw-r--r-- 1 root root 4492068  5月 10 00:01 postgresql96-server-9.6.3-1PGDG.rhel7.x86_64.rpm

RPMパッケージからPostgreSQLをインストール

 ダウンロードしたRPMパッケージを使用してPostgreSQLをインストールします。 インストール時に警告メッセージが表示されますが、無視して構いません。

# cd /media/installer/
# ls -l
合計 6080
-rw-r--r-- 1 root root 1411948  5月 10 00:01 postgresql96-9.6.3-1PGDG.rhel7.x86_64.rpm
-rw-r--r-- 1 root root  317876  5月 10 00:01 postgresql96-libs-9.6.3-1PGDG.rhel7.x86_64.rpm
-rw-r--r-- 1 root root 4492068  5月 10 00:01 postgresql96-server-9.6.3-1PGDG.rhel7.x86_64.rpm
# rpm -ihv postgresql96-*.rpm
警告: postgresql96-9.6.3-1PGDG.rhel7.x86_64.rpm: ヘッダー V4 DSA/SHA1 Signature、鍵 ID 442df0f8: NOKEY
準備しています...              ################################# [100%]
更新中 / インストール中...
   1:postgresql96-libs-9.6.3-1PGDG.rhe################################# [ 33%]
   2:postgresql96-9.6.3-1PGDG.rhel7   ################################# [ 67%]
   3:postgresql96-server-9.6.3-1PGDG.r################################# [100%]

設定

postgresユーザのパスワード設定

 PostgreSQLのパッケージをインストールすると、自動で postgres ユーザ(Linuxのユーザ)が作成されます。 作成直後はパスワードが設定されていないため、設定します。

# passwd postgres
ユーザー postgres のパスワードを変更。
新しいパスワード: ←パスワードを入力(表示されません)
新しいパスワードを再入力してください: ←上と同じパスワードを入力(表示されません)
passwd: すべての認証トークンが正しく更新できました。

postgresユーザの環境変数設定

 環境変数としてデータベースクラスタとPostgreSQLのコマンドへのパスを設定します。

# grep postgres /etc/passwd
postgres:x:26:26:PostgreSQL Server:/var/lib/pgsql:/bin/bash ←ホームディレクトリを確認
# cd /var/lib/pgsql/
# vi .bash_profile
ファイル名:/var/lib/pgsql/.bash_profile
PGDATA=/var/lib/pgsql/9.6/data
export PGDATA
   ↓変更
PGDATA=/data/pgdata1
export PGDATA
export PATH=$PATH:/usr/pgsql-9.6/bin

データベースクラスタ用ディレクトリ($PGDATA)作成

 インストールしたRPMパッケージで初期設定されているデータベースクラスタは /var/lib/pgsql/9.6/data/ となっています。 このままでも良いのですが、ディレクトリ階層が深くて分かりづらいため /data/pgdata1/ に変更します。 また、アーカイブファイルの格納先は /bkup/pgdata1/pg_arch/ とします。 その他、データベースクラスタのベースバックアップの取得先は /bkup/ ディレクトリとします。

 データベースクラスタのベースバックアップと最新のWALファイル、アーカイブファイルはPITRに必要なファイルなので、 冗長化を高めたディスクに保管した方が良いですが、今回は物理障害ではなく、論理障害(人為的操作ミス)からの 復旧に限定した構成としているため、データベースクラスタと同じディスク上に保存しています。

 それぞれディレクトリを作成して必要なパーミッションを設定します。 データベースクラスタ用のディレクトリは管理者ユーザのpostgresユーザのみが参照、更新できるようにします。

# cd /
# mkdir -m 777 data ←最新データ用
# mkdir -m 777 bkup ←バックアップデータ用
# su - postgres
-bash-4.2$ cd /data/
-bash-4.2$ mkdir -m 700 pgdata1 ←データベースクラスタ用
-bash-4.2$ ls -l
合計 0
drwx------ 2 postgres postgres 6  5月 24 00:07 pgdata1
-bash-4.2$ cd /bkup/
-bash-4.2$ mkdir -m 700 pgdata1
-bash-4.2$ ls -l
合計 0
drwx------ 2 postgres postgres 6  5月 24 00:29 pgdata1
-bash-4.2$ cd pgdata1/
-bash-4.2$ mkdir -m 700 pg_arch ←アーカイブファイル用
-bash-4.2$ ls -l
合計 0
drwx------ 2 postgres postgres 6  5月 24 00:29 pg_arch

データベースクラスタ作成

 前の手順で作成したデータベースクラスタ用ディレクトリ内にデータベースクラスタを作成します。 initdbコマンドを使用しますが、必ず管理者ユーザであるpostgresユーザで実行してください。 エンコーディングは UTF8、ロケールは設定しません。 PostgreSQLでロケールを選択した場合、検索性能に問題が出るらしく、 ロケールを選択しないことが推奨とされています。(9.6でも該当するかは未確認です)

-bash-4.2$ initdb --encoding=UTF8 --no-locale --pgdata=/data/pgdata1
データベースシステム内のファイルの所有者は"postgres"ユーザでした。
このユーザがサーバプロセスを所有しなければなりません。

データベースクラスタはロケール"C"で初期化されます。
デフォルトのテキスト検索設定はenglishに設定されました。

データベージのチェックサムは無効です。

ディレクトリ/data/pgdata1の権限を設定しています ... ok
サブディレクトリを作成しています ... ok
デフォルトのmax_connectionsを選択しています ... 100
デフォルトの shared_buffers を選択しています ... 128MB
selecting dynamic shared memory implementation ... posix
設定ファイルを作成しています ... ok
running bootstrap script ... ok
performing post-bootstrap initialization ... ok
データをディスクに同期しています...ok

警告: ローカル接続向けに"trust"認証が有効です。
pg_hba.confを編集する、もしくは、次回initdbを実行する時に-Aオプショ
ン、または、--auth-localおよび--auth-hostを使用することで変更するこ
とができます。

Success. You can now start the database server using:

    pg_ctl -D /data/pgdata1 -l logfile start

-bash-4.2$

リッスンアドレスとログ出力設定の変更

 ここではPostgreSQLインスタンスがリッスンするIPアドレスと ログ出力、WALファイルのアーカイブに関する設定を行います。

 初期設定ではPostgreSQLが localhost(127.0.0.1)のみでリッスンする設定になっています。 そのため、他のサーバからTCP/IP接続することができません。 ローカルからもリモートからもTCP/IP接続できるように、 このサーバが持つ全てのIPアドレスでリッスンする設定とします。

 ログの出力先は /data/pgdata1/pg_log/ ディレクトリ内とします。 ログファイル名は postgresql-20170524.log のように ログファイルが作成された年月日を付与します。 ログファイルは7日間経過後に自動でローテーションされ、 新しいログファイルに出力が切り替わるようにします。 一定のファイルサイズに達した際にローテーションされる 機能は使用しません。あくまで日数経過後にローテーションします。 ログファイルには標準では発生したイベントの内容のみが記録されます。 ただ、これでは後から見たときに分かりづらいので、 イベントが発生した年月日時分秒とプロセスIDが出力されるように設定します。 ログメッセージの形式は以下のようになります。

【ログメッセージの出力例】
2017-05-24 00:30:42 JST [8367] LOG: shutting down
2017-05-24 00:30:42 JST [8364] LOG: database system is shut down

 WALファイルは初期設定ではアーカイブする設定になっていないため、 ログファイルが循環すると古いファイルから削除されてしまいます。 PITRではベースバックアップからの一連の更新ログが必要となるため、 WALファイルをアーカイブする設定に変更します。 また、データベースクラスタのベースバックアップ(pg_basebackup)を取得する際に レプリケーションプロトコルが利用される仕様となっているため、 一部レプリケーションに関する設定も必要となります。

 データベースクラスタ内の postgresql.conf ファイルを編集します。

-bash-4.2$ cd /data/pgdata1/
-bash-4.2$ vi postgresql.conf
ファイル名:/data/pgdata1/postgresql.conf
#------------------------------------------------------------------------------
# CONNECTIONS AND AUTHENTICATION
#------------------------------------------------------------------------------
#listen_addresses = 'localhost'         # what IP address(es) to listen on;
   ↓変更
listen_addresses = '*'                  # what IP address(es) to listen on;

#------------------------------------------------------------------------------
# WRITE AHEAD LOG
#------------------------------------------------------------------------------
#wal_level = minimal                    # minimal, replica, or logical
   ↓変更
wal_level = logical                     # minimal, replica, or logical

#archive_mode = off             # enables archiving; off, on, or always
   ↓変更
archive_mode = on               # enables archiving; off, on, or always

#archive_command = ''           # command to use to archive a logfile segment
   ↓変更
archive_command = 'cp %p /bkup/pgdata1/pg_arch/%f'              # command to use to archive a logfile segment

#------------------------------------------------------------------------------
# REPLICATION
#------------------------------------------------------------------------------
#max_wal_senders = 0            # max number of walsender processes
   ↓変更
max_wal_senders = 2             # max number of walsender processes

※変更なし※
#------------------------------------------------------------------------------
# ERROR REPORTING AND LOGGING
#------------------------------------------------------------------------------
log_destination = 'stderr'              # Valid values are combinations of
logging_collector = on                  # Enable capturing of stderr and csvlog
log_directory = 'pg_log'                # directory where log files are written,

log_filename = 'postgresql-%a.log'      # log file name pattern,
   ↓変更
log_filename = 'postgresql-%Y%m%d.log'  # log file name pattern,

log_truncate_on_rotation = on           # If on, an existing log file with the
   ↓変更
log_truncate_on_rotation = off          # If on, an existing log file with the

log_rotation_age = 1d                   # Automatic rotation of logfiles will
   ↓変更
log_rotation_age = 7d                   # Automatic rotation of logfiles will

※変更なし※
log_rotation_size = 0                   # Automatic rotation of logfiles will

log_line_prefix = '< %m > '                     # special values:
   ↓変更
log_line_prefix = '%t [%p] '                    # special values:

※変更なし※
log_timezone = 'Japan'

スーパーユーザのパスワード設定

 データベースクラスタ作成時点では、スーパーユーザ(データベースユーザ) postgres のパスワードが 設定されていません。一度PostgreSQLのインスタンスを起動してパスワードを設定します。 パスワードを設定する前にクライアント認証を設定すると、ログインできなくなってしまう可能性がありますので要注意です。 パスワード設定後は再度インスタンスを停止します。 以下では postgres ユーザのパスワードを「password」に設定します。

-bash-4.2$ pg_ctl start -w
サーバの起動完了を待っています....2017-05-24 00:30:05 JST [8364] LOG:  redirecting log output to logging collector process
2017-05-24 00:30:05 JST [8364] HINT:  Future log output will appear in directory "pg_log".
完了
サーバ起動完了
-bash-4.2$ psql -c "alter role postgres with password 'password';"
ALTER ROLE
-bash-4.2$ pg_ctl stop -m fast
サーバ停止処理の完了を待っています....完了
サーバは停止しました

クライアント認証の設定

 クライアントからPostgreSQLに接続する際の認証設定を行います。 デフォルトで設定されている内容は全てコメントアウトし、必要な設定をファイルの末尾に追加します。 設定する認証ルールは以下の通りとします。

  • postgresユーザ(管理者ユーザ)がUNIXドメインソケット接続(ローカル接続)を行った場合は、 パスワードの入力を求めない。
  • postgresユーザ(管理者ユーザ)がUNIXドメインソケット接続(ローカル接続)でレプリケーションが要求された場合、 (replicationという名のデータベースは存在せず、特殊な操作を表す予約語)パスワードの入力を求めない。
  • postgresユーザ(管理者ユーザ)以外のユーザ(一般ユーザ)がUNIXドメインソケット接続(ローカル接続)を行った場合は、 PostgreSQLユーザ名とパスワードで認証する。パスワードはMD5で暗号化して送信する。
  • ユーザに関係なくTCP/IP接続(リモート接続)を行った場合は、PostgreSQLユーザ名とパスワードで認証する。 PostgreSQLが稼働するサーバと同一のネットワークセグメント(192.168.0.0/24)からの接続のみ許可する。 パスワードはMD5で暗号化して送信する。

 PostgreSQLでデータベースクラスタのオンラインバックアップ(pg_basebackup)を実行する場合、 レプリケーションプロトコルを利用してバックアップが作成される仕様となっています。 そのため、上記2つ目のルールを記述しておく必要があることに注意してください。

-bash-4.2$ cd /data/pgdata1/
-bash-4.2$ vi pg_hba.conf
ファイル名:/data/pgdata1/pg_hba.conf
# "local" is for Unix domain socket connections only
local   all             all                                     trust
# IPv4 local connections:
host    all             all             127.0.0.1/32            trust
# IPv6 local connections:
host    all             all             ::1/128                 trust
   ↓変更
# "local" is for Unix domain socket connections only
#local   all             all                                     trust ※コメントアウト
# IPv4 local connections:
#host    all             all             127.0.0.1/32            trust ※コメントアウト
# IPv6 local connections:
#host    all             all             ::1/128                 trust ※コメントアウト

※ファイルの末尾に追加※
local   all             postgres                                peer
local   replication     postgres                                peer
local   all             all                                     md5
host    all             all             192.168.0.0/24          md5

 以上で設定は終了です。

インスタンス起動

 PostgreSQLのインスタンスを起動します。 起動には pg_ctl コマンドを使用します。

-bash-4.2$ pg_ctl start -w
サーバの起動完了を待っています....2017-05-24 00:32:34 JST [8397] LOG:  redirecting log output to logging collector process
2017-05-24 00:32:34 JST [8397] HINT:  Future log output will appear in directory "pg_log".
完了
サーバ起動完了

動作テスト

プロセス起動確認

 PostgreSQLのプロセスが起動していることを確認します。 今回の設定ではマスタサーバプロセス1つとワーカプロセス7つが起動します。

-bash-4.2$ ps -ef | grep postgres
(前略)
                                                ↓マスタサーバプロセス(1つ)
postgres  8397     1  0 00:32 pts/0    00:00:00 /usr/pgsql-9.6/bin/postgres
                                                ↓ワーカプロセス(7つ)
postgres  8398  8397  0 00:32 ?        00:00:00 postgres: logger process
postgres  8400  8397  0 00:32 ?        00:00:00 postgres: checkpointer process
postgres  8401  8397  0 00:32 ?        00:00:00 postgres: writer process
postgres  8402  8397  0 00:32 ?        00:00:00 postgres: wal writer process
postgres  8403  8397  0 00:32 ?        00:00:00 postgres: autovacuum launcher process
postgres  8404  8397  0 00:32 ?        00:00:00 postgres: archiver process
postgres  8405  8397  0 00:32 ?        00:00:00 postgres: stats collector process
(後略)

ログ出力確認

 設定したログファイルに起動ログが出力されていることを確認します。

-bash-4.2$ cd /data/pgdata1/pg_log
-bash-4.2$ ls -l
合計 4
-rw------- 1 postgres postgres 998  5月 24 00:32 postgresql-20170524.log
-bash-4.2$ cat postgresql-20170524.log
2017-05-24 00:30:05 JST [8366] LOG:  database system was shut down at 2017-05-24 00:08:43 JST
2017-05-24 00:30:05 JST [8366] LOG:  MultiXact member wraparound protections are now enabled
2017-05-24 00:30:05 JST [8364] LOG:  database system is ready to accept connections
2017-05-24 00:30:05 JST [8370] LOG:  autovacuum launcher started
2017-05-24 00:30:42 JST [8364] LOG:  received fast shutdown request
2017-05-24 00:30:42 JST [8364] LOG:  aborting any active transactions
2017-05-24 00:30:42 JST [8370] LOG:  autovacuum launcher shutting down
2017-05-24 00:30:42 JST [8367] LOG:  shutting down
2017-05-24 00:30:42 JST [8364] LOG:  database system is shut down
2017-05-24 00:32:34 JST [8399] LOG:  database system was shut down at 2017-05-24 00:30:42 JST
2017-05-24 00:32:34 JST [8399] LOG:  MultiXact member wraparound protections are now enabled
2017-05-24 00:32:34 JST [8403] LOG:  autovacuum launcher started
2017-05-24 00:32:34 JST [8397] LOG:  database system is ready to accept connections

SQL実行確認

 psqlコマンドで、SQLを実行できることを確認します。

-bash-4.2$ psql
psql (9.6.3)
"help" でヘルプを表示します.

postgres=# select now();
              now
-------------------------------
 2017-05-24 00:33:23.776483+09
(1 行)

postgres=# select oid, datname from pg_database;
  oid  |  datname
-------+-----------
 13323 | postgres
     1 | template1
 13322 | template0
(3 行)

postgres=# \q
-bash-4.2$

インスタンス再起動

 PostgreSQLインスタンスを再起動します。 pg_ctl コマンド1つで再起動できますが、ここでは確認のため停止・起動に分けて実行します。

-bash-4.2$ pg_ctl stop -m fast
サーバ停止処理の完了を待っています....完了
サーバは停止しました
-bash-4.2$ pg_ctl start -w
サーバの起動完了を待っています....2017-05-24 00:34:02 JST [8423] LOG:  redirecting log output to logging collector process
2017-05-24 00:34:02 JST [8423] HINT:  Future log output will appear in directory "pg_log".
完了
サーバ起動完了

アーカイブファイル確認

 PostgreSQLのインストール直後はアーカイブファイルは存在しませんが、 上記動作確認を行っている中で自然とWALファイルが循環し、 アーカイブされるため、最後にアーカイブファイルが作成されていることを確認します。

-bash-4.2$ cd /bkup/pgdata1/pg_arch/
-bash-4.2$ ls -l
合計 32768
-rw------- 1 postgres postgres 16777216  5月 24 00:30 000000010000000000000001
-rw------- 1 postgres postgres 16777216  5月 24 00:33 000000010000000000000002