Script Reindex PostgreSQL com envio de email de notificação

Publicado por Caio Ferreira Dias em 29/06/2011

[ Hits: 11.510 ]

 


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

Verificar triggers desabilitadas no PostgreSQL

Ubuntu 11.04 - Placa wireless parou de funcionar com o kernel 2.6.39.x?

Resolvendo waiting ou idle transaction no PostgreSQL

Autovacuum do PostgreSQL

Leitura recomendada

PostgreSQL no Fedora 18

Mudando encoding do Postgres 8.4 para LATIN1

Evitando erros ao indexar campos timestamp em SQL

Consulta aleatória com PostgreSQL

Modelagem de bancos de dados

  

Comentários
[1] Comentário enviado por removido em 29/08/2012 - 17:55h

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




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts