PostgreSQL のクラスタ(インスタンス)管理は、MySQL の mysql_multi
よりも簡単。
以下、Ubuntu 16.04 で行ったトライアルの結果。
クラスタの作成
$ sudo pg_createcluster --port=54321 9.6 abc $ sudo pg_createcluster --port=54322 9.6 xyz
sudo -u postgres pg_createcluster ...
のようにpostgres
ユーザーで実行してもクラスタは作成される。 しかし、systemctl daemon-reload
の実行ができないため警告が出る。root
ユーザーで実行すべし。
これで、abc
と xyz
というふたつのクラスタが作られる。データディレクトリは、つぎの通り:
/var/lib/postgresql/9.6/abc
/var/lib/postgresql/9.6/xyz
クラスタの名前に
-
記号が使えない点に注意。
クラスタのリスト
$ pg_lsclusters
結果は、つぎのように表示される(一部省略)。
Ver Cluster Port Status Owner Data directory 9.6 abc 54321 online postgres /var/lib/postgresql/9.6/abc 9.6 main 5432 down postgres /var/lib/postgresql/9.6/main 9.6 xyz 54322 online postgres /var/lib/postgresql/9.6/xyz
「Status」列の値が online
であれば「起動中」、down
であれば「停止中」。
クラスタの起動、停止、再起動、リロード
$ sudo systemctl start postgresql@9.6-abc $ sudo systemctl stop postgresql@9.6-abc $ sudo systemctl restart postgresql@9.6-abc $ sudo systemctl reload postgresql@9.6-abc
systemctl
が使えない環境ではsudo pg_ctlcluster 9.6 abc start
コマンド等を使用する。
psql ターミナルによる接続
$ sudo -u postgres psql --port 54321
--host
オプションなしの場合、Unix ソケット/var/run/postgresql/.s.PGSQL.54321
経由での接続となる。
クラスタの削除
$ sudo pg_dropcluster --stop 9.6 abc
クラスタを停止して、削除する。具体的に削除されるのは、以下のディレクトリとファイル:
/etc/postgresql/9.6/abc
/var/lib/postgresql/9.6/abc
/var/log/postgresql/postgresql-9.6-abc.log*