zoukankan      html  css  js  c++  java
  • pgpool介绍和安装经验

    Pgpool的介绍

    一、介绍

    • 是一个工作在PostgreSQL多服务器和PostgreSQL数据库客户端之间的中间件。

    二、概念图

    •  

    三、功能

    • 连接池:pgpool -Ⅱ保存 连 接到PostgreSQL服务器,并重复利用具有相同属性的新的连接(即用户名,数据库 ,协议的版本),减少连接的开 销 ,并提高了系统的整体吞吐量。

    • 复制:pgpool-II可以管理多个PostgreSQL服务器。使用复制功能,可以实时备份在 2个或多个物理磁盘上,因此即使在硬盘出故障的时候也不用停止服务。

    • 负载平衡:如果数据库是复制,任何服务器上执行一个SELECT查询将返回相同的结果。pgpool-Ⅱ采用一个复制功能优势是以减少多个服 务 器之 间 分配上的SELECT 查 询 每个PostgreSQL服 务 器的 负载 ,提高系 统 的整体吞吐量。在最好的,性能的提高比例的PostgreSQL服 务 器的数量。在同一 时间有 大量用 户 的 查 询的时候,负载 平衡的情况下有最佳的 执 行。

    • 连接超限制:有一个关于与 PostgreSQL 的最大并 发连 接数限制,最大 连接数超过后 的 连 接被拒 绝 。 设 置最大 连 接数,但是增加的 资 源消耗和影响系 统 性能。 pgpool - II 也有 对 最大 连 接数的限制,但 额 外的 连 接将被排 队 ,而不是立即返回 错误 。

    • 并行查询:使用并行 查 询 功能,数据可分布在多个服 务 器中,以便 查 询 可以 执 行所有服 务 器上同 时 减少 总 体 执 行 时间 。 并行 查 询 的工作时候 ,寻找最佳的大规模的数据。

    四、模式及故障切换

    • 原始模式:如果定义了多个服务器,可以在原始模式中进行故障切换。 pgpool-II 在普通操作中通常访问 backend_hostname0 指定的后台程序。 如果 backend_hostname0 因为某些原因不能正常工作,pgpool-II 尝试访问 backend_hostname1 指定的后台程序。 如果它也不能正常工作,pgpool-II 尝试访问 backend_hostname2,3 等等。

    • 连接池模式: 在连接池模式中,所有在原始模式中的功能以及连接池功能都可以使用。要启用本模式,设置原始模式的配置参数以及以下的参数

      • max_pool 在 pgpool-II 子进程中缓存的最大连接数
      • connection_life_time 缓存的连接的过期时长,单位为秒。过期的缓存连接将被关闭。默认值为 0,表示缓存的连接将不被关闭。
      • reset_query_list 指定在推出一个会话时发送到后台程序的SQL命令。多个命令可以通过“;”隔开。默认为以下的设置但你可以根据你的需求改变。如reset_query_list = 'ABORT; DISCARD ALL'
      • 故障切换:与原始模式一样

       

    • 复制模式:在后台程序间启用了数据复制

      • replication_mode 设置为 true 以启用复制模式。默认值为 false。
      • load_balance_mode 当设置为 true 时,SELECT 查询将被分发到每个后台程序上用于负载均衡。默认值为 false。本参数必须在服务器启动前设置。
      • 故障切换:pgpool-II 退化一个死掉的后台并继续提供服务。只要最少还有一个后台还活着,服务就可以继续。

       

    • 主备模式流复制以及它们的故障恢复详细描述参考:http://www.pgpool.net/docs/pgpool-II-3.2.1/pgpool-zh_cn.html#master_slave_mode

    • 并行模式:本模式实现了查询的并行执行。表可以被分割,数据分布在每个节点中。而且,复制和负载均衡功能也可以同时使用。在并行模式中,pgpool.conf 中的 replication_mode 和 load_balance_mode 被设置为 ture,master_slave 被设置为 false,parallel_mode 被设置为 false。当你改变这些参数后,需要重启 pgpool-II

    五、pgpool的优点  

    • 1、不用修改程序 
    • 2、PHP, Perl, Java等等语言都可以操作,没有语言限制  
    • 3、prefork型体系架构 
    • 4、可以限制访问 PostgreSQL 连接数  
    • 5、故障转移功能  
    • 6、配备的复制功能  
    • 7、配备了负载 平衡  

    六、pgpool的缺点  

    • 1、增加系统开销  
    • 2、不支持所有的.libpq协议  
    • 3、template1,regression等名字数据库没有映射到池里面  
    • 4、没有及时删除临时表,8.3以后reset_query_list设置为 "DISCARD ALL"的 话 可以解决这个问题 。  
    • 5、没有及时删除 PREPARE,8.3以后reset_query_list设置为 "DISCARD ALL"的话可以解决这个问题  。

    七、安装及使用总结

    • pgpool当开启replication复制模式时,各个数据节点都会有相同的数据(会有主从之分),实现数据备份的功能,因为会将数据复制到各个数据节点,所有复制模式适用于存储量小,查询量大的情况(因为启用负载均衡会使查询变得更快)
    • 当重新配置其各种模式,需要重启服务器,并将路径下/tmp/pgpool_status文件清空,配置才能生效
    • 在pgpool中的负载均衡模式下,select查询将被分发到每个后台程序上用于负载均衡(好像pgpool中的负载均衡只是针对查询来做的,和pgxc的插入数据时的负载均衡有区别)
  • 相关阅读:
    https单向证书
    单例模式再学习
    sql经常出现死锁解决办法
    sqlserver结束和监视耗时的sql
    如何保持进步
    es6-学习
    javascript修改div大小遮挡页面渲染问题
    报表功能设计思考-初步尝试-第一次
    导出统计数据-经验积累-深入1
    Java中数据类型转换&基本类型变量和对象型变量
  • 原文地址:https://www.cnblogs.com/eagle-dtq/p/4288618.html
Copyright © 2011-2022 走看看