Reindex PostgreSQL - Script para acompanhamento de execução

Publicado por Perfil removido em 03/09/2012

[ Hits: 10.105 ]

 


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 voce@exemplo.com.br < $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

Vídeo aula: trabalhando com o DeVeDe (ogg para avi)

Todos os meus programas para download

Apple Swift no Slackware 14.2

Congelar linha ou coluna no Calc do OpenOffice

Trocando o gerenciador de login do Ubuntu (GDM) pelo LXDM

Leitura recomendada

PostgreSQL - Bancos com diferentes encodings

MicroOLAP - Ferramenta para modelagem em PostgreSQL

Consulta aleatória com PostgreSQL

Instalação e configuração do Postgresql + Pgadmin3 LocalHost no Fedora

Função dblink()

  

Comentários

Nenhum comentário foi encontrado.



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts