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