关于primary_conninfo 参数相关详解

简介

当我们在搭建同步流复制异步流复制都会涉及到primary_conninfo参数的配置,此参数涉及的关键字值远不止文章中提及的。

该参数主要用于从库用于链接主库的一些链接配置信息。对于生产中安全链接,尤为重要。

可选配置

host 

参数接受主机名和 IP 地址,并且还可以使用 Unix 域套接字路径。它可以接受主机名的别名,并且支持 DNS 解析。如果你指定了主机别名,PostgreSQL 将通过 DNS 解析找到实际的主机地址进行连接。接受逗号分隔的主机名列表(host=10.0.0.200,10.0.0.199,10.0.0.198  将依次尝试列表中的地址直至连接上)

hostaddr 

参数仅接受主机的 IP 地址。不支持主机名或 Unix 域套接字路径。使用 hostaddr 参数时,PostgreSQL 不会进行 DNS 解析,而是直接使用指定的 IP 地址进行连接。接受逗号分隔的主机名列表(host=10.0.0.200,10.0.0.199,10.0.0.198  将依次尝试列表中的地址直至连接上)

port

链接数据库的端口号。接受逗号分隔端口号(port=123,235,568,456  将依次尝试列表中的端口号直至链接成功)

dbname

数据库名。在未指定的情况下,默认和用户名相同。

user

用于链接到主库,主库上的用户名

password

指定的user的登录密码

passfile

指定用于存放口令的文件名。默认是~/.pgpass

channel_binding

这个选项控制客户端对通道绑定的使用。设置require意味着连接必须使用通道绑定,prefer意味着客户端将在可用时选择通道绑定,而disable阻止使用通道绑定。 默认值为prefer,如果PostgreSQL编译时带有支持SSL;否则默认为disable

connect_timeout

连接时的最大等待时间,以秒为单位(写作一个十进制整数,例如10)。零、负值或者不指定表示无限等待。允许的最小超时是2秒,因此值1会被解释为2。这个超时单独应用于每个主机名或者IP地址。例如,如果指定两个主机并且connect_timeout为5,每个主机都会在5秒内没有建立起连接的情况下超时,因此花费在等待连接上的总时间可能高达10秒。

client_encoding

为连接设置client_encoding配置参数。除了被相应服务器选项所接受的值,你还能使用auto从客户端的当前区域(Unix 系统上的LC_CTYPE环境变量)决定正确的编码。

application_name

application_name配置参数指定一个值。同步流复制时候的应用。

fallback_application_name

application_name配置参数指定一个后补值。如果通过一个连接参数或PGAPPNAME环境变量没有为application_name给定一个值,将使用这个值。在希望设置一个默认应用名但不希望它被用户覆盖的一般工具程序中指定一个后补值很有用。

keepalives

控制是否使用客户端的 TCP 保持存活机制。默认值是 1,表示打开。但是如果不想要保持存活机制,你可以改成 0 表示关闭。对于通过一个 Unix 域套接字建立的连接会忽略这个参数。它可以帮助定位失效或空闲状态的连接,并采取适当的措施。

keepalives_idle

控制非活动多少秒之后 TCP 应该向服务器发送一个存活消息。零值表示使用系统默认值。对于一个通过 Unix 域套接字建立的连接将忽略这个参数,如果保持存活机制被禁用也将忽略这个参数。它只被TCP_KEEPIDLE或等效的套接字选项可用的系统以及 Windows支持,在其他系统上,它没有效果。

keepalives_interval

控制一个 TCP 存活消息没有被服务器认可多少秒之后应该被重传。零值表示使用系统默认值。对于一个通过 Unix 域套接字建立的连接将忽略这个参数,如果保持存活机制被禁用也将忽略这个参数。它只被TCP_KEEPINTVL或等效的套接字选项可用的系统以及 Windows支持,在其他系统上,它没有效果。

keepalives_count

