Командная строка для очистки старых партиций
Этот скрипт предназначен для управления партициями таблиц PostgreSQL, предоставляя функции для просмотра списка, отсоединения, удаления или очистки старых партиций.
usage: python3 -m data_rentgen.db.scripts.cleanup_partitions truncate --keep-after 2025-01-01
Скрипт cleanup_partitions.py помогает автоматизировать очистку старых партиций таблиц на основе указанной даты сохранения. Он поддерживает различные команды для пробных запусков, отсоединения партиций, удаления данных и очистки партиций.
Он автоматически идентифицирует партиционированные таблицы и их гранулярность.
Аргументы
command: (Опционально) Указывает режим операции.- Варианты:
dry_run,detach,truncate,drop - По умолчанию:
dry_run - Описание:
-
dry_run: Записывает в лог имена партиций, которые будут затронуты очисткой, без выполнения каких-либо SQL-команд. -detach: Генерирует и выполняет командыALTER TABLE ... DETACH PARTITION ...для определенных старых партиций. Это сохраняет данные партиций нетронутыми, но потребители и сервер не будут иметь доступа к этим партициям. -truncate: Генерирует и выполняет командыTRUNCATE TABLE ..., удаляя все строки из определенных старых таблиц партиций, но сохраняя структуру таблицы. Этот вариант предпочтителен, если у вас есть операции потоковой обработки, например, задания Flink или Spark Streaming. -drop: Сначала отсоединяет партиции, затем генерирует и выполняет командыDROP TABLE ..., окончательно удаляя таблицы партиций и их данные. --keep-after: (Опционально) Граничная дата для партиций. Партиции с данными до этой даты будут рассматриваться для очистки.- Тип: Дата (например,
YYYY-MM-DD). Скрипт использует isoparse для разбора, поэтому поддерживаются различные ISO форматы. - По умолчанию: Текущая дата - 1 год.
- Описание: Будут обработаны только те партиции, компоненты даты которых строго предшествуют указанной дате с учетом гранулярности таблицы.
Примеры
-
Выполнить пробный запуск (по умолчанию):
python3 -m data_rentgen.db.scripts.cleanup_partitions dry_run --keep-after 2024-01-01Эта команда запишет в лог, какие партиции будут затронуты при очистке партиций старше 1 января 2024 года, не внося никаких изменений в базу данных.
-
Отсоединить партиции старше указанной даты:
python3 -m data_rentgen.db.scripts.cleanup_partitions detach_partitions --keep-after 2024-01-01Это отсоединит все партиции, созданные до 1 января 2024 года, от их родительских таблиц. Отсоединенные таблицы по-прежнему будут существовать со своими данными.
-
Удалить данные и сбросить партиции старше указанной даты:
python3 -m data_rentgen.db.scripts.cleanup_partitions remove_data --keep-after 2024-01-01Это отсоединит, а затем удалит все партиции, созданные до 1 января 2024 года, окончательно удалив их данные.
-
Очистить данные в партициях старше указанной даты:
Этот вариант предпочтителен при работе с потоковыми заданиями
python3 -m data_rentgen.db.scripts.cleanup_partitions truncate --keep-after 2024-01-01Это удалит все строки из партиций, созданных до 1 января 2024 года, но сохранит пустые таблицы партиций.