6 サーバアプリケーション(解説)
この章では、PostgreSQLのサーバアプリケーションと関連するコマンドついて解説します。
6.1 データベースの初期化とサーバの起動
6.2 設定ファイルとパラメータ
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)の起動、停止を行います。使用方法は以下の通りです。なお、PostgreSQLのデフォルトのデーベースサーバは、/usr/lib/systemd/system/postgresql.service としてOSに登録されています。通常はこれを起動するため、後述するsystemctlコマンドを使用します。
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 によって、すべてのクライアントからの接続が切断された後にサーバを停止します。
systemctlコマンド
systemctlはデータベースサーバ(postgres)の起動、停止を行います。使用方法は以下の通りです。
systemctl サブコマンド サービス名
- サービス名は、PostgreSQLサービスの名前です。通常は、postgresqlで登録されています。
- サブコマンドは、systemctlの動作を指定します。以下のものが指定できます。
サブコマンド | 説明 |
---|---|
start | サーバをバックグラウンドで起動 |
stop | 起動しているサーバを停止 |
restart | 起動しているサーバを再起動(stop + start) |
reload | サーバにSIGHUPシグナルを送り、設定ファイルの再読み込みを実行 |
status | サーバが起動しているかどうかを確認 |
enable | サーバの自動起動を有効 |
disable | サーバの自動起動を無効 |
syetemctl status以外のサブコマンドは、OSのroot権限で実行してください。