Em 22 de janeiro de 2015 17:49, Matheus de Oliveira < [email protected]> escreveu:
> > 2015-01-22 15:18 GMT-02:00 André Ormenese <[email protected]>: > >> Descobri meu erro !!! Aliás um erro grave de entendimento do >> funcionamento do banco. >> >> Na hora da restauração, eu estava apagando todos os arquivos da pasta >> pg_xlog e archive_status. Na minha cabeça isso era necessário para que o >> banco criasse os arquivos novamente baseado nos arquivos utilizados para >> restore. >> >> Falha grave, mas pelo menos ocorreu num recover de testes !!! >> >> Obrigado também ao Matheus Oliveira. >> > > > Agora vamos precisar de mais informações. Porque é correto e recomendado > apagar esses arquivos antes da restauração sim, o PostgreSQL deve buscar os > xlogs que precisa usando o restore_command. Pode detalhar melhor então o > que fez (de preferência com os comandos que foram executados para o backup > e restauração). > > Ah! E eu recomendo usar o pg_basebackup, é bem mais simples e confiável. > > Atenciosamente, > -- > Matheus de Oliveira > Analista de Banco de Dados > Dextra Sistemas - MPS.Br nível F! > www.dextra.com.br/postgres > > Agora fiquei mais confuso.... então eu estava certo com relação ao pg_xlog, mas a coisa realmente não anda se eu apagar o conteúdo desta pasta. Seguem os comandos para o backup e restore : - Backup ( não vou colocar o script inteiro para não poluir muito ) ARQ_LOG=/dados/bancos/pg_hemo/data/pg_log/logbackup.log;export ARQ_LOG SCRIPTS=/home/postgres/scrp_bkp;export SCRIPTS PATHEXE=/dados/bancos/pg_hemo/9.3.4;export PATHEXE PATH=/dados/bancos/pg_hemo/9.3.4/bin:$PATH;export PATH PATH_WAL=/dados/wal/hemo;export PATH_WAL PGHOST=theta.hemo.unicamp.br;export PGHOST PGDATABASE=hemocentro;export PGDATABASE PGPORT=5437;export PGPORT PGDATA=/dados/bancos/pg_hemo/data;export PGDATA PGPASSWORD=xxxxxxx;export PGPASSWORD NOMESIS="HEMOCENTRO" VERSAOBD="POSTGRESQL934" DIR_BASE=/dados/bancos/pg_hemo;export DIR_BASE NOME_ARQ_BKP=bk_hemo.tar;export NOME_ARQ_BKP ARQ_BKP_WAL=bk_hemo_wal.tar;export ARQ_BKP_WAL $PATHEXE/bin/psql --echo-all -U postgres >> $ARQ_LOG << fim_psql select pg_start_backup('$1'); … #Apaga registro do backup produzido pelo PostgreSQL rm $DIR_BASE/data/pg_xlog/archive_status/*.*.backup.done rm $DIR_BASE/data/pg_xlog/*.*.backup … #veja que já estou desconsiderando o pg_xlog na cópia dos arquivos de dados tar -cvf $DIR_BASE/data/$NOME_ARQ_BKP --check-links --exclude $PGDATA/pg_xlog $PGDATA … $PATHEXE/bin/psql --echo-all -U postgres >> $ARQ_LOG select pg_stop_backup(); … tar -cvf $DIR_BASE/data/$ARQ_BKP_WAL --check-links $PATH_WAL | tee -a $ARQ_LOG rm $PATH_WAL/* # Final do BACKUP Para o restore fiz um script rápido, só para testar os passos da restauração. Ele é rodado como usuário postgres. #! /bin/sh cd /dados/bancos/pg_hemo/data ../9.3.4/bin/pg_ctl -D . stop # Apaga todos os arquivos do diretório de dados do banco e da pasta onde faz a cópia dos arquivos de WAL (caminho fornecido pelo archive_command) rm -rf * rm -rf /dados/wal/hemo/* cd / tar -xvf /dados/bancos/pg_hemo/bk_hemo.tar tar -xvf /dados/bancos/pg_hemo/bk_hemo_wal.tar #move os dados para a pasta restore porque o recovery.conf vai consumir os logs nesta pasta. mv /dados/wal/hemo/* /dados/wal/restore cd /dados/bancos/pg_hemo/data rm backup_label rm postmaster.pid rm logpost rm recovery.done rm ./pg_log/* mkdir pg_xlog cd pg_xlog mkdir archive_status cd .. cp /home/postgres/recovery.conf /dados/bancos/pg_hemo/data/ #copia os arquivos WAL da produção para deixar o banco com todas as atualizações. #não se preocupe com esta situação... num problema de perder a máquina da produção, tenho #outra como slave, e que tem uma cópia destes arquivos também scp [email protected]:/dados/wal/hemo/'0*' /dados/wal/restore/ scp [email protected]:/dados/wal/hemo/atual/'0*' /dados/wal/restore/ #se eu não fizer este procedimento abaixo, tenho aquelas mensagens de invalid primary checkpoint record. O banco não sobe, os arquivos de log não são consumidos e é gerado um arquivo postgres.core até que grande (+- 1 GB). cp /dados/wal/restore/0* /dados/bancos/pg_hemo/data/pg_xlog/ Vou dar uma olhada no pg_basebackup.
_______________________________________________ pgbr-geral mailing list [email protected] https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
