Script Reindex PostgreSQL com envio de email de notificação
Pessoal em bancos de dados que ha muitos
inserts é sempre bom fazer um
reindex no banco com direito a envio de email, com isso criei um script para agilizar o processo, principalmente se for mais de um banco como no meu caso.
# nano reindex_pg.sh
Cole o seguinte conteúdo:
#!/bin/bash
script_dir="/diretorio_script/script/"
echo " " > $script_dir/reindex.log
echo "Subject: Reindex" > $script_dir/reindex.log
echo "From: Servidor Banco de dados " >> $script_dir/reindex.log
echo "" >> $script_dir/reindex.log
echo "`date` - Fazendo reindex do servidor..." >> $script_dir/reindex.log
LISTA_BANCO="banco1 banco2 banco3"
for banco in $LISTA_BANCO
do
su - postgres -c "reindexdb -U postgres -w -d $banco"
touch reindex-$banco\ -\ `date +%H:%M`
done
ls -tr reindex-* >> $script_dir/reindex.log
echo " " >> $script_dir/reindex.log
echo " " >> $script_dir/reindex.log
ssmtp voce@exemplo.com.br < $script_dir/reindex.log
rm -f reindex-*
Salve, e mude o arquivo para executável:
# chmod +x reindex_pg.sh
Pode-se ainda agendá-lo para execução automática, adicionando no contrab. Exemplo:
# nano /etc/crontab
Cole a linha:
00 22 * * * root /diretorio_script/script/reindex_pg.sh
Obs.: Para ser enviado o email o
ssmtp tem que estar devidamente configurado, aqui no site tem vários tópicos sobre o assunto.
Outras dicas deste autor
Ubuntu 11.04 - Placa wireless parou de funcionar com o kernel 2.6.39.x?
Autovacuum do PostgreSQL
Verificar triggers desabilitadas no PostgreSQL
Resolvendo waiting ou idle transaction no PostgreSQL
Leitura recomendada
Select com extração de dia, mês ou ano no PostgreSQL
Fazendo backup com PostgreSQL
PostgreSQL 9.1 64 bits - Instalação no Debian Squeeze
Reindex PostgreSQL - Script para acompanhamento de execução
Gambas3 conectando ao PostgreSQL 9
Comentários
Segue versão adaptada uma vez que tive problemas em executar o reindex conforme codificado no script original (era necessário informar a senha do usuário postgres) e para não precisar me preocupar em futuras manutenções no script (incluir novas bases de dados ou remover bases de dados dropadas).
----------------------------
#!/bin/bash
script_dir="/diretorio_script/script/"
echo " " > $script_dir/reindex.log
echo "Subject: Reindex" > $script_dir/reindex.log
echo "From: Servidor Banco de dados " >> $script_dir/reindex.log
echo "" >> $script_dir/reindex.log
echo "`date` - Fazendo reindex do servidor..." >> $script_dir/reindex.log
LISTA_BANCO="`psql -t -c "select datname from pg_database"`"
for banco in $LISTA_BANCO
do
`reindexdb -U postgres -w -d $banco`
touch reindex-$banco\ -\ `date +%H:%M:%S`
done
ls -tr reindex-* >> $script_dir/reindex.log
echo " " >> $script_dir/reindex.log
echo " " >> $script_dir/reindex.log
ssmtp voce@exemplo.com.br < $script_dir/reindex.log
rm -f reindex-*
Contribuir com comentário
Enviar