什么是 Pgpool-II?
Pgpool-II 是一个向 PostgreSQL 添加有用功能的工具,包括:
- 连接池
- 负载均衡
- 自动故障转移等等。
次要版本
Pgpool 全球开发集团很高兴地宣布推出以下版本的 Pgpool-II:
- 4.4.4
- 4.3.7
- 4.2.14
- 4.1.17
- 4.0.24
发行说明:https://www.pgpool.net/docs/latest/en/html/release.html
源代码下载:https://pgpool.net/mediawiki/index.php/Downloads
Pgpool-II 4.4.4发行说明
A.1. 版本4.4.4
发布日期: 2023-08-17
A.1.1。变化
仅在共享内存初始化后安装系统退出回调。(穆罕默德·乌萨马)
当由于无法获取共享内存而调用退出回调时。清理函数在访问共享内存中的 process_info 时可能会产生段错误。虽然我们也可以通过当 process_info 为 NULL 时从退出回调中退出来解决此问题,但在成功初始化共享内存后安装该函数是更好的方法,因为系统的其余部分始终假设 process_info 永远不会为 NULL,而且,在生成子进程之前没有什么需要清理的。
当process_management_mode设置为“dynamic”时 ,不允许将max_spare_children设置为大于num_init_children 。(穆罕默德·乌萨马)
如果num_init_children小于max_spare_children , 配置后处理阶段现在会抛出错误。Commit 还根据配置的进程管理策略调整启动时生成的子进程的数量。对于 Aggressive 策略,生成max_spare_children进程数;对于其他两种策略,min_spare_children子级数在启动时创建。
降级日志消息。(石井达夫)
https://www.pgpool.net/mantisbt/view.php?id=806 中指出 日志文件中有日志条目:
日志:pool_pending_message_set_flush_request:msg:解析
这些消息用于调试,日志级别应该是 DEBUG*。所以我将日志级别从LOG更改为DEBUG5。
为某些系统目录查询功能添加模式限定。(石井达夫)
A.1.2。Bug修复
修复覆盖警告。(石井达夫)
修复查询缓存模块将 time_t 值分配给 int32 变量的问题。将变量类型更改为 int64。根据覆盖性。还可以使用 difftime() 来计算 time_t 差异。这是推荐的做法。 https://www.jpcert.or.jp/sc-rules/c-msc05-c.html
修复 find_primary_node_repeatedly 不会在search_primary_node_timeout内终止。(彭博)
修复使用 v2 协议时的崩溃问题。( bug 807 ) (Tatsuo Ishii)
当read_kind_from_backend()累积统计数据时,它没有为v2协议情况做好准备。
来自 MCanivez 的错误报告和补丁。被我稍微修改了一下。
修复多语句情况下的PREPARE 。(石井达夫)
如果多语句查询在第二个或后面的位置包含 PREPARE ,并且后续绑定消息使用准备好的语句,则会失败并出现“无法绑定”错误,因为准备好的语句未保存在发送的消息中。
如果在解析语句后发现这种情况,要解决此问题,请为指定语句创建查询上下文并将其添加到已发送消息列表中。
讨论:https ://www.pgpool.net/pipermail/pgpool-general/2023-July/008931.html
对于这个新的回归测试,添加了 079..multi_prepare。
修复 pgproto 以使用参数处理绑定消息。(石井达夫)
以前 pgproto 只能处理没有参数的绑定消息。
修复日志消息中的拼写错误。(彭博)
修复缺失的 CTE SEARCH 和 CYCLE 重写。(彭博)
在本机复制模式下,Pgpool-II需要将日期/时间函数重写为 WRITE 查询中的时间戳。CTE SEARCH 和 CYCLE 重写丢失。
删除了 src/sample/pgpool.conf.sample-stream 中重复的 pcp_listen_address 设置。(彭博)
防止共享锁下的查询缓存更新。(石井达夫)
在错误 795中,有人指出可以在共享锁下修改过期的查询缓存条目。这可能会导致查询缓存使用的共享内存损坏。为了解决这个问题,我们暂时释放共享锁,然后在修改缓存条目之前获取排它锁。这可能会创建一个窗口,我们需要再次获取缓存条目元数据以确保元数据没有被其他人修改。
向后补丁到 V4.4 稳定版,其中引入了查询缓存的共享锁定。
修复delay_threshold_by_time和prefer_lower_delay_standby。(石井达夫)
自从4.4 中引入 delay_threshold_by_time 以来,它们就被破坏了。
在 where_to_send 中未检查delay_threshold_by_time 。当复制延迟时,这会破坏负载平衡。
如果同时启用了 delay_threshold_by_time 和prefer_lower_standby_delay ,则select_load_balancing_node 会被破坏。
为了解决该问题,修复了 where_to_send 和 select_load_balancing_node。还将delay_threshold_by_time的测试用例添加 到033.prefer_lower_standby_delay。
讨论:https://www.pgpool.net/pipermail/pgpool-general/2023-June/008864.html
修复replication_mode_recovery_2nd_stage.sample 示例脚本中错误的变量名称。(彭博)
A.1.3。文件
修复丢失的“logger”应用程序名称。(彭博)
明确停止模式的含义。(石井达夫)
从发行说明 4.2.10 中删除不正确的信息。(彭博)
从发行说明 4.2.10 中删除“修复 pgpool_recovery 扩展脚本。(Tatsuo Ishii)”。
增强“8.2. Pgpool-II + Watchdog 设置示例”中的 SSH 公钥验证设置部分。(彭博)
修复负载平衡模式章节。(石井达夫)
有些地方“流复制模式”被写成“本机复制模式”。还增强了有关流式复制模式中负载平衡的附加要求的描述。添加一些索引。
增强在线恢复文档。(彭博)
需要指出的是,在线恢复的第二阶段仅对于未启用看门狗的多个 pgpool 节点无法正常工作。
A.1.4。回归测试
修复偶尔出现的 069.memory_leak_extended 测试失败问题。(石井达夫)
事实证明,偶尔测试失败的原因是,在 pgbench 完成后运行 ps 命令之前,pgpool 子进程就消失了。原因是类型不匹配致命错误,“DISCARD ALL 无法在管道内执行”。要解决此问题,请在后台运行 pgbench 并在 pgbench 完成之前获取进程大小。
讨论:https ://www.pgpool.net/pipermail/pgpool-hackers/2023-May/004338.html




