pg_reload_conf()

指示 PostgreSQL 重新加载其配置的系统函数

pg_reload_conf() 是一个系统函数,通过发送 SIGHUP 信号来指示 PostgreSQL 重新加载其配置。

pg_reload_conf() 添加于 PostgreSQL 8.1

用法

pg_reload_conf() → boolean

请注意,pg_reload_conf() 返回的布尔值仅指示 PostgreSQL 是否能够成功发出信号,而不是配置是否成功重新加载。

查询 pg_file_settingspg_hba_file_rules 视图以检查 postgresql.confpg_hba.conf 文件中是否存在可能的错误。

替代方案

PostgreSQL 还可以通过以下方法之一来指示重新加载其配置

  • 直接向 postmaster 进程发送 SIGHUP 信号
  • 执行 pg_ctl reload

当然,完全重启 PostgreSQL 实例也会导致读取新的配置。

更改历史记录

示例

pg_reload_conf() 的基本用法示例

postgres=# SELECT pg_reload_conf();
 pg_reload_conf 
----------------
 t
(1 row)

使用无效的配置项执行 pg_reload_conf()

postgres=# SELECT * FROM pg_file_settings WHERE applied IS FALSE;
           sourcefile           | sourceline | seqno | name | setting | applied |            error
--------------------------------+------------+-------+------+---------+---------+------------------------------
 /var/lib/pgsql/postgresql.conf |          3 |    22 | port | foo     | f       | setting could not be applied
(1 row)

postgres=# SELECT pg_reload_conf();
 pg_reload_conf 
----------------
 t
(1 row)

在这种情况下,PostgreSQL 日志文件中将显示以下错误消息

[2021-04-14 09:02:13 UTC]    LOG:  00000: received SIGHUP, reloading configuration files
[2021-04-14 09:02:13 UTC]    LOG:  22023: invalid value for parameter "port": "foo"
[2021-04-14 09:02:13 UTC]    LOG:  F0000: configuration file "/var/lib/pgsql/postgresql.conf" contains errors; unaffected changes were applied

分类

配置管理/维护系统函数

另请参阅

pg_conf_load_time()pg_file_settingspg_hba_file_rulespg_ctl

反馈

提交关于 "pg_reload_conf()" 的任何评论、建议或更正 此处