此条目涉及一个已弃用的PostgreSQL功能,在未来的版本中可能会停止支持。
promote_trigger_file
是一个配置参数,用于指定文件的路径,如果该文件存在,则会导致备机提升为主机。
promote_trigger_file
在PostgreSQL 12中添加,取代了recovery.conf
参数trigger_file
,并在PostgreSQL 16中移除。
默认值
promote_trigger_file
的默认值为:''
(空字符串)。
用法
如果设置了promote_trigger_file
,并在指定位置放置了匹配的文件,则备机将自行提升为主机。
该文件可以为空。它必须可由运行PostgreSQL的系统用户读取,否则PostgreSQL实例将拒绝启动,或者在运行时终止。
在主节点上,即使指定位置不可访问,promote_trigger_file
也会被忽略。文件的存在不会有任何影响。
在PostgreSQL 9.0中,当引入流式复制时,promote_trigger_file
是将正在运行的备机提升为主机的唯一方法。通常,pg_ctl promote
(从PostgreSQL 9.1开始可用)和pg_promote()
函数(从PostgreSQL 12开始可用)提供了更便捷的方法来实现此目的。
按PostgreSQL版本分列详情
promote_trigger_file (PostgreSQL 15)
设置 | |
单位 | |
类别 | 复制/备机服务器 |
简短描述 | 指定一个文件名,其存在将结束备机的恢复。 |
额外描述 | |
上下文 | sighup |
变量类型 | 字符串 |
来源 | 默认值 |
最小值 | |
最大值 | |
枚举值 | |
启动值 | |
重置值 | |
源文件 | |
源代码行号 | |
挂起的重启 | false |
promote_trigger_file (PostgreSQL 14)
设置 | |
单位 | |
类别 | 复制/备机服务器 |
简短描述 | 指定一个文件名,其存在将结束备机的恢复。 |
额外描述 | |
上下文 | sighup |
变量类型 | 字符串 |
来源 | 默认值 |
最小值 | |
最大值 | |
枚举值 | |
启动值 | |
重置值 | |
源文件 | |
源代码行号 | |
挂起的重启 | false |
promote_trigger_file (PostgreSQL 13)
设置 | |
单位 | |
类别 | 复制/备机服务器 |
简短描述 | 指定一个文件名,其存在将结束备机的恢复。 |
额外描述 | |
上下文 | sighup |
变量类型 | 字符串 |
来源 | 默认值 |
最小值 | |
最大值 | |
枚举值 | |
启动值 | |
重置值 | |
源文件 | |
源代码行号 | |
挂起的重启 | false |
promote_trigger_file (PostgreSQL 12)
设置 | |
单位 | |
类别 | 复制/备机服务器 |
简短描述 | 指定一个文件名,其存在将结束备机的恢复。 |
额外描述 | |
上下文 | sighup |
变量类型 | 字符串 |
来源 | 默认值 |
最小值 | |
最大值 | |
枚举值 | |
启动值 | |
重置值 | |
源文件 | |
源代码行号 | |
挂起的重启 | false |
变更历史
- PostgreSQL 16
- (提交cd4329d9)
- PostgreSQL 12
- 添加(提交2dedf4d9)
示例
如果promote_trigger_file
设置为"/tmp/standby.trg
" 并且找到了相应的文件,PostgreSQL日志将包含如下条目
[2022-11-27 09:47:41 UTC] LOG: 00000: promote trigger file found: /tmp/standby.trg [2022-11-27 09:47:41 UTC] FATAL: 57P01: terminating walreceiver process due to administrator command [2022-11-27 09:47:41 UTC] LOG: 00000: invalid record length at 0/3000208: wanted 24, got 0 [2022-11-27 09:47:41 UTC] LOG: 00000: redo done at 0/30001D0 system usage: CPU: user: 0.00 s, system: 0.00 s, elapsed: 83.20 s [2022-11-27 09:47:41 UTC] LOG: 00000: selected new timeline ID: 2 [2022-11-27 09:47:41 UTC] LOG: 00000: archive recovery complete [2022-11-27 09:47:41 UTC] LOG: 00000: checkpoint starting: force [2022-11-27 09:47:41 UTC] LOG: 00000: database system is ready to accept connections
尝试将promote_trigger_file
设置为PostgreSQL无法访问的位置
[2022-11-27 09:51:18 UTC] LOG: 00000: received SIGHUP, reloading configuration files [2022-11-27 09:51:18 UTC] LOG: 00000: parameter "promote_trigger_file" changed to "/root/standby.trg" [2022-11-27 09:51:18 UTC] FATAL: 42501: could not stat promote trigger file "/root/standby.trg": Permission denied [2022-11-27 09:51:18 UTC] LOG: 00000: startup process (PID 2210329) exited with exit code 1 [2022-11-27 09:51:18 UTC] LOG: 00000: terminating any other active server processes [2022-11-27 09:51:18 UTC] LOG: 00000: shutting down due to startup process failure [2022-11-27 09:51:18 UTC] LOG: 00000: database system is shut down
参考文献
- PostgreSQL文档: promote_trigger_file