1. 程式人生 > >pgbouncer簡介及配置

pgbouncer簡介及配置

pgbouncer是PostgreSQL的一個輕量的連線池軟體。任何應用程式都可以把 pgbouncer 當作一個 PostgreSQL 伺服器來連線,然後 pgbouncer 會處理與伺服器連線,或者是重用已存在的連線。
    使用 pgbouncer 主要目的標是降低因為新建到 PostgreSQL 的連線而導致的效能損失。我們知道,對於每個新的連線,PostgreSQL都會建啟動一個程序,連線數有多少,就會啟動多少個後臺服務程序,即使這些連線什麼也不做,也會佔用一個後臺服務程序,每個服務程序都會佔用系統資源,pgbouncer是一個連線池軟體,可以實現連線複用的功能,降低實際到資料庫的連線數目。
    為了協調事務語意和連線池的關係,pgbouncer 支援幾種不同粗暴程度的連線輪轉方式:
    Session pooling/會話連線池
    最禮貌的方法。在客戶端連線的時候,將會給他分配一個伺服器連線,並且在客戶端連線的全程都分配給它。在客戶端中斷連線的時候,這個伺服器連線將會放回連線池。這種方式不能降低資料庫的連線數。
    Transaction pooling/事務連線池
    伺服器連線只是在一個事務的過程裡賦予客戶端的。在 PgBouncer 注意到事務結束後,伺服器就會放回連線池。
    Statement pooling/語句連線池
    最激進的模式。在每個查詢結束之後,伺服器的連線都會立即放回連線池。在這種模式下將不允許多語句的事務,因為它們的事務語意會被破壞。
    下面我們將簡單介紹pgbouncer的使用方法:
    從網站

http://pgfoundry.org/projects/pgbouncer下載,我下載的是pgbouncer-1.3.4.tgz,把這個檔案解壓到一個目錄中,編譯安裝:
    tar zxvf pgbouncer-1.3.4.tgz
    cd pgbouncer-1.3.4
    ./configure
    make
    make install
    
    pgbouncer執行需要一個配置檔案pgbouncer.ini,檔案內容如下:


[databases]
osdba = host=127.0.0.1 port=5432 user=osdba dbname=osdba
    
[pgbouncer]
listen_port = 6543
listen_addr = 127.0.0.1
auth_type = md5
auth_file = users.txt
logfile = pgbouncer.log
pidfile = pgbouncer.pid
admin_users = bntest

    其中[databases]小結中的格式為: <database> = xxxxxx,<database>指在pgbouncer中的資料恢復庫,後面的"host=127.0.0.1 port=5432 user=osdba dbname=osdba"是pgbouncer連線的後臺資料庫使用的連線串。我這裡的資料庫為osdba。
    [pgbouncer]小結中,主要設定pgbouncer的監聽IP即埠。
    還需要一個使用者驗證檔案users.txt,users.txt的內容如下:


"bntest" "bnpass"

內容格式為 "username" "password"。後面就可以使用這裡面配置的使用者名稱和密碼連線pgbouncer。
    這裡就可以啟動pgbouncer了:
[email protected]
:~$ pgbouncer -d pgbouncer.ini 2010-10-01 21:46:24.205 11484 LOG File descriptor limit: 1024 (H:1024), max_client_conn: 100, max fds possible: 130
這裡就可以使用psql連線pgbouncer了:
[email protected]:~$ psql -h 127.0.0.1 -p 6543 -U bntest osdba
Password for user osdba: 
psql (9.0.0)
Type "help" for help.
osdba=# \d
                 List of relations
 Schema |          Name          |   Type   | Owner 
--------+------------------------+----------+-------
 public | pg_stat_statements     | view     | osdba
 public | pgstatspack_database   | table    | osdba
 public | pgstatspack_indexes    | table    | osdba
 public | pgstatspack_sequences  | table    | osdba
 public | pgstatspack_settings   | table    | osdba
 public | pgstatspack_snap       | table    | osdba
 public | pgstatspack_statements | table    | osdba
 public | pgstatspack_tables     | table    | osdba
 public | pgstatspack_version    | table    | osdba
 public | pgstatspackid          | sequence | osdba
 public | t                      | table    | osdba
(11 rows)
osdba=# 
這裡也可以連線到pgbouncer上的一個特殊的資料庫pgbouncer上,這時就可以檢視pgbouncer執行狀態和關閉pgbouncer了:
[email protected]:~$ psql -h 127.0.0.1 -p 6543 -U bntest pgbouncer
Password for user bntest: 
psql (9.0.0, server 8.0/bouncer)
WARNING: psql version 9.0, server version 8.0.
         Some psql features might not work.
