2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

PostgreSQL 入門Advent Calendar 2023

Day 9

【PostgreSQL】pg_ctlについて

Last updated at Posted at 2023-12-08

pg_ctlとは

PostgreSQLの起動、停止、状態確認などに使用する
実行するユーザは、PostgreSQLの管理ユーザ(一般的にはpostgresユーザー)

構文

pg_ctl サブコマンド [オプション]

サブコマンドについて

initdb

initdbとは

initdbを呼び出して、指定したディレクトリにデータベースクラスタを作成する。

構文

pg_ctl init[db] [オプション]

オプション

オプション 説明
-D, -pgdata=データベースクラスタ データベースクラスタを作成するディレクトリを指定する。未指定の場合は、環境変数PGDATAが使われる
-o オプション 内部的に呼び出すinitdbに渡すオプションを指定する

使用例

/var/lib/pgsql/testにデータベースクラスタを作成する
pg_ctl -D /var/lib/pgsql/test initdb

UTF8のエンコーディング、ロケールなしで、/pgdataにデータベースクラスタを作成する
pg_ctl initdb -D /pgdata -o "--encoding=UTF8 --no-locale"

start

startとは

PostgreSQLをバックグラウンドで起動する。
時間内に起動が完了しない場合、pg_ctl startは失敗するが、失敗するのはpg_ctl startであって、PostgreSQLの起動自体は引き続き行われる。起動するPostgreSQLは、指定したデータベースクラスタを利用する。同じデータベースクラスタを使うPostgreSQLを複数起動することはできない。

構文

pg_ctl start [オプション]

オプション

オプション 説明
-D, -pgdata=データベースクラスタ データベースクラスタを作成するディレクトリを指定する。未指定の場合は、環境変数PGDATAが使われる
-t 最大待ち時間 起動が完了するまでの最大待ち時間を秒単位で指定する(デフォルトは60秒)

使用例

/pgdataのデータベースクラスタ上でPostgreSQLを起動し、起動が完了するまで最大2分間(120秒間)待っている。
pg_ctl start -D /pgdata -t 120

stop

stopとは

PostgreSQLを停止(シャットダウン)する。

構文

pg_ctl stop [オプション]

オプション

オプション 説明
-D, -pgdata=データベースクラスタ データベースクラスタを作成するディレクトリを指定する。未指定の場合は、環境変数PGDATAが使われる
-W 停止が完了するまで待たない
-t 最大待ち時間 停止が完了するまでの最大待ち時間を秒単位で指定する(デフォルトは60秒)
-m シャットダウンモード 停止方法を指定する
s[mart]:スマートシャットダウン
クライアントからの接続がすべて切断されるまで待ってから停止する接続が残っている限り、停止は完了しないため注意すること。
f[ast]:高速シャットダウン
クライアントからの接続をすべて強制的に切断してから停止する。デフォルトのシャットダウンモード。実行中のトランザクションはすべてロールバックされる。
i[mmediate]:即時シャットダウン
クリーンアップ処理を行わずに緊急停止する(PostgreSQLがクラッシュしたのと同じ状態になる)次回の起動時には復旧処理が必要になる。このモードは、緊急時(たとえば、高負荷のため他のモードではすぐに停止できないとき)またはPostgreSQLのクラッシュを模擬する場合のみに使うこと。

使用例

/pgdataのデータベースクラスタ上で稼働しているPostgreSQLをスマートシャットダウンで停止する
pg_ctl stop -D /pgdata -m smart

restart

restareとは

PostgreSQLを再起動する
稼働中のPostgreSQLを停止し、再び起動する。
停止しているデータベースクラスタを指定すると起動だけをおこなう。
restartは、停止が完了するまで必ず待ちます。最大待ち時間内に停止が完了しない場合、restartは失敗する。ただし、失敗するのは

構文

pg_ctl restart [オプション]

オプション

オプション 説明
-D, -pgdata=データベースクラスタ 再起動するPostgreSQLが使っているデータベースクラスタを指定する。未指定の場合は、環境変数PGDATAが使われる
-m シャットダウンモード 停止方法を指定する
-t 最大待ち時間 起動/停止が完了するまでの最大待ち時間を秒単位で指定する(デフォルトは60秒)

使用例

pg_ctl restart -D /pgdata -m f

reload

reloadとは

PostgreSQLに設定ファイルを再読込させる。
再読み込みさせる設定ファイルは、postgresql.confとpg_hba.confの2つ。
設定ファイルの変更を稼働中のPostgreSQLに反映させるには、reloadを実行する必要がある。
ただし、reloadでは設定変更を反映出来ないパラメータがある。

構文

pg_ctl reload [オプション]

オプション

オプション 説明
-D, -pgdata=データベースクラスタ 設定ファイルを再読み込みさせるPostgreSQLが使っているデータベースクラスタを指定する。未指定の場合は、環境変数PGDATAが使われる

使用例

pg_ctl reload -D /pgdata

status

statusとは

PostgreSQLが起動しているかどうかを確かめる。

構文

pg_ctl status [オプション]

オプション

オプション 説明
-D, -pgdata=データベースクラスタ 起動の確認対象となるPostgreSQLが使っているデータベースクラスタを指定する。未指定の場合は、環境変数PGDATAが使われる

使用例

pg_ctl status -D /pgdata

kill

killとは

プロセスにシグナルを送信する
送信できるシグナルは、HUP、INT、QUIT、ABRT、TERM、USR1、USR2
killコマンドをサポートしていないWindowsなどの環境でシグナルを送信することができる。

シグナルを送信したときの効果

シグナル 効果
TERM PostgreSQLをスマートシャットダウンで停止する。pg_ctl stop -m smartと同じ
INT PostgreSQLを高速シャットダウンで停止する。pg_ctl stop -m fastと同じ
QUIT PostgreSQLを即時シャットダウンで停止する。pg_ctl stop -m immediateと同じ
HUP PostgreSQLを設定ファイルを再読み込みさせる。pg_ctl stop -m reloadと同じ

構文

pg_ctl kill シグナル名 プロセスID

使用例

pg_ctl kill TERM プロセスID
2
1
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
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?