Estou lendo a seção de backup dos documentos do postgresql antes de criar uma estratégia de backup em minha instância do EC2.
Portanto, existem 2 maneiras de fazer isso.
- Crie um despejo usando
pg_dump
. - Backup em nível de arquivo com
WAL
arquivamento ativado. Estarei usando Snapshots, então meu caso de uso se enquadra nesta categoria.
Agora a questão é preciso congelar meu sistema de arquivos antes de fazer o backup? A documentação do Postgresql sugere que a recuperação do WAL não é afetada por um instantâneo inconsistente. Faz sentido congelar apenas para estar seguro?
Devo fazer backup através de ambas as formas acima?
Que tipo de período de tempo após o qual devo remover logs antigos do WAL?
Os documentos também mencionam que os logs e dados do WAL devem estar no mesmo sistema de arquivos para tornar o backup consistente. Nesse caso, estou pensando em fazer backup dos logs do WAL separadamente do instantâneo do EBS e salvá-lo no S3 e em algum local externo da Amazon. Pensamentos sobre esta estratégia?
Por favor, mencione se eu estiver perdendo alguma coisa.
Os instantâneos do EBS são atômicos, são pontuais. Isso significa que, para o PostgreSQL, desde que todos os datadir, incluindo WAL, e todos os tablespaces estejam no mesmo volume do EBS , iniciar a partir de um instantâneo é equivalente a iniciar após um desligamento incorreto (travamento), o que o PostgreSQL foi projetado para fazer de forma confiável todas as vezes .
Você não precisa interromper a E/S no volume para obter um snapshot do EBS se tudo estiver no mesmo volume do EBS.
Você também não precisa interromper o I/O se estiver usando
pg_start_backup
epg_stop_backup
junto com cópias em nível de arquivo, mas deve capturar todos os arquivos WAL até aquele gerado após o final do arquivopg_stop_backup
. Consulte o manual.Quanto ao armazenamento S3, etc, verifique o barman; ele pode automatizar a maior parte disso para você e oferece suporte a scripts de gancho que você pode usar para colocar backups no S3.