Настройка еженедельной очистки базы данных¶
Автоматическая логическая очистка произодится с помощью планировщика задач Cron. Последующая физическая очистка и оптимизция дискового пространства запускается вручную через скрипт Staffcop compact.
Примечание
На диске должно быть не менее 15% от объема базы, подробнее — в статье Ручная очистка диска.
Логическая очистка¶
Откройте планировщик задач в терминале Staffcop и запустите Cron:
sudo crontab -e
Добавьте строки, чтобы выполнить очистку базы данных. Например, чтобы удалять данные из базы за год каждое 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
— добавляет вывод команды в лог-файл.
Оптимизация очищенной базы¶
Чтобы физически освободить дисковое пространство после очистки базы:
Откройте файл скрипта compact:
sudo nano /usr/share/staffcop/bin/compact
В файле раскомментируйте строки 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Примечание
При обновлении сервера все скрипты перезаписываются, поэтому внесённые в них изменения исчезают. После следующего обновления сервера повторите настройку.
Сохраните изменения.
После завершения очистки базы запустите скрипт:
staffcop compact
Примечание
Оптимизация базы данных может занимать длительное время. Запускайте её в нерабочие или выходные дни.