Pular para o conteúdo

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

Dica publicada em Banco de Dados / Postgres
Caio Ferreira Dias caio
Hits: 12.190 Categoria: Banco de Dados Subcategoria: Postgres
  • Indicar
  • Impressora
  • Denunciar

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.

Resolvendo waiting ou idle transaction no PostgreSQL

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

Verificar triggers desabilitadas no PostgreSQL

Autovacuum do PostgreSQL

Instalação do PostgreSQL no CoLinux-Debian

Evitando erros ao indexar campos timestamp em SQL

PostgreSQL: Concedendo ou revogando privilégios em colunas

MicroOLAP - Ferramenta para modelagem em PostgreSQL

PostgreSQL - Alterando senha do usuário postgres

#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

Entre na sua conta para comentar.