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

Publicado por Caio Ferreira Dias em 29/06/2011

[ Hits: 11.260 ]

 


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?

Verificar triggers desabilitadas no PostgreSQL

Resolvendo waiting ou idle transaction no PostgreSQL

Autovacuum do PostgreSQL

Leitura recomendada

Migração de encoding no PostgreSQL 8.3

Fazendo backup com PostgreSQL

Acessando dois databases no mesmo SELECT (PostgreSQL)

Select com extração de dia, mês ou ano no PostgreSQL

Evitando erros ao indexar campos timestamp em SQL

  

Comentários
[1] Comentário enviado por andrekrieg 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