我在为在线恢复配置 pgPool-II 3.7.5 时遇到问题。在pgpool.conf
中,有一个参数recovery_user
与一个recovery_password
以某种方式用于运行的参数一起调用recovery_1st_stage_command
。
pgPool文档说recovery_user
:
指定进行在线恢复的PostgreSQL用户名。
对我来说,这非常清楚地表明 recovery_user 是 PostgreSQL 用户(数据库中的角色)的名称。但是,在以前版本的文档中,它还说
您需要设置 ssh 以便 recovery_user 可以从主服务器登录到备用服务器而无需输入密码。
这清楚地表明 recovery_user 应该是系统用户。当然,这是来自完全不同版本的文档,但我很难相信此功能的实现会以这种方式发生变化。
是recovery_user
数据库角色还是服务器用户?
奖励:请解释 pgPool-II 如何协调运行recovery_1st_stage_command
我没有使用 pgpool,但它必须是运行数据库服务器的 OS 用户。它不能是 PostgreSQL 数据库中的用户,因为失败的数据库在恢复之前无法接受连接。
我可以验证recovery_user不是系统用户,是数据库角色!pgPool 使用称为 PCP 的协议在其托管节点上运行脚本,PCP 通过数据库连接,运行自定义安装的运行恢复脚本的 pgpool 函数。这些功能是通过为数据库安装系统包(apt、yum 等)
pgpool-II-extensions
然后CREATE EXTENSION pgpool_recovery;
在数据库中运行来安装的。不幸的是,pgPool 实际上通过 PCP 执行函数似乎存在问题,但这是
pgpool_recovery
一个新问题。