pg_anon stateless REST API service

Этот сервис предназначен для интеграции pg_anon в любую систему через HTTP-запросы. Он работает как обертка (wrapper) для CLI-версии pg_anon. REST API-вызовы подготавливают параметры командной строки и запускают CLI-версию pg_anon.

Сервис не сохраняет состояние и не хранит данные в базе данных, что позволяет легко масштабировать его без дополнительной настройки. Однако это означает, что система, интегрирующая pg_anon, должна самостоятельно реализовать хранилища для словарей, дампов и ресторов.

Сервис не подходит для полностью автономной работы.

Предварительные условия

  1. Этот инструмент поддерживает Python версии 3.11 и выше. Исходный код размещен в репозитории.

  2. Все дампы будут сохраняться в директории /путь_до_pg_anon/output. При масштабировании REST API сервиса необходимо создать символическую ссылку (symlink) для этой директории на общем диске. Это необходимо, потому что операции восстановления также обращаются к дампам по пути /путь_до_pg_anon/output.

Инструкция по установке

  1. Настройте виртуальное окружение и установите зависимости pg_anon:

    • Установите Python3:

      • для Ubuntu

      sudo apt-get install python3.11
      
      • для Redhat/Centos:

      sudo yum install python311
      
    • Клонируйте репозиторий:

      git clone https://github.com/TantorLabs/pg_anon.git
      
    • Перейдите в каталог проекта:

      cd pg_anon
      
    • Настройте виртуальную среду:

      • Установите виртуальную среду:

      python3 -m venv venv
      
      • Активируйте виртуальную среду:

      source venv/bin/activate
      
    • Установите зависимости:

      pip install -r requirements.txt
      
  2. Перейдите в директорию сервиса:

    cd rest_api
    
  3. Установите зависимости REST API сервиса:

    pip install -r requirements.txt
    

Настройка конфигурации

Для работы с несколькими версиями PostgreSQL создайте файл конфигурации /path_to_pg_anon/config.yml по инструкции. Этот конфигурационный файл будет использоваться автоматически.

Использование

Запустите сервис:

python -m uvicorn rest_api.api:app