Skip to content

Командная строка для очистки старых партиций

Этот скрипт предназначен для управления партициями таблиц 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 год.
  • Описание: Будут обработаны только те партиции, компоненты даты которых строго предшествуют указанной дате с учетом гранулярности таблицы.

Примеры

  1. Выполнить пробный запуск (по умолчанию):

    python3 -m data_rentgen.db.scripts.cleanup_partitions dry_run --keep-after 2024-01-01
    

    Эта команда запишет в лог, какие партиции будут затронуты при очистке партиций старше 1 января 2024 года, не внося никаких изменений в базу данных.

  2. Отсоединить партиции старше указанной даты:

    python3 -m data_rentgen.db.scripts.cleanup_partitions detach_partitions --keep-after 2024-01-01
    

    Это отсоединит все партиции, созданные до 1 января 2024 года, от их родительских таблиц. Отсоединенные таблицы по-прежнему будут существовать со своими данными.

  3. Удалить данные и сбросить партиции старше указанной даты:

    python3 -m data_rentgen.db.scripts.cleanup_partitions remove_data --keep-after 2024-01-01
    

    Это отсоединит, а затем удалит все партиции, созданные до 1 января 2024 года, окончательно удалив их данные.

  4. Очистить данные в партициях старше указанной даты:

    Этот вариант предпочтителен при работе с потоковыми заданиями

    python3 -m data_rentgen.db.scripts.cleanup_partitions truncate --keep-after 2024-01-01
    

    Это удалит все строки из партиций, созданных до 1 января 2024 года, но сохранит пустые таблицы партиций.