Я использую Postgres 9.X на недавнем сервере Ubuntu (Debian), искал примеры сценариев обслуживания и, к сожалению, ничего не нашел.
Документация Postgres исчерпывающая по абстрактному предмет обслуживания - Его базы периодически должны быть:
К сожалению, в документации нет конкретного примера, возможно, из-за множества задействованных переменных. Тем не менее, я был бы признателен за пример базового сценария обслуживания:
Я начал с этого, пожалуйста, помогите улучшить:
#!/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.
Автоочистка включена по умолчанию. Переиндексирование и кластеризация на самом деле не являются базовыми задачами обслуживания. Вы можете делать их, когда это необходимо для повышения производительности или (переиндексировать), чтобы исправить повреждение индекса, но это не то, что вы слепо делаете регулярно. Ротация журналов выполняется автоматически фреймворком пакетов Debian. Итак, вам не нужно делать ничего из этого самостоятельно.
На самом деле вам следует настроить резервное копирование (для начала запустите pg_dumpall
daily из cron-задания), и мониторинг (что-то вроде Nagios и Munin, пожалуй, для начала). И затем на основе такого мониторинга вы будете регулярно настраивать параметры сервера и пытаться повысить производительность запросов.
Я думаю, что у очистки должен быть некоторый порог - скажем,> 30% потраченного впустую пространства / строк БД. Это сэкономит много времени и бессмысленных усилий.