greenplum 連接池pgbouncer的使用

目錄

greenplum 對連接池pgbouncer的使用

說明

1 pgbouncer 介紹

1.1 greenplum對pgbouncer的介紹

1.2 pgbouncer 官網介紹

1.3 中文介紹pgbouncer的使用

2 配置pgbouncer連接池

2.1 創建PgBouncer需要的配置文件

2.2 創建users.txt用戶名與密碼映射文件

3 啓動pgBouncer連接池

3.1 查看pgbouncer參數

3.2 啓動pgbouncer連接池

3.3 鏈接測試


greenplum 對連接池pgbouncer的使用

說明

以下網站已經對pgbouncer有想西的介紹了,在這裏幾部廢話了,之談三個共享鏈接:
1、Session pooling:當一個客戶端連接時,只要它保持連接狀態,就分配給它一個連接。當該客戶端斷開連接時,該連接才被放回到池中。
2、Transaction pooling: 在一個事務運行期間,分配一個連接給客戶端。當PgBouncer發現事務完成,該連接就被放回到池中。這種模式只能被用於不使用依賴於會話的特性的應用。
3、Statement pooling:語句池化類似於事務池化,但是不允許多語句事務。這種模式的目標是爲了在客戶端強制自動提交模式,且它的定位是PostgreSQL上的PL/Proxy

1 pgbouncer 介紹

1.1 greenplum對pgbouncer的介紹

https://gpdb.docs.pivotal.io/43240/utility_guide/admin_utilities/pgbouncer-ref.html

1.2 pgbouncer 官網介紹

http://www.pgbouncer.org/

1.3 中文介紹pgbouncer的使用

https://gp-docs-cn.github.io/docs/admin_guide/access_db/topics/pgbouncer.html

2 配置pgbouncer連接池

pgbouncer可以配置在運行在Greenplum數據庫的master上或另一臺機器上,用戶最好運行在Greenplum數據庫的master上。

2.1 創建PgBouncer需要的配置文件

創建pgbouncer.ini文件,格式如下:
[databases]
postgres = host=192.168.***.** port=54** dbname=postgres  pool_mode=statement
mydb = host=192.168.***.** port=54** dbname=mydb pool_mode=transaction
[pgbouncer]
pool_mode = session
listen_port = 6540
listen_addr = 192.168.***.**
auth_type = md5
auth_file = users.txt
logfile = pgbouncer.log
pidfile = pgbouncer.pid
admin_users = gpadmin

說明
1、postgres/mydb 分別是數據庫的名字,可以配置多個
2、auth_type 有兩種認證方式,md5和plain方式

2.2 創建users.txt用戶名與密碼映射文件

1、創建一個認證文件。該文件的名稱必須匹配pgbouncer.ini文件中的 auth_file參數,在這個例子中是 users.txt。每一行包含一個用戶名和口令。口令串的格式匹配PgBouncer配置文件中的auth_type參數。如果auth_type參數是plain,口令串就是一個明文口令,例如:
"gpadmin" "gpadmin1234"

2、下面例子中的auth_type是md5,因此認證域必須被MD5編碼。被MD5編碼的口令格式是:
"md5" + MD5(<password><username>)

3、用戶可以使用Linux的md5sum命令來計算MD5串。例如,如果gpadmin的口令是admin1234,下面的命令會打印用於口令域的字符串:
$ user=gpadmin; passwd=admin1234; echo -n md5; echo $passwd$user | md5sum
md53ce96652dedd8226c498e09ae2d26220


4、這裏是PgBouncer認證文件中用於gpadmin用戶的MD5編碼過的條目:
"gpadmin" "md53ce96652dedd8226c498e09ae2d26220"

3 啓動pgBouncer連接池

3.1 查看pgbouncer參數

Usage: pgbouncer [OPTION]... config.ini
  -d, --daemon           在後臺運行
  -R, --restart          重新啓動
  -q, --quiet            不帶提示的運行
  -v, --verbose          更詳細的運行
  -u, --user=<username>  制定username運行
  -V, --version          顯示版本
  -h, --help             顯示幫助並退出

3.2 啓動pgbouncer連接池

pgbouncer pgbouncer.ini
2019-11-27 17:03:19.024 108629 LOG File descriptor limit: 524288 (H:524288), max_client_conn: 100, max fds possible: 150
2019-11-27 17:03:19.025 108629 LOG Stale pidfile, removing
2019-11-27 17:03:19.025 108629 LOG listening on 192.168.***.**:65**
2019-11-27 17:03:19.025 108629 LOG listening on unix:/tmp/.s.PGSQL.65**
2019-11-27 17:03:19.025 108629 LOG process up: pgbouncer 1.8.1, libevent 1.4.6-stable (epoll), adns: evdns1, tls: OpenSSL 1.0.2l-fips  25 May 2017

1、在以上顯示了最大的連接數,以及最大的fds
2、顯示了啓動的基本信息
3、顯示了pgbouncer的版本信息

3.3 鏈接測試

$psql -p 6540 -U gpadmin mydb

在鏈接事日誌中會顯示以下信息
2019-11-27 17:06:51.470 109039 LOG C-0x71c830: mydb/[email protected].***.**:27115 login attempt: db=mydb user=gpadmin tls=no
2019-11-27 17:06:51.470 109039 LOG C-0x71c830: mydb/[email protected].***.**:27115 closing because: client unexpected eof (age=0)
2019-11-27 17:06:53.870 109039 LOG C-0x71c830: mydb/[email protected].***.**:27117 login attempt: db=mydb user=gpadmin tls=no
2019-11-27 17:06:53.870 109039 LOG S-0x721670: mydb/[email protected].***.**:5432 new connection to server (from 192.168.***.**:43271)
2019-11-27 17:07:47.688 109039 LOG Stats: 0 xacts/s, 0 queries/s, in 0 B/s, out 0 B/s, xact 0 us, query 0 us wait time 181 us
2019-11-27 17:15:02.545 109039 LOG S-0x721990: mydb/[email protected].***.**:5432 new connection to server (from 192.168.***.**:43429)

在以上日誌中可以看出
1、有一個login與closing的一個連接
2、有一個新的鏈接是在43271端口與43429與greenplum的5432進行連接

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章