PgBouncer コマンドの使用法
概要
pgbouncer [-d][-v][-u user] <pgbouncer.ini>
pgbouncer -V|-h
Windows では、次のオプションが利用可能です:
pgbouncer.exe [-v][-u user] <pgbouncer.ini>
pgbouncer.exe -V|-h
Windows サービスの設定に追加で使用できるオプション:
pgbouncer.exe --regservice <pgbouncer.ini>
pgbouncer.exe --unregservice <pgbouncer.ini>
説明
pgbouncer は PostgreSQL のコネクションプーラーです。任意の対象アプリケーションは、pgbouncer にあたかも PostgreSQL サーバーであるかのように接続できます。このとき、pgbouncer は実際のサーバーへの接続を作成するか、既存の接続を再利用します。
pgbouncer の目的は、PostgreSQL への新しい接続を開く際のパフォーマンスへの影響を低減することです。
接続プーリングのトランザクションセマンティクスを損なわないようにするため、pgbouncer は接続をローテーションする際に複数のプーリング方式をサポートしています。
- セッションプーリング
-
最も丁寧な方法です。クライアントが接続すると、クライアントが接続を維持している間はそのクライアントにサーバー接続が割り当てられます。クライアントが切断すると、そのサーバー接続はプールに戻されます。これがデフォルトの方法です。
- トランザクションプーリング
-
クライアントにサーバー接続が割り当てられるのは、トランザクション中のみです。 PgBouncer がトランザクションの終了を検知すると、サーバー接続はプールに戻されます。
- ステートメントプーリング
-
最も積極的な方法です。クエリの実行が完了した直後に、サーバー接続はプールに戻されます。複数文のトランザクションは破損するため、このモードでは許可されません。
pgbouncer の管理インターフェースは、特別な「仮想」データベース pgbouncer に接続した際に利用可能ないくつかの新しい SHOW コマンドで構成されています。
バージョン 1.26.0 以降、PgBouncer はログイン時に pgbouncer.version、pgbouncer.pool_mode、pgbouncer.max_prepared_statements の ParameterStatus 値をクライアントに送信します。ドライバーはこれらの値を使用して PgBouncer を検出し、動作を適応させることができます。オプションの login_notify_message
設定は、ログイン成功後にウェルカム NOTICE を送信します。
クイックスタート
基本的な設定と使用方法は以下の通りです。
-
pgbouncer.ini ファイルを作成します。詳細は pgbouncer(5) を参照してください。簡単な例:
[databases] template1 = host=localhost port=5432 dbname=template1 [pgbouncer] listen_port = 6432 listen_addr = localhost auth_type = md5 auth_file = userlist.txt logfile = pgbouncer.log pidfile = pgbouncer.pid admin_users = someuser -
接続を許可するユーザーを記載した
userlist.txtファイルを作成します:"someuser" "same_password_as_in_server" -
pgbouncer を起動します:
$ pgbouncer -d pgbouncer.ini -
アプリケーション(または psql クライアント)が PostgreSQL サーバーに直接接続するのではなく、 pgbouncer に接続するようにしてください。
$ psql -p 6432 -U someuser template1 -
pgbouncer を管理するには、特別な管理データベース pgbouncer に接続し、
SHOW HELP;を実行して開始します:$ psql -p 6432 -U someuser pgbouncer pgbouncer=# SHOW HELP; NOTICE: Console usage DETAIL: SHOW [HELP|CONFIG|DATABASES|POOLS|CLIENTS|SERVERS|SOCKETS|LISTS|VERSION|...] SET key = arg RELOAD PAUSE RESUME SHUTDOWN [...] -
pgbouncer.ini ファイルに変更を加えた場合、次のように再読み込みできます:
pgbouncer=# RELOAD;
コマンドラインスイッチ
-d、--daemon- バックグラウンドで実行します。これを行わない場合、プロセスはフォアグラウンドで実行されます。
デーモンモードでは、
pidfileに加えてlogfileまたはsyslogを設定する必要があります。バックグラウンドに移行後は、stderr へのログ出力は行われません。注意:Windows では動作しません。pgbouncer は Windows 上でサービスとして実行する必要があります。
-uUSERNAME、--user=USERNAME- 起動時に指定されたユーザーに切り替えます。
-v、--verbose- 出力の詳細度を増加します。複数回使用できます。
-q、--quiet- 静黙モード:stderr へのログ出力を抑制します。ログの詳細度には影響しません。stderr が使用されなくなるだけです。init.d スクリプトでの利用を想定しています。
-V、--version- バージョンを表示。
-h、--help- 短いヘルプを表示します。
--regservice- Win32: PgBouncer を Windows サービスとして実行するように登録します。service_name 設定パラメーターの値が、登録時の名前として使用されます。
--unregservice- Win32: Windows サービスの登録を解除します。
管理コンソール
管理コンソールは、データベース pgbouncer に通常通り接続することで利用できます。
$ psql -p 6432 pgbouncer
設定パラメーター admin_users または stats_users にリストされたユーザーのみが、管理コンソールにログインできます(auth_type=any の場合は例外で、任意のユーザーが stats_user としてログインできます)。
さらに、ユーザー名 pgbouncer は、ログインが Unix ソケット経由で行われ、クライアントの Unix ユーザー UID が実行中のプロセスと同一の場合、パスワードなしでログインが許可されます。
管理コンソールは現在、シンプルなクエリプロトコルのみをサポートしています。 すべてのコマンドに拡張クエリプロトコルを使用するドライバは、これに対応していません。
SHOW コマンド
SHOW コマンドは情報を出力します。各コマンドの説明は以下の通りです。
SHOW STATS
統計情報を表示します。このコマンドおよび関連コマンドでは、合計値はプロセス起動以降の値であり、平均値は stats_period ごとに更新されます。
- database
- 統計情報はデータベースごとに表示されます。
- total_xact_count
- pgbouncer がプールしている SQL トランザクションの合計数。
- total_query_count
- pgbouncer がプールしている SQL コマンドの合計数。
- total_server_assignment_count
- サーバーがクライアントに割り当てられた合計回数
- total_received
- pgbouncer が受信したネットワークトラフィックの合計バイト数。
- total_sent
- pgbouncer が送信したネットワークトラフィックの合計バイト数。
- total_xact_time
- pgbouncer が PostgreSQL に接続してトランザクション(トランザクション内でのアイドル状態またはクエリの実行のいずれか)に費やした合計マイクロ秒数。
- total_query_time
- pgbouncer が PostgreSQL にアクティブに接続してクエリを実行している間に費やした合計マイクロ秒数。
- total_wait_time
- クライアントがサーバー接続を待つ時間(マイクロ秒単位)。クライアント接続がバックエンド接続に割り当てられたときに更新されます。
- total_client_parse_count
- クライアントが作成したプリペアドステートメントの合計数。名前付きプリペアドステートメント追跡モードでのみ適用されます。
max_prepared_statementsを参照してください。 - total_server_parse_count
- サーバー上で pgbouncer が作成したプリペアドステートメントの合計数。名前付きプリペアドステートメント追跡モードでのみ適用されます。
max_prepared_statementsを参照してください。 - total_bind_count
- クライアントが実行準備を済ませ、pgbouncer が PostgreSQL に転送したプリペアドステートメントの合計数。名前付きプリペアドステートメント追跡モードでのみ適用されます。
max_prepared_statementsを参照してください。 - total_client_login_count
- 成功したクライアントログインの合計数。
- avg_xact_count
- 直近の統計期間における 1 秒あたりの平均トランザクション数。
- avg_query_count
- 直近の統計期間における 1 秒あたりの平均クエリ数。
- avg_server_assignment_count
- 直近の統計期間における、サーバーがクライアントに割り当てられた 1 秒あたりの平均回数。
- avg_recv
- クライアントからの平均受信バイト数(1 秒あたり)。
- avg_sent
- クライアントへの平均送信バイト数(1 秒あたり)。
- avg_xact_time
- 平均トランザクション実行時間(マイクロ秒単位)。
- avg_query_time
- 平均クエリ実行時間(マイクロ秒単位)。
- avg_wait_time
- クライアントがサーバーを待つ時間(現在の
stats_periodの間にバックエンドに割り当てられたクライアントの待機時間の平均)をマイクロ秒単位で示します。 - avg_client_parse_count
- クライアントが作成したプリペアドステートメントの 1 秒あたりの平均数。名前付きプリペアドステートメント追跡モードでのみ適用されます。
max_prepared_statementsを参照してください。 - avg_server_parse_count
- サーバー上で pgbouncer が作成したプリペアドステートメントの 1 秒あたりの平均数。名前付きプリペアドステートメント追跡モードでのみ適用されます。
max_prepared_statementsを参照してください。 - avg_bind_count
- クライアントが実行準備を済ませ、pgbouncer が PostgreSQL に転送したプリペアドステートメントの 1 秒あたりの平均数。名前付きプリペアドステートメント追跡モードでのみ適用されます。
max_prepared_statementsを参照してください。 - avg_client_login_count
- 1 秒あたりの成功したクライアントログインの平均数。
SHOW STATS_TOTALS
SHOW STATS の total_ フィールドに対応する、データベースごとの累積統計を表示します。出力の列名からは total_ プレフィックスが省かれます。たとえば、total_query_count は query_count という列名になります。
SHOW STATS_AVERAGES
SHOW STATS のうち、平均値(avg_)を示すサブセット。
SHOW TOTALS
SHOW STATS と同様ですが、すべてのデータベースにわたって集計されています。
SHOW SERVERS
- type
- S、サーバー用。
- user
- pgbouncer がサーバーへの接続に使用するユーザー名。
- database
- データベース名。
- replication
- サーバー接続がレプリケーションを使用するかどうか。none、logical、physical のいずれかになります。
- state
- PgBouncer サーバー接続の状態。以下のいずれか:active、 idle、used、tested、new、active_cancel、 being_canceled。
- addr
- PostgreSQL サーバーの IP アドレス。
- port
- PostgreSQL サーバーのポート。
- local_addr
- ローカルマシン上の接続開始アドレス。
- local_port
- ローカルマシン上の接続開始ポート。
- connect_time
- 接続が確立された時。
- request_time
- 最終リクエストが発行された時刻。
- wait
- サーバー接続には使用されません。
- wait_us
- サーバー接続には使用されません。
- close_needed
- 設定ファイルの再読み込みや DNS 更新により接続情報が変更された場合、または RECONNECT が発行された場合に、接続ができるだけ早く閉じられるときは 1 になります。
- ptr
- この接続に対する内部オブジェクトのアドレス。
- link
- このサーバーが紐付けられているクライアント接続のアドレス。
- remote_pid
- サーバーのバックエンドプロセスの PID。Unix ソケット経由で接続された場合、OS がプロセスID情報を取得できる場合はその OS の PID を使用する。そうでない場合は、サーバーが送信したキャンセルパケットから抽出する。PostgreSQL がサーバーの場合、これは PID であるべきだが、別の PgBouncer がサーバーの場合、ランダムな数値となる。
- tls
- TLS 接続情報の文字列、TLS を使用しない場合は空。
- application_name
- クライアント接続で設定された
application_nameを含む文字列、 またはその設定が行われていない場合、または関連する接続が存在しない場合に空。 - prepared_statements
- サーバー上で準備されたプリペアドステートメントの数。この数は
max_prepared_statements設定によって制限されます。 - id
- サーバーの固有ID。
SHOW CLIENTS
- type
- C、クライアント用。
- user
- クライアント接続ユーザー。
- database
- データベース名。
- replication
- クライアント接続がレプリケーションを使用するかどうか。none、logical、physical のいずれか。
- state
- クライアント接続の状態。以下のいずれか:active(サーバー接続と紐づけられたクライアント接続)、idle(処理待ちのクエリのないクライアント接続)、waiting、active_cancel_req、または waiting_cancel_req。
- addr
- クライアントの IP アドレス。
- port
- クライアントのソースポート。
- local_addr
- ローカルマシン上の接続終端アドレス。
- local_port
- ローカルマシン上の接続終端ポート。
- connect_time
- 接続時刻のタイムスタンプ。
- request_time
- 最後のクライアント要求のタイムスタンプ。
- wait
- 現在の待機時間(秒単位)。
- wait_us
- 現在の待機時間のマイクロ秒部分。
- close_needed
- クライアントには使用されません
- ptr
- この接続に対する内部オブジェクトのアドレス。
- link
- クライアントが紐付けられているサーバー接続のアドレス。
- remote_pid
- クライアントが Unix ソケット経由で接続している場合、OS がプロセス ID を取得できる場合に限り、プロセス ID を表示します。
- tls
- TLS 接続情報の文字列、TLS を使用しない場合は空。
- application_name
- クライアントがこの接続で設定した
application_nameを含む文字列。設定されていない場合は空。 - prepared_statements
- クライアントが準備したプリペアドステートメントの数
- id
- クライアントの固有ID。
SHOW POOLS
各 (database, user) の組に対して新しいプールエントリが作成されます。
- database
- データベース名。
- user
- ユーザー名。
- cl_active
- サーバー接続に紐付けられているか、処理待ちのクエリがないアイドル状態にあるクライアント接続。
- cl_waiting
- クエリを送信したが、まだサーバー接続を取得していないクライアント接続。
- cl_active_cancel_req
- クエリのキャンセルをサーバーに転送済みで、サーバーの応答を待機しているクライアント接続。
- cl_waiting_cancel_req
- まだクエリのキャンセルをサーバーに転送していないクライアント接続。
- sv_active
- クライアントに紐付けられているサーバー接続。
- sv_active_cancel
- 現在、キャンセル要求を転送中のサーバー接続。
- sv_being_canceled
- 通常であればアイドル状態になれるはずのサーバーですが、このサーバー上のクエリをキャンセルするために送信された進行中のキャンセル要求がすべて完了するまで、アイドル状態への移行を待機しています。
- sv_idle
- クライアントクエリに即座に利用可能な、使用されていないサーバー接続。
- sv_used
server_check_delayを超えてアイドル状態が続いているサーバー接続。再び使用するには、事前にserver_check_queryを実行する必要があります。- sv_tested
- 現在
server_reset_queryまたはserver_check_queryを実行中のサーバー接続。 - sv_login
- 現在ログイン処理中のサーバー接続。
- maxwait
- キュー内の最初(最も古い)クライアントが待機した時間(秒単位)。 この値が増加し始めた場合は、現在のサーバーのプールがリクエストを十分に迅速に処理できていないことを示します。 原因は、サーバーの過負荷、または pool_size 設定が小さすぎることのいずれかの可能性があります。
- maxwait_us
- 最大待機時間のマイクロ秒部分。
- pool_mode
- 使用中のプーリングモード。
- load_balance_hosts
- プールのホストにコンマ区切りのリストが含まれている場合、使用される load_balance_hosts。
SHOW PEER_POOLS
各設定されたピアごとに、新しい peer_pool エントリが作成されます。
- peer_id
- 設定されたピアエントリの ID。
- cl_active_cancel_req
- クエリのキャンセルをサーバーに転送済みで、サーバーの応答を待機しているクライアント接続。
- cl_waiting_cancel_req
- まだクエリのキャンセルをサーバーに転送していないクライアント接続。
- sv_active_cancel
- 現在、キャンセル要求を転送中のサーバー接続。
- sv_login
- 現在ログイン処理中のサーバー接続。
SHOW LISTS
次の内部リストとそれぞれの要素数を、リストごとに 1 行ずつ、list 列と items 列に表示します:
- databases
- データベース数。
- users
- ユーザー数。
- peers
- 設定されたピアの数。
- pools
- プール数。
- peer_pools
- ピアプール数。
- free_clients
- クライアントの空き数。切断されたクライアントであり、将来のクライアントの再利用のために割り当てられたメモリを保持しているため、メモリの再割り当てを回避できる。
- used_clients
- 使用中のクライアント数。
- login_clients
- login 状態のクライアント数。
- free_servers
- 空きサーバーの数。これらのサーバーは切断されていますが、PgBouncer は将来のサーバー用に再利用できるよう、それらに割り当てられたメモリを保持しています。
- used_servers
- 使用中のサーバー数。
- dns_names
- キャッシュ内の DNS 名の数。
- dns_zones
- キャッシュ内の DNS ゾーン数。
- dns_queries
- 進行中の DNS クエリの数。
- dns_pending
- 使用されません
SHOW USERS
- name
- ユーザー名
- pool_size
- ユーザーが上書きした pool_size。設定されていない場合は空文字列。
- reserve_pool_size
- ユーザーの上書き設定による reserve_pool_size。設定されていない場合は空文字列。
- pool_mode
- ユーザーが上書きした pool_mode の値、または設定されていない場合は NULL。
- max_user_connections
- ユーザーの max_user_connections 設定。この特定のユーザーに対してこの設定が指定されていない場合、デフォルト値が表示されます。
- current_connections
- このユーザーがすべてのサーバーに対して開いているサーバー接続の現在の数。
- max_user_client_connections
- ユーザーの max_user_client_connections 設定。この特定のユーザーに対してこの設定が指定されていない場合、デフォルト値が表示されます。
- current_client_connections
- このユーザーが PgBouncer に対して開いているクライアント接続の現在の数。
SHOW DATABASES
- name
- 設定されたデータベースエントリの名前。
- host
- PgBouncer が接続するホスト。
- port
- PgBouncer が接続するポート。
- database
- PgBouncer が接続する実際のデータベース名。
- force_user
- ユーザーが接続文字列に含まれている場合、クライアントユーザーに関係なく、PgBouncer と PostgreSQL の接続は指定されたユーザーに強制されます。
- pool_size
- サーバー接続の最大数。
- min_pool_size
- サーバー接続の最小数。
- reserve_pool_size
- このデータベースに対する追加接続数の最大値。
- server_lifetime
- このデータベースのサーバー接続の最大有効期間
- pool_mode
- データベースの上書き pool_mode、またはデフォルトが使用される場合の NULL。
- load_balance_hosts
- データベースの load_balance_hosts は、ホストにコンマ区切りのリストが含まれている場合に使用されます。
- max_connections
- max_db_connections によって(グローバルまたはデータベースごとに)設定された、このデータベースに対して許可されるサーバー接続数の最大値。
- current_connections
- このデータベースの現在のサーバー接続数。
- max_client_connections
- このデータベースで許可されるクライアント接続の最大数。グローバルまたはデータベースごとの max_db_client_connections で設定された値。
- current_client_connections
- このデータベースの現在のクライアント接続数。
- paused
- このデータベースが現在一時停止されている場合は 1、それ以外の場合は 0。
- disabled
- このデータベースが現在無効になっている場合は 1、それ以外の場合は 0。
SHOW PEERS
- peer_id
- 設定されたピアエントリの ID。
- host
- PgBouncer が接続するホスト。
- port
- PgBouncer が接続するポート。
- pool_size
- このピアへのサーバー接続の最大数
SHOW SOCKETS, SHOW ACTIVE_SOCKETS
ソケット、またはアクティブなソケットのみに関する低レベルの情報を表示します。 これは SHOW CLIENTS および SHOW SERVERS で表示される情報に加えて、他のより低レベルな情報も含みます。
SHOW CONFIG
現在の設定値を1行に1つずつ表示し、以下の列を用います。
- key
- 設定変数名
- value
- 設定値
- default
- 設定のデフォルト値
- changeable
- yes または no で、変数を実行中に変更できるかどうかを示します。 no の場合、変数は起動時のみ変更可能です。実行中に変更するには SET を使用します。
SHOW MEM
さまざまな内部メモリ割り当ての現在のサイズに関する低レベルの情報を表示します。表示される情報は変更される可能性があります。
SHOW DNS_HOSTS
DNS キャッシュ内のホスト名を表示します。
- hostname
- ホスト名。
- ttl
- 次回の照会までの秒数。
- addrs
- コンマ区切りのアドレスリスト。
SHOW DNS_ZONES
キャッシュ内の DNS ゾーンを表示します。
- zonename
- ゾーン名。
- serial
- 現在のシリアル。
- count
- このゾーンに属するホスト名。
SHOW VERSION
PgBouncer のバージョン文字列を表示します。
SHOW STATE
PgBouncer の状態設定を表示します。現在の状態は active と paused です。
プロセス制御コマンド
PAUSE [db]
PgBouncer はすべてのサーバーとの接続を切断しようとします。各サーバー接続の切断は、サーバープールのプーリングモードに従って、その接続が解放されるのを待機します(トランザクションプーリングモードではトランザクションの完了まで、ステートメントモードではステートメントの完了まで、セッションプーリングモードではクライアントの切断まで待機します)。すべてのサーバー接続が切断されるまで、このコマンドは戻りません。データベースの再起動時に使用します。
データベース名が指定された場合、そのデータベースのみが一時停止されます。
一時停止されたデータベースへの新しいクライアント接続は、RESUME が呼び出されるまで待機します。
DISABLE db
指定されたデータベースへの新しいクライアント接続をすべて拒否します。
ENABLE db
前の DISABLE コマンドの後に新しいクライアント接続を許可します。
RECONNECT [db]
指定されたデータベース、またはすべてのデータベースのオープンなサーバー接続を、(プーリングモードに従って)解放された後に閉じます。ライフタイムがまだ満了していなくても閉じられます。新しいサーバー接続はすぐに作成でき、プールサイズの設定に従って必要に応じて接続されます。
このコマンドは、サーバー接続の設定が変更された場合に有用です。たとえば、新しいサーバーへの段階的なスイッチオーバーを実行する際に使用します。pgbouncer.ini の接続文字列を変更して再読み込みした場合(RELOAD を参照)や、DNS 解決が変更された場合、このコマンドを実行する必要はありません。そのような場合、同様の処理が自動的に実行されるためです。このコマンドが必要となるのは、PgBouncer の下流で接続をルーティングしているものがある場合に限ります。
このコマンドを実行した後、一部のサーバー接続が古い宛先に、別のサーバー接続が新しい宛先に向かう状態が長期間続く可能性があります。これは、読み取り専用レプリカ間で読み取り専用トラフィックを切り替える場合や、マルチマスターレプリケーション構成のノード間で切り替える場合にのみ適切であると考えられます。すべての接続を同時に切り替える必要がある場合は、代わりに PAUSE が推奨されます。待機せずにサーバー接続を閉じる必要がある場合(たとえば、段階的なスイッチオーバーではなく緊急フェイルオーバーのシナリオ)は、KILL の検討もしてください。
KILL [db]
指定されたデータベースまたはすべてのデータベース(管理データベースを除く)のすべてのクライアント接続とサーバー接続を即座に切断します。
KILL が実行されたデータベースへの新しいクライアント接続は、RESUME が呼び出されるまで待機します。
KILL_CLIENT id
指定されたクライアント接続を、そのクライアントに対するすべてのサーバー接続とともに即座に切断します。切断対象のクライアントは、SHOW CLIENTS コマンドで確認できる id 値によって識別されます。
コマンドの例は KILL_CLIENT 1234 のようになります。
RESUME [db]
前の KILL または PAUSE コマンドからの作業を再開します。
SHUTDOWN
PgBouncer プロセスは終了します。
SHUTDOWN WAIT_FOR_SERVERS
新しい接続の受付を停止し、すべてのサーバーが解放された後にシャットダウンします。 これは PAUSE と SHUTDOWN を実行するのと基本的に同じですが、 PAUSE を待つ間も新しい接続の受付を停止し、 サーバー接続を待機しているクライアントを積極的に切断する点が異なります。 UNIX ソケットはシャットダウン中に開いたままになりますが、 PgBouncer 管理コンソールへの接続のみを受け付けます。
SHUTDOWN WAIT_FOR_CLIENTS
新しい接続の受付を停止し、既存のすべてのクライアントが切断されたらプロセスをシャットダウンします。UNIX ソケットはシャットダウン中に開いたままになりますが、pgbouncer 管理コンソールへの接続のみを受け付けます。このコマンドは、以下の手順に従って2つの PgBouncer プロセスをゼロダウンタイムでローリング再起動する際に使用できます。
so_reuseportを使用して、同じポートで 2 つ以上の PgBouncer プロセスを実行します (ピアリングの設定 は推奨されますが、必須ではありません)。 再起動時のダウンタイムをゼロにするため、これらのプロセスを 1 つずつ再起動します。これにより、1 つのプロセスを再起動している間も、他のプロセスが接続を受け入れ続けます。- 最初に再起動するプロセスを選択します。これを A と呼びます。
- プロセス A に
SHUTDOWN WAIT_FOR_CLIENTSを実行します(またはSIGTERMを送信します)。 - すべてのクライアントが再接続するようにします。クライアント側のプーラーが
server_idle_timeout(または同様の設定)によって再接続を引き起こすまでしばらく待つことで実現できます。クライアント側のプーラーが使用されていない場合は、クライアントを再起動することで実現できます。すべてのクライアントが再接続すると、プロセス A は自動的に終了します。接続しているクライアントがもういないためです。 - プロセス A を再度起動します。
- 残りの各プロセスに対してステップ 3、4、5 を 1 つずつ繰り返し、すべてのプロセスを再起動するまで続けます。
RELOAD
PgBouncer プロセスは設定ファイルを再読み込みし、変更可能な設定を更新します。これにはメイン設定ファイルおよび設定 auth_file と auth_hba_file で指定されたファイルが含まれます。
PgBouncer は、設定ファイルの再読み込みによってデータベース定義の接続パラメーターが変更されたことを検出します。既存のサーバー接続は、プーリングモードに従って次回接続を解放するタイミングで古い宛先に対して閉じられ、新しいサーバー接続は即座に更新された接続パラメーターを使用します。
WAIT_CLOSE [db]
指定されたデータベースまたはすべてのデータベースのすべてのサーバー接続が “close_needed” 状態を解除するまで待機します(SHOW SERVERS を参照)。これは RECONNECT や RELOAD の後に呼び出すことで、たとえばスイッチオーバースクリプトで、それぞれの設定変更が完全に有効になるまで待機するために使用できます。
その他のコマンド
SET key = arg
設定値を変更します(詳細は SHOW CONFIG を参照)。たとえば:
SET log_connections = 1;
SET server_check_query = 'select 2';
(このコマンドは PgBouncer 管理コンソールで実行され、PgBouncer の設定を変更します。SET コマンドを他のデータベースで実行しても、他の SQL コマンドと同様に PostgreSQL バックエンドに渡されます。)
シグナル
- SIGHUP
- 設定の再読み込み。管理コンソール上で RELOAD コマンドを実行したのと同じです。
- SIGTERM
- スーパーセーフシャットダウン。既存のすべてのクライアントの切断を待ちますが、新しい接続は受け付けません。これは管理コンソール上で SHUTDOWN WAIT_FOR_CLIENTS を実行することと同じです。シャットダウンがすでに進行中の状態でこのシグナルを受け取った場合、「スーパーセーフシャットダウン」の代わりに「即時シャットダウン」がトリガーされます。PgBouncer 1.23.0 より前のバージョンでは、このシグナルは「即時シャットダウン」を引き起こしていました。
- SIGINT
- セーフシャットダウン。管理コンソールで SHUTDOWN WAIT_FOR_SERVERS を実行したのと同じです。 シャットダウンがすでに進行中の間にこのシグナルを受け取った場合、「セーフシャットダウン」の代わりに「即時シャットダウン」がトリガーされます。
- SIGQUIT
- 即時シャットダウン。管理コンソールで SHUTDOWN を実行したのと同じです。
- SIGUSR1
- 管理コンソールで PAUSE を実行したのと同じです。
- SIGUSR2
- 管理コンソールで RESUME を実行したのと同じです。
Libevent 設定
Libevent のドキュメントより:
環境変数 EVENT_NOEPOLL、EVENT_NOKQUEUE、EVENT_NODEVPOLL、EVENT_NOPOLL または EVENT_NOSELECT をそれぞれ設定することで、epoll、kqueue、devpoll、poll または select のサポートを無効にできます。
環境変数 EVENT_SHOW_METHOD を設定すると、libevent は使用するカーネル通知メソッドを表示します。
関連項目
pgbouncer(5) - 設定項目の説明のマニュアルページ