Type "help" for help.
pgbouncer=# show help;
NOTICE:  Console usage
DETAIL:  
SHOW HELP|CONFIG|DATABASES|POOLS|CLIENTS|SERVERS|VERSION
SHOW STATS|FDS|SOCKETS|ACTIVE_SOCKETS|LISTS|MEM
SET key = arg
RELOAD
PAUSE [<db>]
SUSPEND
RESUME [<db>]
SHUTDOWN
SHOW
可以看到命令shutdown可以停止pgbouncer的執行,命令reload可以重新裝載新的配置檔案。
具體使用方法可見:http://www.pgsqldb.org/mwiki/index.php/Pgbouncer_%E7%94%A8%E6%88%B7%E6%89%8B%E5%86%8C
上面的配置沒的指定連線池的模式,如果沒有指定,預設是session模式。
我們把連線模式改成statement,pgbouncer.ini配置檔案如下:


[databases]
osdba = host=127.0.0.1 port=5432 user=osdba dbname=osdba
    
[pgbouncer]
listen_port = 6543
listen_addr = 127.0.0.1
auth_type = md5
auth_file = users.txt
logfile = pgbouncer.log
pidfile = pgbouncer.pid
admin_users = bntest
pool_mode = statement


這時,如果我們使用"begin;"啟動事務時就會報錯:
[email protected]:~$ psql -h 127.0.0.1 -p 6543 -U bntest osdba
Password for user bntest: 
psql (9.0.0)
Type "help" for help.
osdba=# begin;
ERROR:  Long transactions not allowed
server closed the connection unexpectedly
This probably means the server terminated abnormally
before or while processing the request.
The connection to the server was lost. Attempting reset: Succeeded.
 
其它的一些資料:
http://wiki.postgresql.org/wiki/PgBouncer
http://pgbouncer.projects.postgresql.org/doc/config.html
http://www.pgsqldb.org/mwiki/index.php/Pgbouncer_%E4%BB%8B%E7%BB%8D

相關推薦

pgbouncer簡介配置

pgbouncer是PostgreSQL的一個輕量的連線池軟體。任何應用程式都可以把 pgbouncer 當作一個 PostgreSQL 伺服器來連線,然後 pgbouncer 會處理與伺服器連線,或者是重用已存在的連線。     使用 pgbouncer 主要目的標是降低因為新建到 PostgreSQ

TypeHandler簡介配置(mybatis源碼篇)

java rtt 當我 mes ons byte[] throws call dstat 作者:南柯夢 Mybatis中的TypeHandler是什麽?   無論是 MyBatis 在預處理語句(PreparedStatement)中設置一個參數時,還是從結果集中取出一

深入淺出Mybatis系列(五)---TypeHandler簡介配置(mybatis原始碼篇)

上篇文章《深入淺出Mybatis系列(四)---配置詳解之typeAliases別名(mybatis原始碼篇)》為大家介紹了mybatis中別名的使用,以及其原始碼。本篇將為大家介紹TypeHandler, 並簡單分析其原始碼。 Mybatis中的TypeHandler是什麼?   無論是 My

dubbo配置簡介配置載入順序

dubbo配置項 標籤 介紹 - <dubbo:service> 服務配置,用於暴露一個服務,定義服務的元資訊,一個服務可以用多個協議暴露,一個服務也可以註冊到多個註冊中心。 - <dubbo:re

創龍TMS320C6748開發板———EDMA簡介配置

一、EDMA模組介紹             TMS320C6748是一款高效能DSP,非常適合用來跑大資料量的演算法,而這樣的演算法往往需要保證實時性,那麼這麼大規模的資料怎麼進行運算能夠讓程式跑的最快,我們知道DSP中運算最快的儲存單元是RAM區,但是RAM畢竟有限

Logback簡介配置檔案logback.xml詳解

# logback簡介及配置檔案說明 > @author:wangyq > > @date:2021年3月31日 ## logback簡介 ​ Logback是由log4j創始人設計的另一個開源日誌元件,官方網站: http://logback.qos.ch。 1. ###### logbac

LDAP簡介LDAP服務器的安裝與配置

默認 access 目的 ani pro sta 目錄服務 unit onf 一、LDAP簡介 全稱:Lightweight Directory Access Protocol,目錄服務是一種特殊的數據庫系統,其專門針對讀取。 LDAP目錄中的信息是按照樹型結構組織,具體信

