前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >greenplum 连接池pgbouncer的使用

greenplum 连接池pgbouncer的使用

原创
作者头像
小徐
修改2019-11-27 18:30:29
1.3K0
修改2019-11-27 18:30:29
举报
文章被收录于专栏:GreenplumGreenplum

greenplum 对连接池pgbouncer的使用

代码语言:javascript
复制
目录结构
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 链接测试

说明

代码语言:javascript
复制
以下网站已经对pgbouncer有想西的介绍了,在这里几部废话了,之谈三个共享链接:
1、Session pooling:当一个客户端连接时,只要它保持连接状态,就分配给它一个连接。当该客户端断开连接时,该连接才被放回到池中。
2、Transaction pooling: 在一个事务运行期间,分配一个连接给客户端。当PgBouncer发现事务完成,该连接就被放回到池中。这种模式只能被用于不使用依赖于会话的特性的应用。
3、Statement pooling:语句池化类似于事务池化,但是不允许多语句事务。这种模式的目标是为了在客户端强制自动提交模式,且它的定位是PostgreSQL上的PL/Proxy

1 pgbouncer 介绍

代码语言:javascript
复制
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连接池

代码语言:javascript
复制
pgbouncer可以配置在运行在Greenplum数据库的master上或另一台机器上,用户最好运行在Greenplum数据库的master上。

2.1 创建PgBouncer需要的配置文件

代码语言:javascript
复制
创建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用户名与密码映射文件

代码语言:javascript
复制
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参数

代码语言:javascript
复制
Usage: pgbouncer [OPTION]... config.ini
  -d, --daemon           在后台运行
  -R, --restart          重新启动
  -q, --quiet            不带提示的运行
  -v, --verbose          更详细的运行
  -u, --user=<username>  制定username运行
  -V, --version          显示版本
  -h, --help             显示帮助并退出

3.2 启动pgbouncer连接池

代码语言:javascript
复制
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 链接测试

代码语言:javascript
复制
$psql -p 6540 -U gpadmin mydb

在链接事日志中会显示以下信息
2019-11-27 17:06:51.470 109039 LOG C-0x71c830: mydb/gpadmin@192.168.***.**:27115 login attempt: db=mydb user=gpadmin tls=no
2019-11-27 17:06:51.470 109039 LOG C-0x71c830: mydb/gpadmin@192.168.***.**:27115 closing because: client unexpected eof (age=0)
2019-11-27 17:06:53.870 109039 LOG C-0x71c830: mydb/gpadmin@192.168.***.**:27117 login attempt: db=mydb user=gpadmin tls=no
2019-11-27 17:06:53.870 109039 LOG S-0x721670: mydb/gpadmin@192.168.***.**: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/gpadmin@192.168.***.**:5432 new connection to server (from 192.168.***.**:43429)

在以上日志中可以看出
1、有一个login与closing的一个连接
2、有一个新的链接是在43271端口与43429与greenplum的5432进行连接

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • greenplum 对连接池pgbouncer的使用
  • 说明
  • 1 pgbouncer 介绍
  • 2 配置pgbouncer连接池
    • 2.1 创建PgBouncer需要的配置文件
      • 2.2 创建users.txt用户名与密码映射文件
      • 3 启动pgBouncer连接池
        • 3.1 查看pgbouncer参数
          • 3.2 启动pgbouncer连接池
            • 3.3 链接测试
            相关产品与服务
            数据库
            云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档