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
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