Видалення документів з S3 Ceph-бакетів і Redis

1. Огляд

Цей документ описує процедуру видалення документів, пов’язаних із завершеними бізнес-процесами, з S3 Ceph-бакетів і Redis. Процес включає генерацію списку активних бізнес-процесів, роботу з утилітою для видалення та налаштування параметрів для її запуску.

2. Кроки для видалення документів

  1. Генерація CSV-файлу з активними бізнес-процесами.

    У поді operational-instance реєстру увійдіть до бази даних camunda і виконайте SQL-скрипт, що згенерує CSV-файл з ID та start-form-document-key активних інстансів бізнес-процесів. Ці ключі НЕ повинні бути видалені.

    psql
    \c camunda
    
    COPY (select ae.id_ "process-instance-id", arv.text_ "start-form-document-key" from act_ru_execution ae left join act_ru_variable arv on ae.id_ = arv.proc_inst_id_ and arv.name_ in ('start_form_ceph_key', 'start_message_payload_storage_key') where ae.parent_id_ is null) TO '/tmp/process_instance_ids.csv' csv header;
  2. Копіювання згенерованого CSV-файлу на локальну машину.

    Після генерації файлу /tmp/process_instance_ids.csv_, скопіюйте його на локальну машину за допомогою наступної команди:

    oc cp --retries=-1 operational-instance-pod:/tmp/process_instance_ids.csv ./process_instance_ids.csv
  3. (Опціонально) Встановлення OpenJDK.

    Якщо у вас ще не встановлений OpenJDK, це можна зробити на цьому етапі.

  4. Завантаження утиліти для очищення сховищ.

    Завантажте останню версію утиліти: storage-cleanup-cli-1.4.0-20241008.160941-2.jar.

  5. Режими роботи утиліти.

    Утиліта підтримує три основні режими роботи:

    • dry-run: зчитує CSV-файл з активними екземплярами процесів та ідентифікує ключі, які потрібно видалити, але не здійснює фактичного видалення. Ідентифіковані ключі записуються у CSV-файли для Ceph і Redis.

    • remove-only: використовується для видалення ключів, які визначено на етапі dry-run. Не потребує повторної ідентифікації ключів.

    • full-run: зчитує CSV-файл з активними екземплярами процесів, ідентифікує та видаляє непотрібні ключі. Результати записуються у ті ж CSV-файли, що й при dry-run.

  6. Запуск утиліти.

    Запустіть утиліту з наступними параметрами:

    java -jar storage-cleanup-cli.jar
             --execute-mode=<arg>
             --running-processes-csv-file=<arg>
             --s3-ceph-url=<arg>
             --lowcode-file-storage-secret-key=<arg>
             --lowcode-file-storage-access-key=<arg>
             --lowcode-form-data-storage-secret-key=<arg>
             --lowcode-form-data-storage-access-key=<arg>
             --ceph-removal-output-csv-file=<arg>
             --redis-url=<arg>
             --redis-secret=<arg>
             --redis-removal-output-csv-file=<arg>
             --removal-batch-size=<arg>
             --log-output=<arg>
             --removal-limit=<arg>
             --do-not-remove-after-timestamp=<arg>

3. Опис параметрів утиліти

Утиліта storage-cleanup-cli підтримує наступні параметри конфігурації:

  • --execute-mode=<режим>: виберіть режим роботи утиліти (dry-run, remove-only або full-run).

  • --running-processes-csv-file=<шлях>: шлях до CSV-файлу з активними екземплярами процесів.

  • --s3-ceph-url=<URL>: URL для Ceph сховища. Якщо не вказано, документи з Ceph не будуть видалені.

    Необов’язково, якщо надано Redis URL.
  • --lowcode-file-storage-secret-key=<ключ>: секретний ключ для кошика lowcode-file-storage.

    Необов’язково.
  • --lowcode-file-storage-access-key=<ключ>: ключ доступу для кошика lowcode-file-storage.

    Необов’язково.
  • --lowcode-form-data-storage-secret-key=<ключ>: секретний ключ для кошика lowcode-form-data-storage.

    Необов’язково.
  • --lowcode-form-data-storage-access-key=<ключ>: ключ доступу для кошика lowcode-form-data-storage.

    Необов’язково.
  • --ceph-removal-output-csv-file=<шлях>: шлях до CSV-файлу для зберігання ключів Ceph, що підлягають видаленню.

  • --redis-url=<URL>: URL для Redis сховища. Якщо не вказано, документи з Redis не будуть видалені.

    Необов’язково, якщо надано Ceph URL.
  • --redis-secret=<секрет>: пароль для Redis.

  • --redis-removal-output-csv-file=<шлях>: шлях до CSV-файлу для зберігання ключів Redis, що підлягають видаленню.

  • --removal-batch-size=<значення>: розмір пакета для операцій видалення. За замовчуванням: 1000.

  • --log-output=<шлях>: шлях до файлу з логами, що створюється після виконання утиліти. За замовчуванням: s3-storage-cleanup-cli.log.

  • --removal-limit=<значення>: максимальна кількість об’єктів, які можуть бути фактично видалені під час одного запуску утиліти. Обмеження є глобальним та застосовується одночасно до Ceph і Redis.

    Необов’язково.
  • --do-not-remove-after-timestamp=<значення>: забороняє видалення об’єктів Ceph, дата останньої модифікації яких є новішою за вказаний момент часу. Параметр використовується як додатковий механізм захисту від випадкового видалення нещодавно створених або змінених документів.

    Необов’язково.

4. Особливості обробки великих обсягів даних

Обробка Ceph та Redis виконується у потоковому режимі.

Під час роботи утиліта:

  • не накопичує у пам’яті всі об’єкти Ceph;

  • не накопичує у пам’яті всі ключі Redis;

  • не накопичує у пам’яті повний перелік кандидатів на видалення.

  • Кандидати на видалення формуються під час обробки та одразу записуються до audit CSV-файлів.

  • Ceph-об’єкти зчитуються сторінками за допомогою механізму пагінації S3, а Redis-ключі — за допомогою команди SCAN.

5. Додаткові інструкції