Bash-скрипт очистки устаревших временных таблиц PostgreSQL

Скрипт ищет и удаляет устаревшие временные таблицы, позволяя минимизировать распухание логов. Только для GNU/Linux.

Если вы видите в логах PostgreSQL сообщения

автоочистка: найдена устаревшая врем. таблица "pg_temp_X"."ttXX" в базе "database"
или
autovacuum: found orphan temp table "pg_temp_XX"."ttXX" in database "database"

это значит, что 1С не убрала за собой временную таблицу. PostgreSQL автоматически чистит такие таблицы автовакумом, но пока он доберется до проблемы может пройти много времени. Были случаи, когда лог-файлы забивали диск, вызывая падение СУБД.

Полностью подавить запись в лог подобных сообщений можно с помощью директивы в конфигурационном файле:

log_min_messages = fatal

но тогда есть шанс пропустить важные сообщения. Данный скрипт парсит лог и дропает проблемные таблицы.

Перед запуском сделайте бэкап и остановите 1C сервер!

Как пользоваться:

# git clone https://github.com/zhilchenko/pg_purgeorphan.git
# cd pg_purgeorphan
# sudo -u postgres `pwd`/pg_purgeorphan /var/log/postgresql/postgresql-9.2-main.log

Для использования в cron есть ключ -q, подавляющий вывод сообщений и запрос подтверждения.

4 Comments

  1. linuxmaster

    Спасибо. Зарешаю эту проблему на одном сервере сегодня вечерком.

    Reply
  2. plastyr

    (1) Данный скрипт решил ваш вопрос?

    Reply
  3. linuxmaster

    (2) да, последствия неудачного обновления устранены…

    Reply
  4. plastyr

    (3) проблемы в ходе запуска были?

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *