Настройка еженедельной очистки базы данных¶
Основные особенности очистки базы:
файлы и события удаляются из базы безвозвратно - внимательно проверяйте диапазон данных перед началом;
на диске должно быть достаточно свободного места (не менее 15% от объёма текущей базы);
физически очистить диск после очистки базы поможет раздел Оптимизация очищенной базы.
Еженедельную очистку базы данных можно настроить с помощью планировщика задач Cron:
В командной строке сервера Staffcop выполните команду:
sudo crontab -e
В открывшийся файл добавьте строки для выполнения очистки базы данных в определённый день недели:
0 22 * * 5 sudo staffcop cleanup 100 >> /srv/cleanupdb.log
0 1 * * 6 sudo staffcop cleanup 100 >> /srv/cleanupdb.log
Эта команда:
Каждую неделю в указанное время будет стирать из базы данных все события старше 100 дней;
Лог работы будет записываться в файл /srv/cleanupdb.log.
Оптимизация очищенной базы¶
Чтобы физически освободить дисковое пространство после очистки базы:
Откройте файл скрипта compact, являющегося частью Staffcop:
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
Примечание
Процедура оптимизации базы данных может занимать длительное время. Запускайте её в нерабочие или выходные дни.