PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Como saber se meu backup do PostgreSQL é bom?

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.