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}

Единица измерения периода: minutes (минуты), hours (часы), days (дни), weeks (недели)

amount

Количество единиц периода (целое число)

–batch-size

Количество записей в одном батче удаления. Значение по умолчанию: 10000

–batch-pause

Пауза между полными батчами в секундах. Значение по умолчанию: 0.1. Значение 0 отключает паузы

Регулировка нагрузки на базу данных

Записи удаляются батчами в отдельных транзакциях. По умолчанию один батч содержит 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