LINUX.ORG.RU

Очистить старые данные ulogd2

 ,


0

1

Данные логов iptables можно хранить в базе данных при помощи ulogd2, а вот как удалять устаревшие данные? То есть, там данные хранятся в базе в виде нескольких связанных таблиц, их структура в целом понятна, то есть, удалить вручную в целом можно, но хотелось бы какой-то штатный способ, может он есть, а я его пропустил?

Если погуглить, то появляются советы вроде удаления данных в базе запросом типа:

DELETE FROM ulog2 WHERE timestamp < (NOW() - INTERVAL '24 hours');

При этом мешают ограничения, связанные с другими таблицами:

ERROR:  update or delete on table "ulog2" violates foreign key constraint "tcp_id_fk" on table "tcp"
DETAIL:  Key (_id)=(1) is still referenced from table "tcp".

Понятно, что вопрос решаемый (удалить в транзакции сначала устаревшие данные из связанных таблиц, а потом из основной), но может не стоит делать велосипед и готовое решение уже есть? Может я не вижу всей картины, и чистка базы от старых записей делается каким-либо приложением для управления ulogd2?

★★★★

Последнее исправление: askh (всего исправлений: 2)
psql ulogd -c "
SELECT DELETE_PACKET(_id)
FROM ulog2
WHERE timestamp < now() - interval '30 days';
"
gagarin0
()
Последнее исправление: gagarin0 (всего исправлений: 1)
  • Markdown
Пустая строка (два раза Enter) начинает новый абзац. Знак '>' в начале абзаца выделяет абзац курсивом цитирования.
Внимание: прочитайте описание разметки Markdown.
Используйте Ctrl-Enter для размещения комментария