Estou lendo http://www.postgresql.org/docs/9.2/static/pgarchivecleanup.html e para mim parece que removerá todo e qualquer segmento WAL do meu servidor escravo que não seja necessário para executar a recuperação após o servidor slave travando (então basicamente tudo, exceto o último 1 ou alguns segmentos, dependendo de quão atrás meu slave está rodando). Eu gostaria de ser capaz de executar uma recuperação pontual de emergência no caso infeliz de corrupção de dados ou exclusão acidental, se possível. Para fazer isso, fico com as seguintes opções:
- Mantendo todos os segmentos do WAL desde que o último backup base foi criado (no meu caso, este é aquele a partir do qual o servidor escravo foi criado)
- Fazendo backups básicos o tempo todo ou fazendo algo com o PGBarman, etc.?
- Estou entendendo algo completamente errado?
Se a opção 1 for usada, presumo que o comando de limpeza do arquivo pg seja inútil para mim. Se a opção 2 for usada, é verdade que devo usar o comando de limpeza como pretendido (excluir todos os segmentos WAL extras imediatamente após serem confirmados)? Há algo mais que estou perdendo (consulte a opção 3)?
Nota: estou usando o Postgres 9.2.4
Você está correto. Se você deseja o recurso PITR, precisa manter todos os arquivos entre quando o backup básico foi feito e quando deseja recuperar.
Por esse motivo, geralmente é uma boa ideia fazer um novo backup básico (digamos) semanalmente e girá-los, para manter um backup básico mais uma semana de arquivos.
PgBarman deve ser capaz de ajudá-lo com isso.
A limpeza do arquivo não seria desejável se você deseja PITR.