热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

PostgreSQL12版本预览:分离max_wal_senders和max_connections的连接槽处理

本文介绍了PostgreSQL12中的一项重要改进,即max_wal_senders参数不再计入max_connections,从而解决了流复制连接槽不足的问题。

作者

digoal


日期

2019-03-09


标签

PostgreSQL, max_wal_senders, max_connections, 连接槽管理




背景

在 PostgreSQL 中,流复制功能依赖于 wal sender 进程来传输写前日志(WAL)。这些进程用于支持物理复制、逻辑复制以及 pg_basebackup 备份等操作。每个使用流协议的连接都需要一个 wal sender 进程。

在 PostgreSQL 12 之前的版本中,max_wal_senders 参数是计入 max_connections 的。这意味着,如果普通用户连接占用了所有可用的连接槽,流复制连接可能会因为没有足够的 wal sender 进程而失败。

为了解决这一问题,PostgreSQL 12 将 max_wal_senders 参数独立出来,不再计入 max_connections。这样,普通连接和流复制连接之间就不会互相干扰。

此外,从节点(standby)的 max_wal_senders 参数必须大于或等于主节点(primary)的 max_wal_senders 参数,以确保从节点能够处理所有来自主节点的流复制连接。

相关提交:https://git.postgresql.org/gitweb/?p=postgresql.git;a=commit;h=ea92368cd1da1e290f9ab8efb7f60cb7598fc310

```
将 max_wal_senders 从 max_connections 中分离出来,独立管理连接槽

自 max_wal_senders 引入以来,在计算可用于复制连接的连接槽数量时,它一直被计入 max_connections。这可能导致一些用户在其他后端会话已被应用程序占用的情况下,无法进行基线备份或复制。超级用户专用连接槽并不是解决此问题的正确方法。

此次提交使 max_wal_senders 在处理 PGPROC 条目时独立于 max_connections,意味着 wal sender 连接槽将使用自己的空闲队列进行管理,类似于自动清理工作进程和后台工作进程。

这一变更带来的兼容性问题是,从节点现在需要具有至少等于其主节点的 max_wal_senders 值。因此,如果从节点的 max_wal_senders 设置低于主节点,可能会导致故障转移失败。不过,通常情况下这不会成为问题,因为从节点的设置通常继承自主节点,postgresql.conf 文件通常会在基线备份过程中被复制,确保参数的一致性。
```


参考

《PostgreSQL 拒绝服务DDOS攻击与防范》


PostgreSQL 许愿链接

您的愿望将传达给 PG 内核开发者、数据库厂商等,帮助提高数据库产品的质量和功能。针对非常好的提议,奖励限量版 PG 文化衫、纪念品、贴纸、PG 热门书籍等,奖品丰富,快来许愿吧!


9.9元购买3个月阿里云 RDS PostgreSQL 实例


PostgreSQL 解决方案集合


德哥 / digoal's github - 公益是一辈子的事.

digoal


推荐阅读
  • 本文档介绍了如何在Visual Studio 2010环境下,利用C#语言连接SQL Server 2008数据库,并实现基本的数据操作,如增删改查等功能。通过构建一个面向对象的数据库工具类,简化了数据库操作流程。 ... [详细]
  • 主调|大侠_重温C++ ... [详细]
  • 使用JS、HTML5和C3创建自定义弹出窗口
    本文介绍如何结合JavaScript、HTML5和C3.js来实现一个功能丰富的自定义弹出窗口。通过具体的代码示例,详细讲解了实现过程中的关键步骤和技术要点。 ... [详细]
  • 软件工程课堂测试2
    要做一个简单的保存网页界面,首先用jsp写出保存界面,本次界面比较简单,首先是三个提示语,后面是三个输入框,然 ... [详细]
  • 本文介绍了如何通过在数据库表中增加一个字段来记录文章的访问次数,并提供了一个示例方法用于更新该字段值。 ... [详细]
  • 深入解析Hadoop的核心组件与工作原理
    本文详细介绍了Hadoop的三大核心组件:分布式文件系统HDFS、资源管理器YARN和分布式计算框架MapReduce。通过分析这些组件的工作机制,帮助读者更好地理解Hadoop的架构及其在大数据处理中的应用。 ... [详细]
  • 本文深入探讨了MySQL中常见的面试问题,包括事务隔离级别、存储引擎选择、索引结构及优化等关键知识点。通过详细解析,帮助读者在面对BAT等大厂面试时更加从容。 ... [详细]
  • 本文探讨了如何利用HTML5和JavaScript在浏览器中进行本地文件的读取和写入操作,并介绍了获取本地文件路径的方法。HTML5提供了一系列API,使得这些操作变得更加简便和安全。 ... [详细]
  • ListView简单使用
    先上效果:主要实现了Listview的绑定和点击事件。项目资源结构如下:先创建一个动物类,用来装载数据:Animal类如下:packagecom.example.simplelis ... [详细]
  • 深入剖析JVM垃圾回收机制
    本文详细探讨了Java虚拟机(JVM)中的垃圾回收机制,包括其意义、对象判定方法、引用类型、常见垃圾收集算法以及各种垃圾收集器的特点和工作原理。通过理解这些内容,开发人员可以更好地优化内存管理和程序性能。 ... [详细]
  • MySQL Debug 模式的实现与应用
    本文详细介绍了如何启用和使用 MySQL 的调试模式,包括编译选项、环境变量配置以及调试信息的解析。通过实际案例展示了如何利用调试模式解决客户端无法连接服务器的问题。 ... [详细]
  • 本文探讨了如何使用pg-promise库在PostgreSQL中高效地批量插入多条记录,包括通过事务和单一查询两种方法。 ... [详细]
  • 本文详细介绍了如何使用 HTML 和 CSS 对文件上传按钮进行样式美化,使用户界面更加友好和美观。 ... [详细]
  • 配置PHPStudy环境并使用DVWA进行Web安全测试
    本文详细介绍了如何在PHPStudy环境下配置DVWA( Damn Vulnerable Web Application ),并利用该平台进行SQL注入和XSS攻击的练习。通过此过程,读者可以熟悉常见的Web漏洞及其利用方法。 ... [详细]
  • 本文详细介绍了Java中实现异步调用的多种方式,包括线程创建、Future接口、CompletableFuture类以及Spring框架的@Async注解。通过代码示例和深入解析,帮助读者理解并掌握这些技术。 ... [详细]
author-avatar
小小一株含羞草2010
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有