pgpool功能优势参考Pgpool官方文档。
Pgpool-II是PostgreSQL数据库客户端与PostgreSQL服务器之间的代理软件,也就是说客户端不在直接连接PostgreSQL服务器,而是通过Pgpool进行连接。它提供以下功能:
连接池
与PostgreSQL服务器建立连接后会由Pgpool-II维护该连接,并当新连接连接时,如果存在具有相同连接信息(即用户名,数据库,协议版本和其他连接参数)的连接则直接使用它们。它减少了连接开销并改善了系统的整体吞吐量。
负载均衡
如果数据库是复制模式的(以复制模式或主/从模式运行),则在任何服务器上执行SELECT查询都将返回相同的结果。Pgpool-II 利用复制功能来减少每台PostgreSQL服务器上的负载。它通过将SELECT查询分配到可用的服务器之间来做到这一点,从而提高了系统的整体吞吐量。在理想情况下,读取性能可以与PostgreSQL服务器的数量成正比。在只读查询并发比较高的情况下,负载平衡效果最佳。
自动故障转移
如果其中一台数据库服务器出现故障或无法访问, Pgpool-II会将其分离,并将继续使用其余的数据库服务器提供服务。提供了很多自动故障转移配置来使该功能到最优效果,例如包括超时和重试。
在线恢复
Pgpool-II可以通过执行一个命令来执行数据库节点的在线恢复。当在线恢复与自动故障转移一起使用时,可以通过故障转移将失败的节点分离,同时使用在线恢复自动附加为备用节点。也可以同步附加新的PostgreSQL服务器节点。
复制
Pgpool-II可以管理多台PostgreSQL服务器。复制功能可以在两台或者多台PostgreSQL服务器之间创建实时备份,因此,如果其中一台PostgreSQL服务器发生故障,服务可以继续运行而不会中断。Pgpool-II具有内置复制(本机复制)。但是,用户可以使用外部复制功能,包括PostgreSQL的流复制(目前大多数的主备集群都采用PostgreSQL的流复制来实现)。
限制超出连接
PostgreSQL的最大连接数是有限制的(postgres.conf中max_connections),达到此数量时,新连接将被拒绝。但是,增加最大连接数会增加资源消耗,并对整体系统性能产生负面影响。Pgpool-II对最大连接数也有限制,但是将对额外的连接进行排队,而不是立即返回错误。当然也可以配置为在超过连接限制(4.1或更高版本)时返回错误。
看门狗
看门狗可以协调多个Pgpool-II节点,建立强壮的集群系统,并避免单点故障或脑裂。看门狗可以对其他pgpool-II节点执行生命检查,以检测Pgpoll-II的故障。如果活跃中的Pgpool-II节点发生故障,则备用 Pgpool-II节点可以升级为活跃状态,变为主节点,并接管虚拟IP。
内存查询缓存
内存查询缓存允许保存一对SELECT语句及其结果。如果出现相同的SELECT,则Pgpool-II从缓存中返回该值。由于不涉及SQL解析或对PostgreSQL的访问,因此内存缓存将非常快。但另一方面,在某些情况下,它可能会比正常途径慢,因为它增加了存储缓存数据的开销。
Pgpool-II存在的功能缺陷TODO