PostgreSQL 設定(postgresql.conf、SET、SHOW、ALTER SYSTEM、pg_hba.conf)

postgresql.conf

https://www.postgresql.jp/document/11/html/config-setting.html
https://www.postgresql.jp/document/11/html/runtime-config-logging.html

基本
  • 大文字・小文字の区別はない。
  • デフォルトの単位はパラメータの種類によって異なる。
  • param1 = val1 のような形式で1行に1つだけ指定する。
  • メモリの単位は B (バイト) 、kB (キロバイト)、MB (メガバイト)、 GB (ギガバイト), TB (テラバイト)
  • 時間の単位は ms (ミリ秒)、s (秒)、min (分)、h (時間)、d (日数)
設定反映のタイミング
  • 不可(internal)
  • 起動(postmaster)
  • 再読み込み(sighup)
  • スーパーユーザーのみ(suset)
  • いつでも(user)
再起動しないと変更が反映されないパラメータ(postmaster)
  • listen_addresses
    • TCP/IPネットワーク経由での接続を受け付ける時に設定する。ネットワークインタフェースの値。
    • デフォルト値はlocalhostである。
  • port
    • デフォルト値は5432である。
  • max_connections 接続数の最大値 デフォルト値は100
  • logging_collector ログをファイルに書き出すかどうか
一般ユーザのSETコマンドで変更可能なパラメータ(user)
  • search_path
    • スキーマを検索する順番を指定するのに使われるパラメータ。
    • デフォルトは "$user", public
  • default_transaction_isolation
    • 新しいトランザクションのデフォルトの分離レベルを設定する。
    • read unccommitted, read committed(デフォルト), repeatable read, serializable
    • SETコマンドでそのセッションの設定値を変更できる。
  • client_encoding
    • クライアントの符号化方式(文字セット)を設定する。
ログ関連
  • log_destination(sighup)
    • ログの出力方法を指定する。
    • stderr…サーバログを平文で標準エラー出力に出力(デフォルト)
    • csvlog…サーバログをCSV形式で標準エラー出力に出力(logging_collectorをonに設定しなければならない)
    • syslog…サーバログをsyslogに出力
  • logging_collector(postmaster)
    • ログをファイルに書き出すかどうかを設定する。
    • on/off(デフォルト)
  • log_directory(sighup)
    • ログファイルを格納するディレクトリを設定する。
    • デフォルト log($PGDATA/log)
  • log_filename(sighup)
    • サーバログを書き込むファイルのファイル名を設定する。
    • logging_collector が on で、サーバーログをファイルに書き出す時だけ有効。
    • デフォルト postgresql-%Y-%m-%d_%H%M%S.log
  • log_min_messages(suset)
    • サーバログに書き込むログのレベルを設定する。
    • INFO…ユーザから出力を要求された情報
    • NOTICE…ユーザにとって役立つ情報
    • WARNING…不適切なコマンド使用等に対するユーザへの警告(デフォルト)
    • ERROR…特定のコマンドを中断させたエラー
    • LOG…データベース管理者にとって役立つ、パフォーマンスや内部の処理に関する情報
    • FATAL…特定のセッションを中断させたエラー
    • PANIC…全てのセッションを中断させた致命的なエラー
  • log_statement
    • サーバログに書き込むSQL文の種類を設定する。
    • none(off)デフォルト
    • ddl CREATE、ALTER、およびDROP文といった、データ定義文を全てログに記録。
    • mod 全てのddl文に加え、INSERT、UPDATE、DELETE、TRUNCATE、およびCOPY FROMといった、データ変更文をログに記録。
    • all 全てのメッセージ。
  • log_connections
    • クライアント認証の成功終了などのサーバへの接続試行がログに残るかを設定する。
    • on/off offがデフォルト
  • log_min_duration_statement
    • 整数値 指定したミリ秒以上を要したSQL文と実行時間を出力する。
    • -1(デフォルト)無効

SET

https://www.postgresql.jp/document/11/html/sql-set.html

postgresql.conf の一部設定を psql で接続後、SET文を使って変更する事ができる。

  • SET [option] variable=value;
  • SET [option] variable TO value;
  • SET TIME ZONE ゾーン記述
  • option
    • SESSION 接続中のクライアントのセッションでのみ変更が有効
    • LOCAL 実行中のトランザクション内でのみ変更が有効

SET による変更自体は即座に有効になる。
SET で変更した内容をリセットするには RESET を使う。
SET で変更した内容を確認するには SHOW を使う。
SET でデフォルト値に再設定するには DEFAULT を使う。

トランザクション内でSETコマンドを実行した場合、トランザクションがコミットされると変更したパラメータ値はセッション内で保存される。
また、トランザクションロールバックされると、変更したパラメータ値はトランザクション開始時の値に戻る。

SHOW

実行時パラメータの値を表示する。

  • SHOW {パラメータ名 | ALL};

ALTER SYSTEM

https://www.postgresql.jp/docs/11/sql-altersystem.html

ALTER SYSTEMは指定されたパラメータ設定をpostgresql.auto.confファイルに書き出し、これがpostgresql.confに加えて読み込まれる。

  • ALTER SYSTEM SET configuration_parameter { TO | = } { value | 'value' | DEFAULT }

バージョン9.4で新機能として追加された。

pg_hba.conf

https://www.postgresql.jp/document/11/html/auth-pg-hba-conf.html

host-based authentication の略。

  1. 接続元ホスト
    • local このレコードはUnixドメインソケットを使用する接続に対応します。
    • host このレコードは、TCP/IPを使用した接続に対応します。
  2. 接続先データベース
  3. ユーザ
  4. IPアドレス
  5. 認証方法
    • trust 接続を無条件で許可します。
    • reject 接続を無条件に拒否します。
    • peer ユーザ名が要求されたデータベースユーザ名と一致するか検査します。(local)
    • ident ユーザ名が要求されたデータベースユーザ名と一致するか検査します。(host)

pg_hba.conf を変更した場合は「service postgresql reload」で良い。
最初に見つかった行の認証方式を利用する。
接続先のデータベース名、接続に使用するユーザ名は、カンマ区切りで表記することによって複数指定できる。
設定値に空白を含む場合、設定値をダブルクォートで囲む。