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

Responder a