2021年1月19日火曜日

Pgbouncer 超入門

概要

最新版の PostgreSQL と Pgbouncer を組み合わせて使ってみました
インストール方法から紹介します

環境

  • Ubuntu 18.04
  • PostgreSQL 13.1
  • pgbouncer 1.15.0

Linuxbrew のインストール

最新版の PostgreSQL と Pgbouncer を使うので Linuxbrew 経由でそれぞれインストールします

  • /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
  • echo 'eval $(/home/linuxbrew/.linuxbrew/bin/brew shellenv)' >> /home/vagrant/.profile

PostgreSQL のインストール

  • brew install postgresql

Pgbouncer のインストール

  • brew install pgbouncer

pbbouncer 経由でアクセスさせるデータベースを定義する

pbbouncer 経由でアクセス可能なデータベースを定義します
デフォルトではどのデータベースにもアクセスできません
後述する test データベースにアクセスできるようにしましょう


* vim /home/linuxbrew/.linuxbrew/etc/pgbouncer.ini

[databases]
test = host=localhost port=5432 dbname=test

userlist.txt へユーザを追加

デフォルトだと pgbouncer へのアクセスは userlist.txt に記載されているユーザのみアクセスできます
今回は vagrant ユーザを使うので vagrant を追記します
パスワードはないので 2 つ目の文字列は空で設定します


* vim /home/linuxbrew/.linuxbrew/etc/userlist.txt

"vagrant" ""

PostgreSQL 起動

  • pg_ctl -D /home/linuxbrew/.linuxbrew/var/postgres start

Pgbouncer の起動

  • pgbouncer -d -q /home/linuxbrew/.linuxbrew/etc/pgbouncer.init

動作確認

  • psql postgres

postgres のプロンプトに変更します


* create database test;
* \connect test
* create table users (name varchar(40), age integer);
* \dt
* insert into users values ('hawk', 10);
* insert into users values ('snowlog', 20);

テーブルが作成できたらアクセスできるか確認します


* psql test -p 5432

これに Pgbouncer 経由でアクセスしてみます


* psql test -p 6432

test データベースのプロンプトに変更します
テーブルの一覧や select 文が発行できることを確認しましょう


* \dt
* select * from users

最後に

PostgreSQL に pgbouncer 経由でアクセスする方法を紹介しました
今回はホワイトリスト形式の ACL くらいしか設定しませんでしたが他にもプーリングの機能や PostgreSQL へのメトリックなども取得できます
大規模な接続になればなるほど必要になるツールになるかなと思います

参考サイト

0 件のコメント:

コメントを投稿