Reindex PostgreSQL - Script para acompanhamento de execução

Publicado por Perfil removido em 03/09/2012

[ Hits: 10.126 ]

 


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

Instalando WPS Office no Linux Mint 19

Backgrounds extras para Ubuntu 9.10

Monitor LG Studioworks 500G no SuSE/OpenSuSE

Roadmap.sh: o que eu preciso estudar para me tornar um bom desenvolvedor?

Gmanedit - Editando, criando e contribuindo com documentação

Leitura recomendada

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

Modelagem de bancos de dados

Migração de encoding no PostgreSQL 8.3

PostgreSQL: Fazendo backup de um servidor inteiro

Acesso externo no PostgreSQL 8.4

  

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