控制该客户端到服务器的连接被认为死亡之前可以丢失的 TCP 存活消息数量。零值表示使用系统默认值。对于一个通过 Unix 域套接字建立的连接将忽略这个参数,如果保持存活机制被禁用也将忽略这个参数。它只被TCP_KEEPCNT或等效的套接字选项可用的系统以及 Windows支持,在其他系统上,它没有效果。

tcp_user_timeout

在强制关闭连接之前,控制传输数据的毫秒数可能保持未确认。 值为零使用系统默认值。对于通过 Unix 域套接字进行的连接,将忽略此参数。 它仅在TCP_USER_TIMEOUT可用的系统上支持;对其他系统,它没有任何影响。

tty

被忽略(之前,这指定向哪里发送服务器调试输出)。

replication

这个选项决定是否该连接应该使用复制协议而不是普通协议。这是PostgreSQL的复制连接以及pg_basebackup之类的工具在内部使用的协议,但也可以被第三方应用使用。

支持下列值,大小写无关:

trueonyes1: 连接进入到物理复制模式。

database:连接进入到逻辑复制模式,连接到dbname参数中指定的数据库。

falseoffno0:该连接是一个常规连接,这是默认行为。

在物理或者逻辑复制模式中,仅能使用简单查询协议。

gssencmode

此选项确定是否与服务器协商安全GSS TCP/IP 连接是否或具有什么优先级。有三种模式:

disable:仅尝试非GSSAPI加密的连接。

prefer (default):如果存在GSSAPI凭据(即凭据缓存中),先尝试GSSAPI加密连接; 如果失败或没有凭据,则尝试非GSSAPI加密连接。 当PostgreSQL已使用GSSAPI支持编译时,这是默认值。

require:仅尝试GSSAPI加密连接。

对于Unix 域套接字通信,gssencmode被忽略。 如果PostgreSQL是在没有 GSSAPI 支持的情况下编译的,使用require选项将导致错误, 而prefer将被接受,但libpq实际上不会尝试GSSAPI加密连接。

sslmode

这个选项决定一个SSL TCP/IP连接是否将与服务器协商,或者决定以何种优先级协商。有六种模式:

disable:只尝试非SSL连接

allow:首先尝试非SSL连接,如果失败再尝试SSL连接

prefer(默认):首先尝试SSL连接,如果失败再尝试非SSL连接

require:只尝试SSL连接。如果存在一个根 CA 文件,以verify-ca被指定的相同方式验证该证书

