PostgreSQLのマルチテナント作成

Oracle DBにはコンテナで1サーバに複数の独立したDBを1サーバに作成することが可能です。
独立したといってもDBのパラメータ設定や再起動を個別に可能になるといった半独立なかんじですが再起動時に他のDBが巻き込まれて再起動されると困るメンテナンス作業は多々あるかと思います。

PostgreSQLのインフラ関連の情報があまり無いと感じたので原稿を書いていこうと思います。
一応、PostgreSQLのインストールまで完成していることが前提となります。

dnf module install postgresql:15/server
上記コマンドなどでPostgreSQLのインストールは完了している状態からはじまります。
RHEL7.2でPostgreSQL15の環境を作成しております。

●実行モジュールパス
/usr/pgsql-15/bin

●DBクラスタ
/var/lib/pgsql/15/data

●クラスタの作成
/usr/pgsql-15/bin/initdb /var/lib/pgsql/15/data/cluster1
/usr/pgsql-15/bin/initdb /var/lib/pgsql/15/data/cluster2
/usr/pgsql-15/bin/initdb /var/lib/pgsql/15/data/cluster3
※3つのクラスタ(DB)を作成します。

●PostgreSQLの環境変数を変更
※cluster1はTCP5432で起動するため不要
cd /var/lib/pgsql/15/data/cluster2
vi postgresql.conf
port=5433
※cluster2はTCP5433で起動させる
cd /var/lib/pgsql/15/data/cluster3
vi postgresql.conf
port=5434
※cluster2はTCP5434で起動させる

●DB起動
/usr/pgsql-15/bin/pg_ctl -D /var/lib/pgsql/15/data/cluster1 -l /var/lib/pgsql/15/data/cluster1/postgres1.log start
/usr/pgsql-15/bin/pg_ctl -D /var/lib/pgsql/15/data/cluster2 -l /var/lib/pgsql/15/data/cluster2/postgres2.log start
/usr/pgsql-15/bin/pg_ctl -D /var/lib/pgsql/15/data/cluster3 -l /var/lib/pgsql/15/data/cluster3/postgres3.log start
※logファイルまでしていないと本環境のPostgreSQLは起動しません

●DB停止
/usr/pgsql-15/bin/pg_ctl -D /var/lib/pgsql/15/data/cluster1 stop
/usr/pgsql-15/bin/pg_ctl -D /var/lib/pgsql/15/data/cluster2 stop
/usr/pgsql-15/bin/pg_ctl -D /var/lib/pgsql/15/data/cluster3 stop

●データベースとテーブルの作成
/usr/pgsql-15/bin/createdb -p 5432 postgresdb1
/usr/pgsql-15/bin/psql -p 5432 postgresdb1
CREATE TABLE dbname(name text);
INSERT INTO dbname VALUES('postgres database1');
exit

/usr/pgsql-15/bin/createdb -p 5433 postgresdb2
/usr/pgsql-15/bin/psql -p 5433 postgresdb2
CREATE TABLE dbname(name text);
INSERT INTO dbname VALUES('postgres database2');
exit

/usr/pgsql-15/bin/createdb -p 5434 postgresdb3
/usr/pgsql-15/bin/psql -p 5434 postgresdb3
CREATE TABLE dbname(name text);
INSERT INTO dbname VALUES('postgres database3');
exit

●外部から接続させる(pgadmin4など)
postgresql.confの修正
vi /var/lib/pgsql/15/data/postgresql.conf
listen_addresses = '*' #追加

pg_hba.confの修正
host all all [許可するネットワーク:192.168.0.0/24など] trust

Cluster1とCluster2をpgAdmin4で接続

簡単ですが、ご参考まで

関連記事

TOP