pgbouncer是 PostgreSQL的轻量的连接池,可以有效降低连接数,提升系统性能。Greenplum当前版本已经自带,只是多数组织在实践中似乎并未启用此服务,也算是一种资源的浪费了。 gpbouncer有三种连接方式:
Session pooling/会话连接池
最普通的方式,在客户端连接的时候,在它的连接生命期内,会给它赋予一个服务器连接。在客户端断开的时候,服务器连接会放回到连接池中。
Transaction pooling/事务连接池
服务器连接只有在一个事务里的时候才赋予客户端。在 PgBouncer 注意到事务结束的时候,服务器将会放回连接池中。这是一个 hack,因为它打破了应用对后段连接的看法。只有在应用配合这样的使用模式,没有使用会破坏这种使用模式的时候才能用这个连接方式。
Statement pooling/语句连接池
最激进的模式。这是事务连接池的一个扭曲的变种 - 不允许多语句的事务。这就意味着是在客户端强制“autocomit”模式,主要是给 PL/Proxy 用的。 本次尝试启用Greenplum自带的pgbouncer.
配置文件
pgbouncer默认存在于Greenplum数据库的bin目录下。
[gpadmin@gp6sdw1 ~]$ whereis pgbouncer
pgbouncer: /usr/local/greenplum-db-<version>/bin/pgbouncer
要启动pgbouncer,最简单的方式,是配置文件pgbouncer.ini.
[databases]
gpdb = host=<IP Addr> dbname=gpdb auth_user=gpadmin
[pgbouncer]
pool_mode = session
listen_port = 6543
listen_addr = 0.0.0.0
auth_type = trust
logfile = pgbouncer.log
pidfile = pgbouncer.pid
admin_users = someuser
stats_users = stat_collector
保存,启动
[gpadmin@gp6mdw pgbouncer]$ pgbouncer pgbouncer.ini
2023-08-29 10:50:35.490 CST [30276] LOG kernel file descriptor limit: 524288 (hard: 524288); max_client_conn: 100, max expected fd use: 152
2023-08-29 10:50:35.490 CST [30276] LOG listening on 0.0.0.0:6543
2023-08-29 10:50:35.490 CST [30276] LOG listening on unix:/tmp/.s.PGSQL.6543
2023-08-29 10:50:35.490 CST [30276] LOG process up: PgBouncer 1.16.1, libevent 2.0.21-stable (epoll), adns: evdns2, tls: OpenSSL 1.0.2k-fips 26 Jan 2017
好了,这样就可以从不同的客户端,通过端口6543连接到数据库了!
标签:pgbouncer,Greenplum,29,数据库,50,连接,连接池,客户端 From: https://blog.51cto.com/u_1264026/7275959