Faça backup de um grande banco de dados PostgreSQL continuamente

3

Eu tenho um banco de dados de 20 Tb no PostgreSQL 9.2 e não tenho ideia de como criar backups de maneira eficiente. É um banco de dados que cresce um pouco todos os dias e no primeiro dia de cada mês cresce cerca de 200 Gb.

Eu estava pensando em fazer um pg_dump, mas é preciso muito para fazer isso todo mês, então eu penso em fazer isso uma vez, e então backup apenas as tabelas novas ou alteradas com a cópia, mas não consigo parar de usar o banco de dados para criar o primeiro dump, então não sei exatamente quais dados o backup contém.

Como posso fazer um backup incremental sem parar de usar o banco de dados?

    
por Topo 15.10.2013 / 23:59

3 respostas

6

Os backups são amplamente abordados no manual do PostgreSQL .

Para obter um backup contínuo, arquive o log de write-ahead . Configurações sugeridas são:

archive_mode = on
wal_level = hot_standby
archive_command = '/usr/bin/rsync --archive --ignore-existing "%p" "/backup-dest/%p"'

# Ensures that a log file is written at least once every 30 minutes even if little
# activity has occurred
archive_timeout = 30min

Em vez de fazer um pg_dump para sua linha de base, você pode fazer pg_basebackup , que não requer que você congele o banco de dados. No entanto, se você ainda não tiver archive_mode , você precisará reiniciar o banco de dados para alterar essa configuração.

    
por 16.10.2013 / 00:50
0

Pessoalmente, não conheço uma solução de backup incremental, mas posso pensar em duas maneiras de alcançar o que você está pedindo.

Você pode dar uma olhada no barman que executa o pg_basebackup (se não me engano) e depois transmite os registros do WAL para o servidor barman. Isso tem a desvantagem de que você precisa constantemente de um servidor executando o barman, e não apenas no primeiro dia de cada mês. No entanto, tem a vantagem de poder criar um banco de dados com base em uma data e hora específicas.

A outra solução que consigo pensar é tentar usar um sistema de arquivos de snapshot. Eu só tenho experiência com o ZFS, mas o BTRFS deve funcionar também. Então, no primeiro dia de cada mês, você pode simplesmente criar um instantâneo incremental do sistema de arquivos que hospeda o banco de dados e restaurá-lo caso algo dê errado. No entanto, como você já tem um banco de dados em execução, isso seria um problema, a menos que você o use em uma réplica somente leitura ativada por esse motivo.

    
por 16.10.2013 / 00:50
0

Se você estiver usando o AWS para hospedar seu banco de dados do Postgres, tente usar a ferramenta criada pelo Heroku para fazer backup do EC2 para o S3 chamado Wal-E

    
por 31.10.2013 / 23:35