Reindex PostgreSQL - Script para acompanhamento de execução

Publicado por Perfil removido em 03/09/2012

[ Hits: 10.085 ]

 


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

Skin do Brasil para aMSN (Copa do Mundo)

Instalando o LXDE no Slackware 13.1

VirtualBox - Criar imagem ISO/IMG de máquina virtual

Iniciar o Windows em um HD secundário através do GRUB

Lindos wallpapers para Mandriva

Leitura recomendada

Função SQL replace: corrigindo inserções equivocadas

Criando domínio com função de validação no PostgreSQL

Select com extração de dia, mês ou ano no PostgreSQL

Acessando dois databases no mesmo SELECT (PostgreSQL)

Consultas sem preocupação com maiúsculas ou minúsculas no PostgreSQL

  

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