Vegeta: "IT'S OVER NINE THOUSAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAND!" *crushes scouter*
Nappa: WHAT, NINE THOUSAND!? THERE'S NO WAY THAT CAN BE RIGHT!
Hahaha, adoro esse meme!!!! Enfim, voltando ao tema...
Meus queridos, não sei se vocês sabem, mas o backup de um banco de dados é um assunto POLÊMICO! (mas não tão quanto MAMILOS!).
Meu atual esquema de backup é realizado por meio de vários scripts, um em cada servidor. Funciona da seguinte maneira:
- Cada servidor possui um script que o seu nome é o seu ip. Exemplo: /etc/192.168.0.50.sh
- O MAIN se conecta via SSH e starta o script remotamente;
- Após a execução do script, o MAIN realiza um scp e puxa o tar.bz2 gerado
- O MAIN remove o arquivo gerado do servidor remoto, para não acumular sujeira.
Se o seu banco de dados é um postgresql, você pode ter algumas infelizes surpresas. Exemplos:
IT'S FAILS
Dump logado como root:# pg_dumpall > postgresql.sqlNão funciona. Root não tem autorização para se logar no BD.
Com um agendamento no Cron, gerar um dump:
sudo -P -u postgres pg_dumpall > postgresql.sqlNão rola. Você precisa de um TTY para realizar essa operação.
Via SSH, executar manualmente o script:
sudo -P -u postgres pg_dumpall > postgresql.sqlTambém não rola. Você precisa de um TTY para realizar essa operação. Esse ao menos é contornável, basta colocar a opção '-t' no sudo.
Só para informação: Juntar o cron + ssh dá um problema que nem o '-t' do sudo resolve.
Então... Depois de tomar na cara e ver algumas soluções,consegui dar um jeito. Ficou assim meu script de backup full do postgresql:
IT'S WORKS!
vim /etc/192.168.0.10.shCopicola:
#!/bin/bash -e
# Backup full do postgresql (GPLv3)
# Raul Liborio, rauhmaru@opensuse.org
# Ver. 0.2: Limpeza de codigo
#
# -- Variaveis
## Caso deseje mudar o diretorio
## de destino do backup,
## altere o path da variavel BKPDIR
DATA=`date +%d-%m-%Y`
BKPDIR="/backup/srvarquivos"
SQL="${DATA}_PGDUMP.tar.bz2"
DUMP="${DATA}_pgdb.sql"
PGBKP="/var/lib/pgsql/backup/$DATA"
[ -d $BKPDIR ] || mkdir -p $BKPDIR
su - postgres -c "mkdir -p $PGBKP"
su - postgres -c "pg_dumpall > $PGBKP/$DUMP 2> $PGBKP/err.log"
cd $BKPDIR
# Se o diretorio $BKPDIR/$DATA existir, haverá um erro
[ -d $DATA ] && rm -rf $DATA
mv -v $PGBKP $BKPDIR
tar cvjf $DATA/$SQL $DATA/$DUMP
rm -f $DATA/$DUMP
Para que seja realizado todos os dias, adicione no cron:
crontab -e
Por exemplo, backup todos os dias às 23:30
30 23 * * * /etc/192.168.0.10.sh
Prontinho! <nunca faça isso>Você agora poderá ir dormir a vontade, sem se preocupar com o backup! </nunca faça isso> Ou, pra quem curte, dar uns saques nos memes que tem por ai... tipo o NINE THOUSSAAAAAAANDDDD!!!!!
http://dragonball.wikia.com/wiki/It%27s_Over_9000!
0 comentários:
Postar um comentário
Só não vale xingar a mãe ou puxar cabelo nos comentários =)