Aqui no meu trabalho tenho algo parecido com isso, em um servidor de desenvolvimento, todo dia de madrugada a base é recriada. Mantendo sempre atualizada com os dados de produção, ou seja, os devs se divertem durante o expediente e de noite ela é recriada com os dados do backup full da madrugada, os passos sao basicamente estes:
-- mata as conexoes - 9.2+ - SELECT pg_terminate_backend(pg_stat_activity.pid) FROM pg_stat_activity WHERE pg_stat_activity.datname = 'BancoDeDados' AND pid <> pg_backend_pid(); () -- deleta o banco - drop database "BancoDedados" -- cria o banco novamente - create database "BancoDeDados" template template0 encoding 'LATIN1' lc_collate 'C' lc_ctype 'C'; -- realiza restore (aqui to usando o psql mesmo em vez do pg_restore) - psql -U postgres -h HOST -d BancoDeDados -f /path/para/dump.sql -- executo alguns scripts do contexto Um shell script realiza isso via crontab 00 01 * * * cd /path/para/script/; ./script.sh &> /dev/null Na pratica temos sempre dados atualizados frescos, mas tecnicamente é deletar e recriar do zero o banco. Espero que sirva para algo ! Em 6 de maio de 2015 17:47, Euler Taveira <eu...@timbira.com.br> escreveu: > On 06-05-2015 15:37, Marcio Ribeiro de Oliveira wrote: > > Obrigado pela ajuda, só uma duvida. ao fazer esse restore diário só vai > > atualizar os dados certo. > > > Qual restore está se referindo? O último citado? [É por essas e outras > que o top-posting deve ser evitado. Considere responder no contexto como > estou fazendo aqui.] > > O comando que foi citado vai restaurar uma base de dados sobre a outra. > [Inclusive ele vai funcionar somente na primeira vez -- quando a base de > dados no destino estiver "vazia". Se for adicionada a opção -c no > pg_restore, ele vai excluir os objetos definidos no arquivo gerado e > depois criar os objetos -- esquema e dados -- no banco de dados do > destino. Se preferir pode optar pelo DROP DATABASE/CREATE DATABASE no > destino antes da restauração.] > > Você não explicou o que quer dizer com "atualizar diariamente". É tudo > (esquema e dados)? Somente os dados (tudo)? Somente os dados > (modificado)? A primeiro é mais fácil (vide explicação acima). O segundo > vai dar um pouco de trabalho já que você precisa truncar as tabelas. E a > última opção, somente com um programa que compare registro a registro. > > > -- > Euler Taveira Timbira - http://www.timbira.com.br/ > PostgreSQL: Consultoria, Desenvolvimento, Suporte 24x7 e Treinamento > _______________________________________________ > pgbr-geral mailing list > pgbr-geral@listas.postgresql.org.br > https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral > -- foobar
_______________________________________________ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral