6.1 データベースの初期化とサーバの起動

PostgreSQLのサーバは、データベースクラスタと呼ばれるデータベースの集合体を管理します。データベースクラスタを構成するディレクトリには、共有カタログテーブル、postgresデータベース、テンプレートデータベース、ユーザが作成したデータベースなどが格納されます。PostgreSQLサーバは、initdbコマンドでデータベースクラスタの初期化を行った後に、pg_ctlコマンドで起動します。

initdbコマンド

initdbは、データベース管理者がOSのシェルから起動します。起動方法は以下の通りです。

initdb [オプション ...] ディレクトリ
  • ディレクトリは、データベースクラスタを格納するディレクトリのパスです。コマンドを起動しているユーザが所有する空のディレクトリか、新たに作成可能なディレクトリでなければなりません。
  • オプションは、データベースクラスタのオプションを指定できます。主なものを以下に示します。
オプション 省略値 説明
--username= (-U) OSのユーザ名 スーパーユーザの名前
慣習的にpostgresを使用
--encoding= (-E) ロケールに依存 デフォルトの文字コード
--locale= OSのロケール デフォルトのロケール
--version (-V)   initdbのバージョンを表示して終了
--help (-?)   initdbに関するヘルプを表示して終了


例えば、postgresユーザが/var/lib/pgsql/newdbディレクトリにデータベースクラスタを作成する場合は、以下のように指定します。

initdb -E utf8 /var/lib/pgsql/newdb


PostgreSQLをインストールした直後のデータベースクラスタの初期化は、postgresql-setup --initdbを使用してください。また、initdbはpg_ctl initdb経由でも呼び出すことができます。

pg_ctlコマンド

pg_ctlはデータベースクラスタの初期化とデータベースサーバ(postgres)の起動、停止を行います。使用方法は以下の通りです。

pg_ctl サブコマンド [-D ディレクトリ] [サブコマンドのパラメータ]
  • ディレクトリは、データベースクラスタを格納するディレクトリのパスです。省略時は、環境変数PGDATAの値が使用されます。
  • サブコマンドは、pg_ctlの動作を指定します。以下のものが指定できます。
サブコマンド サブコマンドのパラメータ 説明
init[db] -o オプション 新しいデータベースクラスタを作成(initdbコマンドを起動)
start --log= (-l) ログファイル名 新しいサーバをバックグラウンドで起動
stop --mode= (-m) 停止方法 起動しているサーバを停止
restart --mode= (-m) 停止方法 起動しているサーバを再起動(stop + start)
reload   サーバにSIGHUPシグナルを送り、設定ファイルの再読み込みを実行
status   サーバが起動しているかどうかを確認

他のコマンドと同様に、--version または --help を指定してバージョンまたはヘルプの表示もできます。

例えば、postgresユーザが/var/lib/pgsql/newdbディレクトリに作成したデータベースクラスタでサーバを起動する場合は、以下のように指定します。

pg_ctl start -D /var/lib/pgsql/newdb

ログの出力先はデフォルトのファイルになります。

以下は起動しているサーバを停止するpg_ctlコマンドです。

pg_ctl stop -D /var/lib/pgsql/newdb -m smart

停止方法 smart によって、すべてのクライアントからの接続が切断された後にサーバを停止します。

PostgreSQLのデフォルトのサーバに対する pg_ctl start/stop/restart/status は、systemctlコマンドで行うことができます。