暂无图片
暂无图片
1
暂无图片
暂无图片
暂无图片

PgSQL 16 - 新特性 - reserved_connections

yanzongshuaiDBA 2023-12-05
491
PgSQL 16 - 新特性 - reserved_connections
PgSQL16中新加了一个新特性:新增reserved_connections。DBA和软件开发工程师经常使用超级用户(比如postgres)进行维护等操作。然而,在安全性方面,这并不是一个理想的操作。多年来,已经添加了一些功能来减少使用这种高度特权的系统连接方式的需要,而预留连接是另一种方法。

1、调整PgSQL中的连接参数

PG16中可以看到3个主要的连接参数:
    postgres=# SHOW max_connections;
    max_connections
    -----------------
    100
    (1 row)

    postgres=# SHOW superuser_reserved_connections;
    superuser_reserved_connections
    --------------------------------
    3
    (1 row)

    postgres=# SHOW reserved_connections;
    reserved_connections
    ----------------------
    0
    (1 row)
    max_connections设置控制允许的总连接数。这是一个硬限制,更高该变量需要重新启动服务。superuser_reserved_connections仅共超级用户使用。
    本例中,意味着可以创建97个普通连接和3个超级用户连接(或100个超级用户连接,但不推荐这么做。因为需要可用的备用连接来执行维护和其他任务)。
    PG16中提供了一个新的附件配置项:reserved_connections。多年来,人们一直认为最好限制超级用户的使用。因此,引入了一个新的角色pg_use_reserved_connections。如果将普通用户(非超级用户)分配该角色,则可以访问预留连接池。即:我们创建了一个“近乎超级用户”,它可以进行各种维护,而无能力做出严重后果的动作。

    2、配置预留连接的角色

      postgres=# CREATE USER joe;
      CREATE ROLE
      postgres=# GRANT pg_use_reserved_connections TO joe;
      GRANT ROLE
      只需要两行,就可以完成。首先创建一个用户,然后将这个magic角色分配给它。如果设置reserved_connections为5,那么普通用户仅能使用92个连接,3个预留给超级用户,5个给pg_use_reserved_connections角色的用户。因此,当92个连接用完,joe仍旧可以连接并做些动作,比如使用pg_terminate_backend终结会话(如果joe也是pg_signal_backed角色的成员)。
      通常情况,有两种方式配置该参数。可以在postgresql.conf中配置,或者利用ALTER SYSTEM命令更改。

      3、原文

      https://www.cybertec-postgresql.com/en/connection-management-in-postgresql-reserved_connections/

      文章转载自yanzongshuaiDBA,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

      评论