Configuring and usage

使用する前にEDB PgBouncerを構成します。

EDB PgBouncerの設定

EDB PgBouncerサービスが実行されているとき、構成ファイルで指定されたEDB PgBouncerリスナーポートに接続するPostgresクライアントは接続プーリングを使用します。 EDB PgBouncerの接続と構成情報は、 .ini ファイルに格納されます。

RedHat/Centos、Debian、およびSLES 12 SP5では、.ini ファイルは次のディレクトリにあります。

/etc/edb/pgbouncer<x.x>/

<x.x> EDB PgBouncerバージョンです。

Windowsでは、 .ini ファイルは次のディレクトリにあります。

C:\Program Files\edb\pgbouncer<x.x>\share\

<x.x> EDB PgBouncerバージョンです。

EDB PgBouncer構成ファイルは、 [databases] と[pgbouncer] の2つのセクションに分かれています。

構成ファイルの[databases] セクションには、データベースのリストと関連する接続情報が含まれています。構成ファイルには、EDB PgBouncerをインストールしたEDB Postgres Advanced Serverをインストールするためのエントリが含まれています。

edb = host=127.0.0.1 port=5444

PostgreSQLサーバーの場合、次の例に示すように、PostgreSQLサーバーの詳細を入力する必要があります。

postgres = host=127.0.0.1 port=5432

keyword=value ペアの形式で構成ファイルに、より多くのデータベース接続情報を指定できます。表に示されているパラメーターを含めることができます。

Parameter

Description

host

ホストのIPアドレス

port

ホストがリッスンしているポート

dbname

(オプションの)データベース名

user

ユーザー名(接続するクライアントが指定した情報と異なる場合)

password

パスワード(接続するクライアントが指定した情報と異なる場合)

次の例は、構成ファイルの[databases] セクションで許可される構文を示しています。

[databases]
edb = host=127.0.0.1 port=5444
postgres = host=127.0.0.1 port=5432
acctg = host=192.168.10.101 port=5432 user=bob password=XXXXXX

dbname パラメーターを含めて、接続名を代替データベース名にマップします。例:

hr = host=127.0.0.1 port=5445 dbname=humanresources

クライアントが認証情報を提供すると、その情報はEDB PgBouncerへの接続に使用されます。 EDB PgBouncerは、EDB PgBouncer構成ファイルで指定された情報を使用して、データベースサーバーに接続します。構成ファイルで提供されるユーザー情報は、Postgresデータベースクラスターで定義されたロールと一致する必要があります。

注釈

pgbouncer.ini でユーザーの詳細を指定しない場合、ユーザー名とパスワードはデータベースサーバーとEDB PgBouncerによって認証されます。そのため、ユーザー名とパスワードを`userlist.txt` ファイルとデータベースクラスターに含めます。

構成ファイルの[pgbouncer] セクションには、EDB PgBouncerに固有の構成の詳細が含まれています。

Parameter

Description

admin_users

管理コンソールへのアクセスが許可されているユーザーのカンマ区切りリスト(管理とモニタリングの目的)。デフォルトでは、EDB PgBouncerは`admin_users = enterprisedb`でインストールされます。 PostgreSQLサーバーの場合、この値を`admin_users = postgres`として設定します。

auth_file

EDB PgBouncerに接続できるクライアントのユーザー名とパスワードを含む認証ファイルへのパス。認証ファイル(userlist.txt)は`/etc/edb/pgbouncer<x.x>/`にあり、クライアントがEDB PgBouncerへのアクセスに使用できるIDを指定する ユーザー名/パスワード のペアが含まれています。認証ファイルには、ユーザー名とパスワードをダブルクォーテーションで囲んで指定します。 EDB PgBouncerにアクセスできるIDを変更するには、既存の認証ファイルを編集するか、 `auth_file`パラメーターで代替の認証ファイルを指定します。

auth_type

EDB PgBouncerが使用する認証方法。 md5、crypt、plain、trust、または`any`のいずれかです。デフォルト値は`md5`です。

auth_dbname

データベース名を指定するオプション。 auth_queryで言及されたクエリは、このデータベースに対して実行されます。

default_pool_size

サーバーへのアクセスが許可されているユーザー接続の量。デフォルトは20のアクティブな接続です。

ignore_startup_parameters

EDB PgBouncerが無視するアプリケーションスタートアップパケットのコンマ区切りリスト。デフォルトはapplication_nameです。

listen_addr

EDB PgBouncerがクライアント接続をリッスンするIPアドレス。省略すると、Unixソケット接続のみが許可されます。クライアントはEDB PgBouncerと同じホストに存在する必要があり、EDB PgBouncerに接続するときにホストIPアドレスを指定することはできません。

listen_port

EDB PgBouncerがクライアント接続を監視するポート。デフォルトでは、EDB PgBouncerはポート6432でリッスンします。

logfile

