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
Autovacuum do PostgreSQL
Resolvendo waiting ou idle transaction no PostgreSQL
Verificar triggers desabilitadas no PostgreSQL
Ubuntu 11.04 - Placa wireless parou de funcionar com o kernel 2.6.39.x?
Leitura recomendada
Reindex PostgreSQL - Script para acompanhamento de execução
Ativando acesso remoto ao PostgreSQL 8 no Fedora
Instalar a última versão do PostgreSQL no Lunix mantendo atualizado
Configurar Postgresql para conectar com senha criptografada
Como recuperar senha do usuário Postgres
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