Estou projetando um processo para testar meus backups postgresql 10.8 restaurando-os em um ponto aleatório no tempo em uma máquina virtual descartável. No entanto, não consegui automatizar totalmente o processo. Estou bloqueado na etapa 8 (seção 25.3.4) da documentação oficial
- Inicie o servidor.
Ao executar o pg_ctl start
over ssh, o comando trava até ser morto. Se eu ssh diretamente na VM e executar pg_ctl start
, o comando retornará rapidamente conforme o esperado.
Este tópico de 2012 parece descrever um cenário semelhante. No meu caso, no entanto , o processo postgres inicia com sucesso, mesmo se a sessão de chamada for encerrada enquanto estiver suspensa (possivelmente uma melhoria entre 9.0.5 e 10.8?).
Este problema do github parece relevante, mas infelizmente é "resolvido" por uma longa reescrita em um idioma que não conheço e conclui finalmente que é um bug no pg_ctl
binário.
A Grande Questão
Como posso automatizar a etapa 8 para continuar com os testes de validação subsequentes da minha mídia de backup?
Este é um bug pendente no binário que eu preciso hackear? Ou eu perdi uma implementação sensata?
Parece que
pg_ctl
quer um terminal real para saída, que não é alocadossh
quando você simplesmente pede para executar um comando. De acordo com o manual do PostgresPortanto, você precisa dizer
ssh
para alocar um terminal parapg_ctl
usar as-t
opções (ssh -t somehost "pg_ctl start"
) ou dizerpg_ctl
para não gravar no terminal (ssh somehost "pg_ctl start >/dev/null"
oussh somehost "pg_ctl start -l /tmp/start.log "
)