clean_audit_logs¶
Удаление старых записей аудита из базы данных
Зачем нужна¶
Команда удаляет старые записи журнала аудита из таблицы audit_logevent за рамками указанного периода. Журнал аудита со временем заметно растёт и занимает место в базе — команда позволяет ограничить глубину хранения, не дожидаясь автоматической ротации
Типичные случаи применения:
регулярная очистка по расписанию (запуск из cron) — поддерживать журнал в установленных по политике границах
разовая чистка после длительной эксплуатации сервера, когда таблица аудита разрослась и замедляет запросы
освобождение места под бэкапы базы или подготовка к миграции на другой сервер
соблюдение требований политики хранения персональных данных — удалить данные старше срока хранения
Важно
Команда удаляет данные необратимо. Перед запуском сделайте резервную копию базы данных или экспортируйте нужные записи аудита
Синтаксис¶
rude clean_audit_logs [minutes/hours/days/weeks] [amount] [--batch-size N] [--batch-pause SECONDS]
Параметры¶
Параметр |
Описание |
|---|---|
{minutes/hours/days/weeks} |
Единица измерения периода: |
amount |
Количество единиц периода (целое число) |
–batch-size |
Количество записей в одном батче удаления. Значение по умолчанию: |
–batch-pause |
Пауза между полными батчами в секундах. Значение по умолчанию: |
Регулировка нагрузки на базу данных¶
Записи удаляются батчами в отдельных транзакциях. По умолчанию один батч содержит 10 000 записей, а между полными батчами команда делает паузу 0,1 секунды. Такой режим ограничивает размер одной транзакции и даёт базе данных короткие интервалы для обработки других запросов.
Параметры --batch-size и --batch-pause позволяют регулировать нагрузку:
меньший размер батча и более длинная пауза снижают пиковую нагрузку на базу данных, но увеличивают общее время очистки
больший размер батча и короткая пауза ускоряют очистку, но создают более высокую нагрузку на диски, WAL и autovacuum
значение
--batch-pause 0отключает паузы между батчами
Важно
Команда удаляет все записи аудита (audit_logevent), которые старше указанного периода. Операция необратима — без предварительного резервного копирования восстановить данные будет невозможно
Пример¶
Чтобы удалить логи аудита, которым более пяти дней, введите следующее:
rude clean_audit_logs days 5
После выполнения команды логи аудита старше пяти дней будут удалены, и на странице «Все логи» они будут отсутствовать
Чтобы снизить нагрузку на базу данных при удалении большого объёма логов, можно использовать батчи по 5 000 записей с паузой 0,2 секунды:
rude clean_audit_logs days 5 --batch-size 5000 --batch-pause 0.2