Mysql Group Replication 簡介單主模式組復制配置【轉】

ror ipv4 mysql命令 value tail force action dmi where 一 Mysql Group Replication簡介 Mysql Group Replication(MGR)是一個全新的高可用和高擴張的MySQL集群服務。

Nginx配置文件簡介多域名虛擬主機配置

Nginx;CentOS 1.Nginx的功能模塊 Nginx軟件的強大是由於它具有眾多的功能模塊,下面列出企業中常用的重要模塊。 (1)Nginx核心功能模塊(Core functionality) Nginx核心功能模塊負責Nginx的全局應用,主要對應主配置文件的Main區塊和E

大數據筆記(二十七)——Spark Core簡介安裝配置

sin cli sca follow com clu 同時 graphx 信息 1、Spark Core: 類似MapReduce 核心:RDD 2、Spark SQL: 類似Hive,支持SQL 3、Spark Streaming:類似

Nginx服務搭建配置簡介

Nginx在各種網站服務器當中除了Apache外,還有一款輕量級的網站服務器軟件Nginx,其特點是穩定性較好以及較低系統資源消耗,以及對HTTP並發連接的處理能力。 實驗環境 Redhat6.5版本 Nginx1.6版本 服務搭建 1、編譯安裝Nginx yum install pcre-devel

Nginx的配置文件簡介在Nginx中配置基於不同ip的虛擬主機

sendfile set code orm add form charset html-10 main Nginx的配置文件簡介及在Nginx中配置基於不同ip的虛擬主機: #user nobody; worker_processes 1; #error_log

PPPoE簡介介紹配置

簡介: PPPoE(PPP over Ethernet)協議是一種把PPP幀封裝到乙太網幀中的鏈路層協議。PPPoE可以使乙太網網路中的多臺主機連線到遠端的寬頻接入伺服器。 目的: 運營商希望把一個站點上的多臺主機連線到同一臺遠端接入裝置,同時接入裝置能夠提供與撥號上網類似的訪問控制和計費功能。在眾

[Kafka] Apache Kafka 簡介、叢集搭建配置詳解

前言 kafka是一種高吞吐量的分散式釋出訂閱訊息系統,它可以處理消費者規模的網站中的所有動作流資料。這種動作(網頁瀏覽,搜尋和其他使用者的行動)是在現代網路上的許多社會功能的一個關鍵因素。這些資料通常是由於吞吐量的要求而通過處理日誌和日誌聚合來解決。 Kafk

SPF 記錄:原理、語法配置方法簡介

SPF,全稱為 Sender Policy Framework,即發件人策略框架。 當前 Email 通訊,還是在使用 SMTP 這個協議。SMTP 的全稱為 Simple Mail Transfer Protocol,即「簡單郵件傳輸協議」。正如它的名字鎖暗示的,SMTP

HAProxy簡介常用配置文件詳解

red 支持 運算 close 級別 pro 所有 dex 下載源碼 HaproxyHAProxy是一個使用C語言編寫的自由及開放源代碼軟件,其提供高可用性、負載均衡,以及基於TCP和HTTP的應用程序代理。HAProxy特別適用於那些負載特大的web站點,這些站點通常又需

log4j2的簡介基礎配置

資源連結 log4j2的官網地址 log4j2的API 碼雲原始碼 log4j2的簡介   Log4j使用如下圖所示的類。   使用Log4j 2 API的應用程式將請求日誌管理器中帶有特定名稱的日誌記錄器。LogMan

Log4j-的簡介基礎配置

資源連結 Log4j官網地址: Log4j API 官方文件地址: 碼雲測試程式碼地址: Log4j介紹   幾乎每個大型應用程式都包括自己的日誌記錄或跟蹤API。與此規則一致的是,歐盟SEMPER專案決定編寫自己的跟蹤API

hive的基本簡介安裝、配置、使用(一)

hive是什麼? 由facebook開源,用於解決海量結構化日誌的資料統計; 基於hadoop的一個數據倉庫工具,使用HDFS進行儲存並將結構化資料檔案對映成一張表,並提供類sql查詢的功能,其底層採用MR進行計算; 本質是將HQL

Keep-Alive簡介在Tomcat中配置

Keep-Alive功能使客戶端到伺服器端的連線持續有效,當出現對伺服器的後繼請求時,Keep-Alive功能避免了建立或者重新建立連線。市場上 的大部分Web伺服器,包括iPlanet、IIS和Apache,都支援HTTP Keep-Alive。對於提供靜態內容的網站來說