Estou tendo problemas para configurar o pgPool-II 3.7.5 para recuperação online. Em pgpool.conf
, há um parâmetro chamado recovery_user
junto com um recovery_password
que de alguma forma é usado para executar recovery_1st_stage_command
.
Os documentos do pgPool dizem recovery_user
:
Especifica o nome de usuário do PostgreSQL para executar a recuperação online.
Para mim, isso indica muito claramente que recovery_user é o nome de um usuário do PostgreSQL (função no banco de dados). No entanto, em uma versão anterior dos documentos, também diz
Você precisa configurar o ssh para que recovery_user possa fazer login do primário para o standby sem que seja solicitada uma senha.
que indica claramente que recovery_user deve ser um usuário do sistema. Concedido, esta é a documentação de versões bastante diferentes, mas é difícil para mim acreditar que a implementação desse recurso mudou dessa maneira.
Qual é, é recovery_user
uma função de banco de dados ou um usuário de servidor?
Bônus: Por favor, explique como o pgPool-II orquestra a execuçãorecovery_1st_stage_command
Eu não uso pgpool, mas deve ser o usuário do sistema operacional que executa o servidor de banco de dados. Ele não pode ser um usuário dentro do banco de dados PostgreSQL, pois um banco de dados com falha não pode aceitar conexões até que seja recuperado.
Posso verificar que recovery_user não é um usuário do sistema, é uma função de banco de dados! O pgPool usa um protocolo chamado PCP para executar scripts em seus nós gerenciados e o PCP se conecta através do banco de dados, executando funções pgpool personalizadas instaladas que executam o script de recuperação. Essas funções são instaladas instalando o pacote do sistema (apt, yum, qualquer que seja)
pgpool-II-extensions
e, em seguida, executandoCREATE EXTENSION pgpool_recovery;
em seu banco de dados.Infelizmente, parece haver um problema com o pgPool realmente executando a
pgpool_recovery
função via PCP, mas isso é para uma nova pergunta.