postgresql 配置文件 与 修改配置如何启用

本文介绍了如何在PostgreSQL(PG)中管理数据库参数,特别是通过视图pg_settings了解不同参数的生效策略,如max_connections需重启服务,而max_standby_archive_delay和max_standby_streaming_delay只需发送SIGHUP信号即可。还提供了使用pg_ctl或psql客户端进行配置重载的实际操作示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

0. 前言

pg数据库有众多参数,当修改某些参数后,想让其生效但又不想随意重启数据库时,该怎么办呢?
上网查询发现pg_settings 这个东西,视图pg_settings提供了对服务器上运行时参数的访问

  • 文章PG文档参考链接: http://postgres.cn/docs/12/view-pg-settings.html

1.PG的配置生效策略

视图pg_settings的context字段告诉我们哪些配置项需要重启数据库实例、哪些配置项仅需要重新加载配置文件即可无需重启服务

select name, context from pg_settings

context 的值指示具体策略,有以下几种:

  • internal: 编译期间的设置,只有重新编译才能生效。
  • postmaster: 只有服务重启才能生效。
  • sighup: 给服务器发送HUP信号会是服务器重新加载postgresql.conf配置,可以立即生效(无需重启数据库实例)。
  • backend: 与sighup类似,但是不影响正在运行的会话,只在新会话中生效
  • superuser: 使用superuser(如postgres)才能更改,不用重新加载所有配置即可生效。
  • user: 单个会话用户可以在任意时间做修改,只会影响该会话。

pg中执行以下SQL

select name, context from pg_settings
where name like ‘%max%’

中我们可以摘取部分结果集如下

namecontext
max_connectionspostmaster
max_standby_archive_delaysighup
max_standby_streaming_delaysighup

可以从结果集中得出结论

  • max_connections 需要修改配置文件后重启数据库实例服务
  • max_standby_archive_delay、max_standby_streaming_delay仅需要重新加载配置文件postgresql.conf

2 sighup 重新加载数据库 实操

以max_standby_archive_delay、max_standby_streaming_delay为例,由于他们的context的值是 sighup,发送一个SIGHUP信号给postmaster会导致它重新读取postgresql.conf并应用修改

我们有很多方法来实现,下面是我操作的两种

  • 超级用户运行sql :postgres=# SELECT pg_reload_conf();
  • 在pg的bin目录下执行:./pg_ctl reload

当然,也可以用 psql 这些pg客户端执行sql语句修改配置项也是可以的
类似

./psql -c "ALTER SYSTEM SET max_standby_archive_delay TO  300000"
./psql -c "SELECT pg_reload_conf()"

./psql -c "ALTER SYSTEM SET max_standby_streaming_delay TO  300000"
./psql -c "SELECT pg_reload_conf()"
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值