LoginSignup
0
2

More than 1 year has passed since last update.

【Ubuntu+PostgreSQL】postgres以外のユーザでクラスタを作成して起動する

Last updated at Posted at 2022-05-29

この記事について

Ubuntu環境でPostgreSQLのクラスタ(≒インスタンス)作成時にはまった箇所がありますので、対処法を記録に残したいと思います。
クラスタとは、データベースを区分けする単位のことで、今回、複数サービスを1サーバで起動する運用を考えているため、PostgreSQLをサービスごとにクラスタ分けしてデータベースを使用しようと考えました。

対象読者

  • PostgreSQLでクラスタ分けしてデータベース管理を行いたい方
  • サーバOSにUbuntu、データベースにPostgreSQLを使用している方

環境

$ cat /etc/os-release
NAME="Ubuntu"
VERSION="20.04.1 LTS (Focal Fossa)"
PRETTY_NAME="Ubuntu 20.04.1 LTS"
VERSION_ID="20.04"

$ psql --version
psql (PostgreSQL) 12.11 (Ubuntu 12.11-0ubuntu0.20.04.1)

インストール

Ubuntu 20.04にPostgreSQLをインストールする方法 [クイックスタート]を参考にUbuntuにPostgreSQLをインストールします。

$ sudo apt install postgresql postgresql-contrib

クラスタの作成

Ubuntuでは、 initdb コマンドが使用できないため、資料編:Ubuntu特有のPostgreSQL用コマンドを参考に、pg_createcluster コマンドでPostgreSQLのクラスタを作成します。
-p はクラスタを起動するポートです(デフォルトは5432で、複数クラスタを作成する際は5432、5433、5434...の順で割り当てられる)。

sudo pg_createcluster 12 sample_cluster -p 6000 -u クラスタの管理者となるユーザ -g クラスタの管理者となるユーザの主グループ

クラスタ起動

$ sudo systemctl start postgresql@12-sample_cluster

以下コマンドで6000ポート上でクラスタが起動している(online)ことが確認できます。

$ pg_lsclusters
Ver Cluster           Port  Status Owner                   Data directory                           Log file
12  sample_cluster 6000 online クラスタの管理者となるユーザ /var/lib/postgresql/12/sample_cluster /var/log/postgresql/postgresql-12-sample_cluster.log

起動したクラスタにログイン

ここではまったのですが、上記で作成したクラスタ内へログインするには、psqlコマンドに -h /tmp オプションをつける必要があります。
資料編:Ubuntu特有のPostgreSQL用コマンドにも記載があったのですが、postgresユーザ以外のユーザをクラスタの管理者に指定した場合は、 /tmp ディレクトリをhostnameとして指定する必要があるようです。

ローカル接続用にpostmaster(1) サーバがUnixソケットを格納するディレクトリを明示的に設定します。デフォルトは、postgres ユーザが所有するクラスタの場合は /var/run/postgresql/、それ以外のユーザが所有するデータベースの場合は /tmp です。

$ sudo -i -u クラスタの管理者となっているユーザ
$ psql -h /tmp -p 6000 -d 使用するデータベース名 -f 実行したいSQLファイルのパス

「クラスタの管理者となっているユーザ」でpsqlコマンド実行後にPostgreSQLにログインしてクラスタに入れていれば完了です。

参考

Ubuntu 20.04にPostgreSQLをインストールする方法 [クイックスタート]
資料編:Ubuntu特有のPostgreSQL用コマンド

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2