вторник, 24 июля 2018 г.

Запуск ночью vacuumdb


Как посмотреть размер базы ?
Регламентная очистка
Виртуальный образ p962.ova
краткий справочник
тоже
Скрипт автоматической переиндексации (reindex) и удаления мертвых данных (full vacuum) в базе postgresql.
Автоматическая сборка мусора (Automatic Vacuuming) в PostgreSQL
Опыт обслуживания базы 1С в PostgreSQL


Как посмотреть размер базы demo postgresql?
$ sudo su - postgres
$ psql 

В байтах:

postgres=# select pg_database_size('demo');

 pg_database_size
------------------
       5579448836
(1 строка)

postgres=#

В Мбайтах: 

postgres=# SELECT pg_size_pretty( pg_database_size( 'demo' ) );

 pg_size_pretty
----------------
 5321 MB
(1 строка)

postgres=#


Для борьбы с падением производительности, рекомендуют ночью запускать vacuumdb
 
$ sudo su - postgres 
 
Посмотреть базы:
psql -l
                                  Список баз данных
    Имя    | Владелец | Кодировка | LC_COLLATE  |  LC_CTYPE   |     Права доступа
-----------+----------+-----------+-------------+-------------+-----------------------
 demo      | postgres | UTF8      | ru_RU.UTF-8 | ru_RU.UTF-8 |
 postgres  | postgres | UTF8      | ru_RU.UTF-8 | ru_RU.UTF-8 |
 template0 | postgres | UTF8      | ru_RU.UTF-8 | ru_RU.UTF-8 | =c/postgres          +
           |          |           |             |             | postgres=CTc/postgres
 template1 | postgres | UTF8      | ru_RU.UTF-8 | ru_RU.UTF-8 | =c/postgres          +
           |          |           |             |             | postgres=CTc/postgres
(4 строки)

Сборка мусора вручную от пользователя posgres (примерно 5 минут)
$ vacuumdb --verbose --analyze --full --dbname=demo
переиндексация баз  
 
######################################################## 
Не регламентная операция
$ reindexdb --all
reindexdb: переиндексация базы данных "demo"
reindexdb: переиндексация базы данных "postgres"
reindexdb: переиндексация базы данных "template1"
########################################################
 

Можно настроить cron
 
Установка Postfix — агент передачи почты (MTA — mail transfer agent) 

Выбрать (только локальное использование) 
 
$ sudo apt-get install postfix 
 
 
 
$ sudo su - postgres 
$ crontab -e
(первый запуск по умолчанию [2]) 
 
Добавить в конец файла 
# Запуск vacuumdb каждый день в 22.01 предварительно удалив в 22.00 сообщения.
#00 22 * * * cp /dev/null /var/mail/postgres 
#01 22 * * * vacuumdb --verbose --analyze --full --quiet --dbname=demo
#Краткая форма: 
01 22 * * * vacuumdb --analyze --full --quiet --dbname=demo 
 
Сохранить.
 
Смотреть задания:
 
$ crontab -l 
 
#####################################################
Смотреть сообщения:
$ sudo su - postgres   
$ tail /var/mail/postgres
(можно $ nano /var/mail/postgres или просто через mc)
Но tail удобен тем что выводит последнее сообщение,
не забываем что работаем от пользователя postgres
 
postgres@ufo:~$ tail /var/mail/postgres
Content-Transfer-Encoding: 8bit
X-Cron-Env: <SHELL=/bin/sh>
X-Cron-Env: <HOME=/var/lib/postgresql>
X-Cron-Env: <PATH=/usr/bin:/bin>
X-Cron-Env: <LOGNAME=postgres>
Message-Id: <20180725111851.ADBBE19446DF@ufo>
Date: Wed, 25 Jul 2018 14:18:51 +0300 (MSK)

vacuumdb: очистка базы данных "demo"

postgres@ufo:~$
 

Комментариев нет:

Отправить комментарий