Reindex PostgreSQL - Script para acompanhamento de execução

Publicado por Perfil removido em 03/09/2012

[ Hits: 9.954 ]

 


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

Ubuntu Hardy Linux não configura modem Huawei EC325 (E620)

Nano: editor

Blog e repositório de pacotes deb para amd64

Proteção contra phishing no Opera 9.10

Como instalar o Docker no openSUSE 15 (15.1 e 15.2)

Leitura recomendada

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

Configurar Postgresql para conectar com senha criptografada

PostgreSQL 9.1 64 bits - Instalação no Debian Squeeze

Acesso externo no PostgreSQL 8.4

Lidando com nulos (NULL) em SQL

  

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