Os backups são obrigatórios em todos os Planos de Recuperação de Desastres. Pode nem sempre ser suficiente para garantir um objetivo de ponto de recuperação aceitável, mas é uma boa primeira abordagem. O problema é o que acontece se, em caso de falha, você precisar usar esse backup e ele não for utilizável por algum motivo? Provavelmente você não quer estar nessa situação, então, neste blog, veremos como confirmar se seu backup é bom de usar.
Tipos de backups do PostgreSQL
Vamos começar a falar sobre os diferentes tipos de backups. Existem diferentes tipos, mas em geral, podemos separá-lo em duas categorias simples:
- Lógico :o backup é armazenado em um formato legível como SQL.
- Físico :o backup contém dados binários.
Por que estamos mencionando isso? Porque veremos que existem algumas verificações que podemos fazer para um tipo e não para o outro.
Verificando os logs de backup
A primeira maneira de confirmar se está tudo bem é verificando os logs de backup.
O comando mais simples para executar um backup do PostgreSQL pode ser, por exemplo:
$ pg_dumpall > /path/to/dump.sql
Mas, como posso saber se houve um erro quando o comando estava em execução? Você pode simplesmente adicionar para enviar a saída para algum arquivo de log específico:
$ pg_dumpall > /path/to/dump.sql > /var/log/postgres/pg_dump.log
Então, você pode adicionar esta linha no cron do servidor para executá-lo todos os dias:
30 0 * * * pg_dumpall > /path/to/dump.sql > /var/log/postgres/pg_dump.log
E você deve monitorar o arquivo de log para procurar erros, por exemplo, adicionando-o em alguma ferramenta de monitoramento como o Nagios.
Verificar os logs não é suficiente para confirmar que o backup funcionará, porque, por exemplo, se o arquivo de backup estiver corrompido por algum motivo, você provavelmente não verá isso no arquivo de log.
Verificando o conteúdo de backup
Se você estiver usando backups lógicos, poderá verificar o conteúdo do arquivo de backup para confirmar que tem todos os bancos de dados lá.
Você pode listar seus bancos de dados PostgreSQL atuais usando, por exemplo, este comando:
$ psql -l | awk '{ print $1 }'| awk 'FNR > 3' |grep '^[a-zA-Z0-9]' |grep -v 'template0'
postgres
template1
world
E verifique quais bancos de dados você tem no arquivo de backup:
$ grep '^[\]connect' /path/to/dump.sql |awk '{print $2}'
template1
postgres
world
O problema com esta verificação é que você não verifica o tamanho ou os dados, então pode ser possível que você tenha alguma perda de dados se houver algum erro quando o backup foi executado.
Restaurando para verificar o backup manualmente
A forma mais segura de confirmar se um backup está funcionando é restaurá-lo e acessar o banco de dados.
Após a conclusão do backup, você pode restaurá-lo manualmente em outro host copiando o arquivo de despejo e executando, por exemplo:
$ psql -f /path/to/dump.sql postgres
Depois, você pode acessá-lo e verificar os bancos de dados:
$ psql
postgres=# \l
List of databases
Name | Owner | Encoding | Collate | Ctype | Access privileges
-----------+----------+----------+-------------+-------------+-----------------------
postgres | postgres | UTF8 | en_US.utf-8 | en_US.utf-8 |
template0 | postgres | UTF8 | en_US.utf-8 | en_US.utf-8 | =c/postgres +
| | | | | postgres=CTc/postgres
template1 | postgres | UTF8 | en_US.utf-8 | en_US.utf-8 | =c/postgres +
| | | | | postgres=CTc/postgres
world | postgres | UTF8 | en_US.utf-8 | en_US.utf-8 |
(4 rows)
O problema com esse método é, obviamente, que você deve executá-lo manualmente ou encontrar uma maneira de automatizar isso, o que pode ser uma tarefa demorada.
Verificação automática de backup do ClusterControl
Agora, vamos ver como o ClusterControl pode automatizar a verificação de backups do PostgreSQL e ajudar a evitar surpresas ou tarefas manuais.
No ClusterControl, selecione seu cluster e vá para a seção "Backup" e, em seguida, selecione “Create Backup”.
O recurso de backup de verificação automática está disponível para os backups agendados. Então, vamos escolher a opção “Agendar Backup”.
Ao agendar um backup, além de selecionar as opções comuns como método ou armazenamento, você também precisa especificar agendamento/frequência.
Na próxima etapa, você pode compactar e criptografar seu backup e especificar o período de retenção. Aqui, você também tem o recurso “Verificar backup”.
Para usar esse recurso, você precisa de um host dedicado (ou VM) que não faz parte do cluster.
ClusterControl instalará o software e restaurará o backup neste host . Após a restauração, você pode ver o ícone de verificação na seção Backup do ClusterControl.
Conclusão
Como mencionamos, os backups são obrigatórios em qualquer ambiente, mas o backup não é um backup se você não puder usá-lo. Portanto, você deve certificar-se de que seu backup seja útil caso você precise um dia. Neste blog, mostramos diferentes maneiras de verificar seu backup para evitar problemas quando você deseja restaurá-lo.