Tenho um banco de dados de 3GB que é constantemente modificado e preciso fazer backups sem parar o servidor (Postgres 8.3).
Meu pg_dump é executado por 5 minutos. E se os dados forem modificados durante o processo? Recebo backups consistentes? Não quero saber quando ocorre um desastre.
A documentação do Postgres http://www.postgresql.org/docs/8.3/static/app-pgdump.html não diz nada sobre isso.
Do manual :
Então sim, você pode confiar no backup. Claro, é PostgreSQL, você pode confiar seus dados no PostgreSQL.
O dump começa com a configuração
TRANSACTION ISOLATION LEVEL SERIALIZABLE
.Por favor, leia o manual sobre Isolamento de Transações e, por exemplo, a discussão da Lista de Usuários sobre isso .
Citar:
Basicamente, tudo depois
pg_dump
de definir o nível de isolamento da transação não faz parte desse dump.As operações de leitura/gravação não são afetadas (bloqueadas) durante esse período.
O pg_dump inicia uma transação, da mesma forma que qualquer outra consulta de longa duração funcionará. As garantias de consistência vêm da implementação do MVCC . O dump sempre será autoconsistente dentro dessas regras.
Todas as partes confusas do MVCC estão relacionadas a coisas como quais transações de UPDATE de ordem se tornam visíveis para outros clientes e como os bloqueios são adquiridos. O pg_dump é rigoroso quanto à ordenação e adquire um bloqueio de leitura em todo o banco de dados para despejá-lo. Para a maioria das pessoas, isso é o que eles esperam, e o mecanismo usado nunca causa nenhum problema. O principal risco de simultaneidade é que os clientes que tentarem alterar a estrutura do banco de dados sejam bloqueados enquanto o dump estiver em execução. Isso não afeta a qualidade do dump embora.
Primeiramente desculpe por responder neste tópico antigo. Mas pela minha experiência não posso confirmar a afirmação de que você pode confiar pg_dump/
Troquei há um mês por um projeto para postgres. E é claro que fiz todos os backups com pg_dump do sistema live como sugerido. Mas após a primeira verificação de backup, descobri que todos os dumps tinham tamanhos diferentes. Depois de restaurar aleatoriamente alguns deles, descobri que algumas tabelas estão faltando. Então comecei a analisar por que isso acontece e descobri que se o aplicativo de sobreposição, por exemplo, servidores de aplicativos, bloqueando algumas tabelas e pg_dump não está esperando até que sejam liberados. Sempre precisei parar o servidor para o período de backup, o que não é uma boa solução.
Então, eu ainda estou procurando uma correção, mas como eu disse, discordo totalmente da afirmação de que você pode confiar no pg_dump.