Postgres 9 script de manutenção de linha de base

2

Estou usando o Postgres 9.X em um servidor Ubuntu (Debian) recente e tenho procurado por exemplos de script de manutenção e, infelizmente, aparecem vazios.

Os documentos do Postgres são abrangentes sobre o assunto de manutenção abstrato - Seus bancos de dados devem ser periodicamente seja:

  • aspirado / analisado (+ autovacuum)
  • reindexado
  • agrupado?
  • registros girados
Infelizmente, os documentos não chegam a um exemplo concreto, talvez por causa das muitas variáveis envolvidas. Ainda assim, eu apreciaria um exemplo de um script de manutenção de linha de base:

  • Um para um pequeno banco de dados (de tamanho e uso) que espera crescer nos próximos anos.
  • Um pouco de tempo de inatividade programado está bom. Por exemplo, uma vez por semana, os aplicativos do cliente serão desligados por algum tempo, para que o postgres possa fazer o seu trabalho.

Comecei com isso, por favor ajude a melhorar:

#!/bin/bash
# this script maintains a Postgres Database Cluster
# set any needed env vars:
# PGDATABASE, PGUSER, PGPASSWORD, PGHOST, PGPORT, etc.

read -p "Press ENTER to stop Postgres Clients, start maintenance..."

sudo stop websrvr1
sudo stop websrvr2
sleep 2

echo -e "\nStarting backup ..."
# another script for another question

echo -e "\nStarting maintenance ..."

# What is the best order for these?
sudo -u postgres reindexdb --all --system
sudo -u postgres clusterdb --all
sudo -u postgres vacuumdb  --all --analyze  # --full # warned against

# log rotation?  Supposed to be handled automatically, 
# but I not yet seen more than one log file.

echo Complete.  Type ... to start services.
    
por Gringo Suave 05.10.2011 / 20:53

2 respostas

3

O Autovacuum está ativado por padrão. Reindexação e agrupamento não são realmente tarefas de manutenção básicas. Você pode fazê-las quando necessário para melhorar o desempenho ou (reindexar) para corrigir a corrupção do índice, mas elas não são algo que você faria cegamente regularmente. A rotação de logs é feita automaticamente pela estrutura de empacotamento do Debian. Então, como uma linha de base, você não precisa fazer nada disso sozinho.

O que você deve realmente fazer é configurar backups (para começar, executar pg_dumpall diariamente a partir de uma tarefa cron) e monitorar (algo como Nagios e Munin, talvez, para começar). E, com base nesse monitoramento, você ajustará regularmente as configurações do servidor e tentará melhorar o desempenho das consultas.

    
por 06.10.2011 / 05:37
0

Acho que a aspiração deve ter algum limite - digamos > 30% do espaço / linhas do banco de dados desperdiçado. Isso pouparia muito tempo e esforços sem sentido.

    
por 06.10.2011 / 06:35