verify-ca:只尝试SSL连接,并且验证服务器证书是由一个可信的证书机构颁发的(CA

verify-full:只尝试SSL连接,验证服务器证书是由一个可信的CA颁发并且请求的服务器主机名匹配证书中的主机名

对于 Unix 域套接字通信,sslmode会被忽略。如果PostgreSQL被编译为不带 SSL 支持,使用选项requireverify-caverify-full将导致错误,而选项allowprefer将会被接受但是libpq将不会真正尝试SSL连接。

requiressl

为了支持sslmode模式,这个选项已被废弃。

如果设置为 1,则要求一个到服务器的SSL连接(这等效于sslmode=require)。如果服务器不接受SSL连接,libpq则将拒绝连接。如果设置为 0(默认),libpq将与该服务器协商连接类型(等效于sslmode=prefer)。只有PostgreSQL被编译为带有 SSL 支持,这个选项才可用。

sslcompression

如果设置为1,通过SSL连接发送的数据将被压缩。如果设置为0,压缩将被禁用。默认值为0。如果建立的连接没有使用SSL,则这个参数会被忽略。

现如今SSL压缩被认为是不安全的,因此已经不再推荐使用。OpenSSL 1.1.0默认禁用压缩,并且很多操作系统发行版在前面的版本中也将其禁用,因此如果服务器不接受压缩,将这个参数设置为on不会有任何效果。

如果安全性不是主要考虑的问题,在网络是瓶颈的情况下,压缩能够改进吞吐量。如果CPU性能是受限的因素,禁用压缩能提高响应时间和吞吐量。

sslcert

这个参数指定客户端 SSL 证书的文件名,它替换默认的~/.postgresql/postgresql.crt。如果没有建立 SSL 连接,这个参数会被忽略。

sslkey

这个参数指定用于客户端证书的密钥位置。它能指定一个会被用来替代默认的~/.postgresql/postgresql.key的文件名,或者它能够指定一个从外部“引擎”(引擎是OpenSSL的可载入模块)得到的密钥。一个外部引擎说明应该由一个冒号分隔的引擎名称以及一个引擎相关的关键标识符组成。如果没有建立 SSL 连接,这个参数会被忽略。

sslpassword

此参数指定在sslkey中指定的密钥的密码,在交互式密码短语输入不实用时,允许客户端证书私钥以加密形式存储在磁盘上。

指定该参数为任何非空值,阻止Enter PEM pass phrase: 提示OpenSSL将默认发出,在向libpq提供加密的客户端证书密钥时。

如果密钥未加密则忽略此参数。该参数对OpenSSL引擎指定的密钥没有影响,除非引擎使用OpenSSL密码回调机制进行提示。

        可以在服务文件连接定义中使用。有更复杂用途的用户应该考虑使用openssl引擎和工具,例如PKCS#11或USB加密卸载设备。

sslrootcert

这个参数指定一个包含 SSL 证书机构(CA)证书的文件名称。如果该文件存在,服务器的证书将被验证是由这些机构之一签发。默认值是~/.postgresql/root.crt

sslcrl

这个参数指定 SSL 证书撤销列表(CRL)的文件名。列在这个文件中的证书如果存在,在尝试认证该服务器证书时会被拒绝。默认值是~/.postgresql/root.crl

requirepeer

这个参数指定服务器的操作系统用户,例如requirepeer=postgres。当建立一个 Unix 域套接字连接时,如果设置了这个参数,客户端在连接开始时检查服务器进程是运行在指定的用户名之下。如果发现不是,该连接会被一个错误中断。这个参数能被用来提供与 TCP/IP 连接上 SSL 证书相似的服务器认证(注意,如果 Unix 域套接字在/tmp或另一个公共可写的位置,任何用户能开始一个在那里监听的服务器。使用这个参数来保证你连接的是一个由可信用户运行的服务器)。这个选项只在实现了peer认证方法的平台上受支持

ssl_min_protocol_version

此参数规定了允许连接的最小SSL/TLS协议版本。有效值为TLSv1,TLSv1.1TLSv1.2 和 TLSv1.3。 所支持的协议取决于所使用的OpenSSL版本,旧版本不支持最新的协议版本。如果没有指定,则默认为TLSv1.2

ssl_max_protocol_version

此参数指定允许连接的最大SSL/TLS协议版本。有效值为TLSv1,TLSv1.1TLSv1.2 和 TLSv1.3。 所支持的协议取决于所使用的OpenSSL版本,旧版本不支持最新的协议版本。 如果未设置,这个参数会被忽略,并且连接将使用后端定义的最大绑定。设置最大协议版本主要用于测试或某些组件在使用新协议时出现问题。

krbsrvname

当用 GSSAPI 认证时,要使用的 Kerberos 服务名。为了让 Kerberos 认证成功,这必须匹配在服务器配置中指定的服务名

gsslib

用于GSSAPI身份验证的GSS库。目前,除了在包含GSSAPI和SSPI支持的Windows构建中,这一点被忽略了。 在这种情况下,将此设置为gssapi使 libpq 使用 GSSAPI 库进行身份验证,而不是默认 SSPI。

service

用于附加参数的服务名。它指定保持附加连接参数的pg_service.conf中的一个服务名。这允许应用只指定一个服务名,这样连接参数能被集中维护

target_session_attrs

如果这个参数被设置为read-write,只有默认接受读写事务的连接才是可接受的。在任何成功的连接上将发出查询SHOW transaction_read_only,如果它返回on则连接将被关闭。如果在连接字符串中指定了多个主机,只要连接尝试失败就会尝试剩余的服务器。这个参数的默认值any认为所有连接都可接受。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值