Reindex PostgreSQL - Script para acompanhamento de execução

Publicado por Andre Luiz Cardoso em 03/09/2012

[ Hits: 8.643 ]

 


Reindex PostgreSQL - Script para acompanhamento de execução



Aqui está uma versão adaptada do script publicado pelo Caio Ferreira Dias: Reindex PostgreSQL com envio de email de notificação.

Vi a necessidade de adaptar o script pelos seguintes motivos:
  1. Ao tentar executar o script original tive problemas já que era necessário informar a senha do usuário postgres, inviabilizando o uso do script com o agendamento via Cron;
  2. Para não preocupar-me com futuras manutenções no script, tais como incluir novas bases de dados ou remover bases de dados apagadas;
  3. Para facilitar a detecção de problemas na execução do reindex, fiz uma reorganização da estrutura onde os arquivos serão criados temporariamente para a geração do arquivo de log final.

Criaremos a estrutura de diretórios para o script. No diretório HOME do usuário "postgres", crie os seguintes diretórios:

mkdir rotinas
$ mkdir rotinas/log
$ mkdir rotinas/log/tmp


Criando o script

Acesse o diretório "rotinas":

cd rotinas
$ nano reindex.sh


Copie e cole o seguinte conteúdo:

#!/bin/bash
script_dir="/home/postgres/rotinas/log/"

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
echo "=======================================================" >> $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 $script_dir/tmp/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 [email protected] < $script_dir/reindex.log
rm -f  $script_dir/tmp/reindex-*


Salve e mude o arquivo para executável:

chmod 777 reindex_pg.sh

Pode-se ainda agendá-lo para execução automática, adicionando no Contrab - Wilipedia. Exemplo:

crontab -e

Cole a linha:

00 05 * * * /home/postgres/rotinas/reindex.sh


Salve a alteração.

Obs.1: Para ser enviado o e-mail, o SSMTP tem que estar devidamente configurado, aqui no VOL tem vários tópicos sobre o assunto.

Obs.2: Os arquivos temporários serão criados no caminho /home/postgres/rotinas/log/tmp e o arquivo de log definitivo, será criado em /home/postgres/rotinas/log.

Agradecimentos especiais ao Caio Ferreira Dias por sua contribuição.

Outras dicas deste autor
Nenhuma dica encontrada.
Leitura recomendada

Instalação do PostgreSQL no CoLinux-Debian

PostgreSQL - Alterando senha do usuário postgres

Acessando dois databases no mesmo SELECT (PostgreSQL)

Documentação online do PostgreSQL

SQL: Filtragem com WHERE sem problemas com maiúsculo ou minúsculo

  

Comentários

Nenhum comentário foi encontrado.



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts