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

Publicado por Caio Ferreira Dias em 29/06/2011

[ Hits: 11.507 ]

 


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

Resolvendo waiting ou idle transaction no PostgreSQL

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

Autovacuum do PostgreSQL

Verificar triggers desabilitadas no PostgreSQL

Leitura recomendada

Acessando dois databases no mesmo SELECT (PostgreSQL)

PostgreSQL: Concedendo ou revogando privilégios em colunas

SQL - Copiar coluna

Configurar Postgresql para conectar com senha criptografada

PostgreSQL: Fazendo backup de um servidor inteiro

  

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