EDB PgBouncerログファイルへのパス。

max_client_conn

許可される接続の最大数。デフォルトは100です。

pidfile

プロセスIDファイルへのパス。

pool_mode

pool_mode`の値は、サーバー接続を接続プールで使用できるようになる時期を指定します。 `session、transaction、または`statement`になります。デフォルト値は`session`です。

server_reset_query

デフォルトは`DISCARD ALL`で、データベースセッションに加えられた変更をクリーンアップするようにEDB PgBouncerに指示します。

stats_users

読み取り専用クエリに接続して実行できるユーザーのコンマ区切りリスト。デフォルトは`stats_users = enterprisedb`です。 PostgreSQLサーバーの場合、この値を`stats_users = postgres`として設定します。

cancel_wait_timeout

PgBouncerがキャンセルリクエストの転送を断念するまでの時間。デフォルトは10秒です。

次の例は、 EDB Postgres Advanced Server用のEDB PgBouncer 1.16の構成ファイルの[pgbouncer] セクションで許可される構文を示しています。

[pgbouncer]
logfile = /var/log/edb/pgbouncer1.16/edb-pgbouncer-1.16.log
pidfile = /var/run/edb/pgbouncer1.16/edb-pgbouncer-1.16.pid
listen_addr = *
listen_port = 6432
auth_type = md5
auth_file = /etc/edb/pgbouncer-1.16/userlist.txt
admin_users = enterprisedb
stats_users = enterprisedb
pool_mode = session
server_reset_query = DISCARD ALL
ignore_startup_parameters = application_name
max_client_conn = 100
default_pool_size = 20

pgbouncer.ini ファイルで使用される設定の詳細については、 pgbouncer.iniを参照してください。

環境のEDB PgBouncer構成ファイルを編集した後、EDB PgBouncerサービスを再起動して変更を有効にします。 CentOS、Rocky Linux、AlmaLinux、RHEL、SUSE、およびWindowsプラットフォームの場合、EDB PgBouncerサービス名はedb-pgbouncer-1.16 です。 Debパッケージの場合、EDB PgBouncerサービス名はedb-pgbouncer116 です。プラットフォーム固有のコマンドを使用して、必要に応じてサービスを停止、開始、または再起動します。

EDB PgBouncer管理コンソールの使用

管理コンソールを使用すると、EDB PgBouncerアクティビティに関する統計情報を取得し、EDB PgBouncerプロセスを制御できます。 edb-psqlクライアントを使用して、 pgbouncer データベースに接続することにより、EDB PgBouncer管理コンソールにアクセスできます。

次の例では、Linuxシステム上のedb-psqlクライアントを使用してpgbouncerデータベースに接続します。 EDB PgBouncerは、enterprisedbのユーザー名でポート6432でリッスンしています。

EDB Postgres Advanced Serverインストールの下のbinディレクトリに移動した後、次のコマンドを入力します。必要な接続情報は、接続するクライアント、プラットフォーム、およびサーバーが必要とする認証情報によって異なります。

$ ./edb-psql -p 6432 -U enterprisedb pgbouncer

PostgreSQLサーバーの場合、コマンドは次のとおりです。

$ ./edb-psql -p 6432 -h /tmp -U postgres  pgbouncer

pgbouncerデータベースに接続した後、 SHOW CLIENTS コマンドを使用して、クライアント関連の情報を取得できます。

SHOW CLIENTS;

SHOW CLIENTS コマンドは以下を返します。

__OUTPUT__
- -[ RECORD 1]-+--------------------
   type         | C
   user         | enterprisedb
   database     | pgbouncer
   state        | active
   addr         | unix
   port         | 6432
   local_addr   | unix
   local_port   | 6432
   connect_time | 2010-05-25 05:26:20
   request_time | 2010-05-25 05:39:46
   ptr          | 0x8655d20
   link         |

SHOW コマンドの他のバリエーションを使用して、EDB PgBouncerに関する情報を取得できます。

SHOW STATS SHOW SERVERS SHOW POOLS SHOW LISTS SHOW USERS SHOW DATABASES SHOW FDS SHOW CONFIG SHOW STATE

次のコマンドを使用して、EDB PgBouncerプロセスを制御できます。 PgBouncerの使用の詳細については、 PgBouncer project site を参照してください。

PAUSE

PAUSE コマンドを使用して、現在のクエリが完了するのを待った後、すべてのサーバーを切断します。

SUSPEND

SUSPEND コマンドを使用して、ソケットバッファーをフラッシュし、EDB PgBouncerプロセスを一時停止します。

RESUME

RESUME コマンドを使用して、 PAUSE またはSUSPEND コマンドの後に作業を再開します。

SHUTDOWN

SHUTDOWN コマンドを使用して、EDB PgBouncerプロセスを停止し、終了します。

RELOAD

RELOAD コマンドを使用して、EDB PgBouncer構成ファイルをリロードします。