手機版
你好,游客 登錄 注冊
背景:
閱讀新聞

使用PgBouncer連接池

[日期:2019-12-25] 來源:Linux社區  作者:lottu [字體: ]

1.pgbouncer 的介紹

  pgbouncer是一個針對PostgreSQL數據庫的輕量級連接池,任何目標應用都可以把 pgbouncer 當作一個 PostgreSQL/Greenplum 服務器來連接,然后pgbouncer 會處理與服務器連接,或者是重用已存在的連接。pgbouncer 的目標是降低因為新建到 PostgreSQL/Greenplum 的連接而導致的性能損失。

  pgbouncer目前支持三種連接池模型。分別是session, transaction和statment三個級別。

  • session. 會話級鏈接。只有與當客戶端的會話結束時,pgbouncer才會收回已分配的鏈接
  • transaction 事務級連接。當事務完成后,pgbouncer會回收已分配的鏈接。也就是說客戶端只是在事務中才能獨占此鏈接,非事務的對數據庫的請求是沒有獨享的鏈接的。
  • statement 語句級鏈接。任何對數據庫的請求完成后,pgbouncer都會回收鏈接。此種模式下,客戶端不能使用事務,否則會造成數據的不一致。

2.pgbouncer配置

  由于pgbouncer是基于libevent開發的;所以需要先安裝libevent的開發包:libevent下載地址

cd libevent-2.0.21-stable
./configure --prefix=/opt/libevent
make
make install

pgbouncer下載地址

cd pgbouncer-1.5.4
./configure --prefix=/opt/pgbouncer --with-libevent=/opt/libevent
make 
make install
chown -R gpadmin:gpadmin /opt/pgbouncer

  配置環境變量:本實驗數據庫對象是greenplum;

export LD_LIBRARY_PATH=/opt/libevent/lib:$LD_LIBRARY_PATH
export PGB_HOME=/opt/pgbouncer
export PATH=$PGB_HOME/bin:$PATH

  創建一個PgBouncer配置文件pgbouncer.ini

vi /opt/pgbouncer/config/pgbouncer.ini
[databases]
db_lottu = host=localhost port=5432 dbname=lottu user=lottu

[pgbouncer]
listen_port = 6432
listen_addr = *
auth_type = md5
auth_file = /opt/pgbouncer/userlist.txt
logfile = /opt/pgbouncer/pgbouncer.log
pidfile = /opt/pgbouncer/pgbouncer.pid
admin_users = lottu
pool_mode = Transaction
max_client_conn = 100

  創建一個認證文件。該文件的名稱必須匹配pgbouncer.ini文件中的 auth_file參數;這里是/opt/pgbouncer/userlist.txt

vi /opt/pgbouncer/userlist.txt
"lottu" "××××××"

  配置服務器重置查詢;當一個連接被返回給連接池時,它必須被重置為剛創建的連接的狀態。在把一個連接返回給連接池之前,PgBouncer通過發出一個查詢來實現這種重置。PostgreSQL 8.3及其后的版本有一個用于此種目的的DISCARD ALL命令,它標準PgBouncer發布的默認重置查詢。Greenplum數據庫不支持DISCARD ALL。需要配置參數server_reset_query

server_reset_query = RESET ALL; SET SESSION AUTHORIZATION DEFAULT;

  Greenplum數據庫 4.7.0及其后版本包括的PgBouncer修改版中的默認服務器重置查詢。盡管它與PgBouncer原生的不同,它也能確保連接池對于Greenplum數據庫用戶透明并且客戶端應用不需要為了使用連接池而被修改。配置好了; RELOAD命令重載它

pgbouncer=# RELOAD;

 3.啟動pgbouncer

pgbouncer -d /opt/pgbouncer/config/pgbouncer.ini

  連接pgbouncer

psql -p 6432 db_lottu lottu
Password for user lottu: 
psql (8.2.15)
Type "help" for help.

4.管理pgbouncer

  pgbouncer有一個管理控制臺,可以登錄到pgbouncer虛擬數據庫來訪問它。該控制臺接受類SQL命令,這些命令允許用戶監控、重新配置和管理pgbouncer。

  用 psql登錄到pgbouncer虛擬數據庫

psql -p 6432 pgbouncer lottu

  要看可用的命令,可運行show help命令

pgbouncer=# show help;                                                                                                  
NOTICE:  Console usage
DETAIL:  
 SHOW HELP|CONFIG|DATABASES|POOLS|CLIENTS|SERVERS|VERSION
 SHOW STATS|FDS|SOCKETS|ACTIVE_SOCKETS|LISTS|MEM
 SHOW DNS_HOSTS|DNS_ZONES
 SET key = arg
 RELOAD
 PAUSE [<db>]
 RESUME [<db>]
 KILL <db>
 SUSPEND
 SHUTDOWN
SHOW

  如果用戶對pgbouncer.ini文件做了修改,用戶可以用 RELOAD命令重載它:

pgbouncer=# RELOAD;

ss

linux
相關資訊       PgBouncer  PgBouncer連接池 
本文評論   查看全部評論 (0)
表情: 表情 姓名: 字數

       

評論聲明
  • 尊重網上道德,遵守中華人民共和國的各項有關法律法規
  • 承擔一切因您的行為而直接或間接導致的民事或刑事法律責任
  • 本站管理人員有權保留或刪除其管轄留言中的任意內容
  • 本站有權在網站內轉載或引用您的評論
  • 參與本評論即表明您已經閱讀并接受上述條款
海口彩票论坛