Настройка еженедельной очистки базы данных

Автоматическая логическая очистка произодится с помощью планировщика задач Cron. Последующая физическая очистка и оптимизция дискового пространства запускается вручную через скрипт Staffcop compact.

Примечание

На диске должно быть не менее 15% от объема базы, подробнее — в статье Ручная очистка диска.

Логическая очистка

  1. Откройте планировщик задач в терминале Staffcop и запустите Cron:

sudo crontab -e
  1. Добавьте строки, чтобы выполнить очистку базы данных. Например, чтобы удалять данные из базы за год каждое 1 число месяца в 23:00.

Примечание

Файлы и события не восстанавливаются, поэтому тщательно проверяйте временной диапазон для удаления перед началом работы. При возникновении вопросов обратитесь в техническую поддержку.

00 23 1 * * && sudo staffcop shard cleanup 12 >> /srv/cleanupdb.log 2>&1

Команда удаляет шарды в PostgreSQL, партиции в ClickHouse и привязанные к ним файлы. Записывает лог работы в файл /srv/cleanupdb.log.

Расшифровка параметров cron

  • 0 — минута (00 минут);
  • 23 — час;
  • * — любой день месяца;
  • * — любой месяц;
  • sudo staffcop shard_cleanup 12 — команда для удаления шардов за год;
  • > /srv/cleanupdb.log — добавляет вывод команды в лог-файл.

Оптимизация очищенной базы

Чтобы физически освободить дисковое пространство после очистки базы:

  1. Откройте файл скрипта compact:

sudo nano /usr/share/staffcop/bin/compact
  1. В файле раскомментируйте строки echo «Vacuum database» и sudo -u postgres psql staffcop -c «vacuum full», вот так:

#!/bin/bash
# USE compact
# HELP Cleanup unreffered dimensions and vaccum database
staffcop stop
echo "Cleanup dimensions"
cat sql/cleanup_dimensions.sql| bin/sql
echo "Vacuum database"
sudo -u postgres psql staffcop -c "vacuum full"
staffcop start
echo "Cleanup done"
bin/info

Примечание

При обновлении сервера все скрипты перезаписываются, поэтому внесённые в них изменения исчезают. После следующего обновления сервера повторите настройку.

  1. Сохраните изменения.

  2. После завершения очистки базы запустите скрипт:

staffcop compact

Примечание

Оптимизация базы данных может занимать длительное время. Запускайте её в нерабочие или выходные дни.