Перейти к основному содержимому

Установка Copywala

Цель выполнения

Установка модуля Copywala является обязательной, если целевая СУБД — PostgreSQL или Pangolin.

Предусловия

Перед началом установки убедитесь, что выполнены следующие условия:

  1. Подготовлено окружение.
  2. Дистрибутив CopyWala распакован в соответствии с инструкцией, приведенной в разделе Установка, шаг Распаковка дистрибутива CopyWala.
Важно

Перед установкой модуля copywala заранее создайте целевую базу данных или используйте уже существующую.

Для выполнения административных операций необходимо настроить одного из следующих пользователей:

  • пользователь с правами superuser;
  • пользователь backup_user (стандартная роль СУБД Pangolin) с дополнительной ролью pg_read_all_settings;
  • пользователь copywala_user.
  1. Если роль backup_user отсутствует, создайте ее:

    CREATE ROLE backup_user;
    ALTER ROLE backup_user WITH
    NOSUPERUSER
    NOINHERIT
    NOCREATEROLE
    NOCREATEDB
    LOGIN
    REPLICATION
    NOBYPASSRLS;
  2. Назначьте необходимые разрешения:

    BEGIN;

    GRANT USAGE ON SCHEMA pg_catalog TO backup_user;

    GRANT EXECUTE ON FUNCTION pg_catalog.current_setting(text) TO backup_user;
    GRANT EXECUTE ON FUNCTION pg_catalog.pg_is_in_recovery() TO backup_user;
    GRANT EXECUTE ON FUNCTION pg_catalog.pg_start_backup(text, boolean, boolean) TO backup_user;
    GRANT EXECUTE ON FUNCTION pg_catalog.pg_stop_backup(boolean, boolean) TO backup_user;
    GRANT EXECUTE ON FUNCTION pg_catalog.pg_create_restore_point(text) TO backup_user;
    GRANT EXECUTE ON FUNCTION pg_catalog.pg_switch_wal() TO backup_user;
    GRANT EXECUTE ON FUNCTION pg_catalog.pg_last_wal_replay_lsn() TO backup_user;
    GRANT EXECUTE ON FUNCTION pg_catalog.txid_current() TO backup_user;
    GRANT EXECUTE ON FUNCTION pg_catalog.txid_current_snapshot() TO backup_user;
    GRANT EXECUTE ON FUNCTION pg_catalog.txid_snapshot_xmax(txid_snapshot) TO backup_user;
    GRANT EXECUTE ON FUNCTION pg_catalog.pg_control_checkpoint() TO backup_user;

    GRANT pg_monitor TO backup_user;

    COMMIT;
  3. Дополнительно настройте роль:

    -- Разрешить наследование ролей
    ALTER ROLE backup_user WITH INHERIT;

    -- Предоставить доступ к чтению системных настроек
    GRANT pg_read_all_settings TO backup_user;

После настройки:

  • добавьте правила доступа для пользователя в pg_hba.conf;
  • проверьте возможность подключения к СУБД.

Последовательность действий

Выполните установку Copywala одним из способов:

Установка из RPM-пакета

  1. Установите пакет copywala-{component_version}-{OS_version}.x86_64.rpm из директории pbr/owned/pbra/rpms:

    sudo dnf install {component_name}-{component_version}-{OS_version}.x86_64.rpm

    Пример заполненной команды:

    sudo dnf install copywala-1.1.0-sberlinux9.x86_64.rpm
  2. Откройте файл конфигурации copywala.yaml:

    sudo vi /etc/pbr/copywala.yaml
  3. Заполните конфигурационные параметры.

    Пример заполненных параметров

    # --------------------------------------
    # Настройка подключения к целевой БД
    # --------------------------------------
    target_db:
    host: localhost
    port: 5433
    user: {username}
    password: password
    database: postgres
    # опция получения секретов подключения к БД через утилиту pg_auth_config
    is_pg_auth_config_enabled: false # параметр позволяет применять аутентификацию пользователей при помощи pg_auth_config # если значение выставлено true, то в данном разделе параметр password указывать не нужно
    pg_auth_config_plugins_path: /usr/lib/pbr/copywala # путь к каталогу, содержащему плагины аутентификации
    vault_database_engine_static_role: # имя статической роли в хранилище секретов для получения доступов к БД. Значение пустое по умолчанию
    query_params: search_path=pbr # параметр позволяет настроить набор значений, специфичных для Pangolin/PostgreSQL, при подключении к базе данных
    # по умолчанию применяется глобальный tls
    tls:
    rootca:
    local_path: tls/root.crt # путь к локальному файлу
    # vault_path: <path> # путь к секрету в HarhiCorp/SecMan
    # vault_key: <key> # ключ внутри json-секрета
    cert:
    local_path: tls/cert.crt
    # vault_path: <path> # путь к секрету в HarhiCorp/SecMan
    # vault_key: <key> # ключ внутри json-секрета
    key:
    local_path: tls/cert.key
    # vault_path: <path> # путь к секрету в HarhiCorp/SecMan
    # vault_key: <key> # ключ внутри json-секрета

    # --------------------------------------
    # Возможность загрузки TLS-сертификатов из HashiCorp Vault / Secret Management System (SecMan)
    # --------------------------------------
    vault: # настройки подключения
    server: "<vault-url>"
    namespace: "<namespace>"
    path: "<mount-path>" # путь к точке монтирования хранилища секретов
    kv_version: v2 # версия формата формата KV-хранилища
    approle:
    role_id: <role-id> # уникальный идентификатор роли
    secret_id: <secret-id> # секретный ключ роли. Либо указывается явно, либо прописывается wrapping_secret_id_file_path
    # auth_method: approle # метод аутентификации
    # wrapping_secret_id_file_path: /var/pbr/cw.wrapped.secret.vlt # путь к файлу для хранения wrapping token
    # wrapping_secret_id_ttl: 8h # время жизни wrapping token (например, 10m - 10 минут, 6h - 6 часов)

    # --------------------------------------
    # Параметры подключения к KMS HashiCorp Vault
    # --------------------------------------
    kms:
    server: "<vault-url>" # URL сервера KMS
    namespace: "<namespace>" # пространство имен в KMS HashiCorp Vault
    path: "<mount-path>" # путь к точке монтирования хранилища секретов
    kv_version: v2 # версия формата KV-хранилища
    approle: # вариант авторизации в KMS по роли и ключа роли
    role_id: "<role-id>" # уникальный идентификатор роли
    secret_id: "<secret-id>" # секретный ключ роли. Либо указывается явно, либо прописывается wrapping_secret_id_file_path
    # auth_method: approle # метод аутентификации
    # wrapping_secret_id_file_path: /var/pbr/cw.wrapped.secret.vlt # путь к файлу для хранения wrapping token
    # wrapping_secret_id_ttl: 8h # время жизни wrapping token (например, 10m - 10 минут, 6h - 6 часов)
    userpass: # вариант авторизации в KMS по логину и паролю
    # username:
    # password:
    # auth_method:

    # --------------------------------------
    # Настройки БД для хранения информации о выполненных задачах резервного копирования и восстановления данных
    # --------------------------------------
    pbra_db:
    host: localhost
    port: 5433
    user: {username}
    password: password
    database: postgres
    is_pg_auth_config_enabled: false # параметр позволяет применять аутентификацию пользователей при помощи pg_auth_config # если значение выставлено true, то в данном разделе параметр password указывать не нужно
    vault_database_engine_static_role: # имя статической роли в хранилище секретов для получения доступов к БД. Значение пустое по умолчанию
    query_params: search_path=pbr # параметр позволяет настроить набор значений, специфичных для Pangolin/PostgreSQL, при подключении к базе данных
    tls:
    rootca:
    local_path: tls/root.crt # путь к локальному файлу
    # vault_path: <path> # путь к секрету в HarhiCorp/SecMan
    # vault_key: <key> # ключ внутри json-секрета
    cert:
    local_path: tls/cert.crt
    # vault_path: <path> # путь к секрету в HarhiCorp/SecMan
    # vault_key: <key> # ключ внутри json-секрета
    key:
    local_path: tls/cert.key
    # vault_path: <path> # путь к секрету в HarhiCorp/SecMan
    # vault_key: <key> # ключ внутри json-секрета

    # --------------------------------------
    # Назначение резервной копии (обязательный параметр без restore_data_path)
    # --------------------------------------
    # local-fs:///home/postgres/backups/
    # ddboost://srv-10-15.host/storage-unit
    # s3://srv-10-20.host/bucket-08-9992
    # s2://srv-10-25.host:port
    backup_destination_uri: local-fs:///home/postgres/backups/

    # --------------------------------------
    # Назначение директории для архивирования WAL-файлов
    # --------------------------------------
    # local-fs:///home/postgres/backups/wals/
    # s3://srv-10-20.host/wals-bucket/
    # s2://srv-10-25.host:port/wals/
    wal_destination_uri: local-fs:///home/postgres/backups/wals/

    # --------------------------------------
    # Секция параметров multi-restore (механизм восстановления WAL-файлов из нескольких хранилищ)
    # --------------------------------------
    wal_restore:
    multi_restore_wal_uris: ["s2://srv-10-25.host:29509/path1", "s2://srv-10-26.host:29509/path2"] # список хранилищ WAL-файлов. Значение параметра формируется автоматически при вызове copywala restore-wal prepare-multi-restore
    multi_restore_cache_path: /var/pbr/copywala/multi-restore.wals.cache # путь к кеш-файлу с информацией о хранилищах и диапазонах WAL-файлов, которые в них находятся

    # --------------------------------------
    # Директория для восстановления данных (обязательный параметр без backup_destination_uri)
    # --------------------------------------
    restore_data_path: local-fs:///pgdata/06/data

    # --------------------------------------
    # Наименование экземпляра БД для восстановления
    # --------------------------------------
    restore_instance_name: NAME_UUID # пример: db1_0198ad69-1a19-7b7f-9f46-f200942fd61c

    # --------------------------------------
    # Настройка повторных попыток при возникновении ошибок при записи РК
    # --------------------------------------
    retrier:
    timeout: 10s # максимальное время выполнения запроса
    retries: 5 # максимальное количество попыток
    delay_period: 1s # период задержки

    # --------------------------------------
    # Размер WAL-файла (опционально, по умолчанию 16777216 (16MB))
    # --------------------------------------
    wal_segment_size: 16MB

    # --------------------------------------
    # Конфигурация S3
    # --------------------------------------
    s3:
    region: ru-test # регион s3
    access_id: <id> # идентификатор пользователя
    secret_key: <key> # секретный ключ
    use_path_style: false # если параметр имеет значение true, задействуется формат полного URL с указанием пути (path-style addressing); если false – название бакета включается непосредственно в доменное имя.
    disable_request_checksums: false # проверка контрольных сумм запросов
    tls: # опционально
    rootca:
    local_path: tls/root.crt # путь к локальному файлу
    # vault_path: <path> # путь к секрету в HarhiCorp/SecMan
    # vault_key: <key> # ключ внутри json-секрета
    cert:
    local_path: tls/cert.crt
    # vault_path: <path> # путь к секрету в HarhiCorp/SecMan
    # vault_key: <key> # ключ внутри json-секрета
    key:
    local_path: tls/cert.key
    # vault_path: <path> # путь к секрету в HarhiCorp/SecMan
    # vault_key: <key> # ключ внутри json-секрета

    # --------------------------------------
    # Конфигурация S2
    # --------------------------------------
    s2:
    checksum_algorithm: DISABLED # выбор алгоритма вычисления контрольной суммы. Допустимые значения: DISABLED (по умолчанию), CRC32
    storage_path: "" # значение по умолчанию пустое. Задается пользователем для возможности выбора одного из дополнительных хранилищ, пример: /var/pbr/s2/backups
    tls: # опционально
    rootca:
    local_path: tls/root.crt # путь к локальному файлу
    # vault_path: <path> # путь к секрету в HarhiCorp/SecMan
    # vault_key: <key> # ключ внутри json-секрета
    cert:
    local_path: tls/cert.crt
    # vault_path: <path> # путь к секрету в HarhiCorp/SecMan
    # vault_key: <key> # ключ внутри json-секрета
    key:
    local_path: tls/cert.key
    # vault_path: <path> # путь к секрету в HarhiCorp/SecMan
    # vault_key: <key> # ключ внутри json-секрета
    s2tp_enabled: true # флаг использования протокола S2TP для взаимодействия copywala и storage service (s2). По умолчанию – true. Используется только в рамках операций передачи данных при создании и восстановлении резервных копий. gRPC остается как основной протокол для взаимодействия с S2, кроме переноса данных.
    # при значении false – используется gRPC для всех взаимодействий
    s2tp:
    addresses: # массив адресов сервера s2
    - "<host_1:port_1>"
    - "<host_2:port_2>"
    # ...
    # Важно: порты, указанные в этом массиве должны совпадать с портам из storage-service.yaml блока s2.s2tp.addresses.
    # Хосты, указанные в этом массиве должны совпадать с значением параметра backup_destination_uri файла copywala.yaml.
    enable_tls: true # флаг использования TLS-протокола
    max_connections: 16 # максимальное количество открытых соединений к серверу (на все указанные в массиве s2tp.addresses адреса)
    read_timeout: 5m # таймаут для операции чтения
    write_timeout: 5m # таймаут для операции записи
    tls: # опционально
    rootca:
    local_path: tls/root.crt # путь к локальному файлу
    # vault_path: <path> # путь к секрету в HarhiCorp/SecMan
    # vault_key: <key> # ключ внутри json-секрета
    cert:
    local_path: tls/cert.crt
    # vault_path: <path> # путь к секрету в HarhiCorp/SecMan
    # vault_key: <key> # ключ внутри json-секрета
    key:
    local_path: tls/cert.key
    # vault_path: <path> # путь к секрету в HarhiCorp/SecMan
    # vault_key: <key> # ключ внутри json-секрета

    # --------------------------------------
    # Конфигурация DDBoost (Data Domain Boost)
    # --------------------------------------
    ddboost:
    enc_creds_path: "<path-to-enc-creds-file>" # путь к учетным данным (защищенным преобразованием) для подключения к хранилищу DDBoost (заполняется опционально). При заданном значении параметры username и password в секции storage игнорируются
    client_settings:
    ddboost_lib_path: libDDBoost.so # путь к динамической библиотеке DDBoost (по умолчанию — libDDBoost.so). Если не задана переменная LD_LIBRARY_PATH или в ней отсутствует нужный путь, укажите здесь полный путь к файлу
    read_client_side_decompress: false # флаг включения распаковки на стороне клиента. При значении false распаковка выполняется на стороне сервера. При значении true – на стороне клиента, что позволяет снизить нагрузку на сеть
    client_type: 0 # тип клиента, который подключается к DDBoost. Для copywala значение менять не требуется
    buffer_size: 0 # размер буфера ввода-вывода. 0 означает использование размер буфера по умолчанию
    auto_create_storage_unit: true # автоматически создавать отдельное хранилище (storage_unit) в системе Data Domain для резервных копий, если оно еще не создано
    storage:
    username: "<username>" # имя пользователя для подключения к хранилищу DDBoost. Игнорируется если в copywala.yaml задан параметр enc_creds_path
    password: "<password>" # пароль для подключения к хранилищу DDBoost. Игнорируется если в copywala.yaml задан параметр enc_creds_path
    max_conns_no: 16 # максимальное количество одновременных соединений с DDBoost; соединения переиспользуются из пула, если они не простаивали дольше max_idle_time, иначе при необходимости создается новое соединение, если не превышен лимит max_conns_no
    max_idle_time: 5m # допустимое время простоя соединения, после которого неактивное подключение закрывается и удаляется из пула соединений
    tls: # опционально
    rootca:
    local_path: tls/root.crt # путь к локальному файлу
    # vault_path: <path> # путь к секрету в HarhiCorp/SecMan
    # vault_key: <key> # ключ внутри json-секрета
    cert:
    local_path: tls/cert.crt
    # vault_path: <path> # путь к секрету в HarhiCorp/SecMan
    # vault_key: <key> # ключ внутри json-секрета
    key:
    local_path: tls/cert.key
    # vault_path: <path> # путь к секрету в HarhiCorp/SecMan
    # vault_key: <key> # ключ внутри json-секрета
    # Дополнительные параметры настройки TLS для DDBoost. Подробное описание параметров и допустимых значений смотрите в официальной документации DDBoost
    use_tls: false # включает TLS. Обязательно установите true, если указан хоть один сертификат в секции ddboost.storage.tls или секции глобального TLS («Конфигурация TLS используемая по умолчанию для всех сетевых соединений»)
    auth_mode: 0 # режим TLS: 1 - односторонний, 2 - двусторонний, 3 - анонимный
    encr_strength: 0 # уровень TLS-шифрования: 1 - слабый, 2 - сильный
    cert_verify_flag: 0 # битовая комбинация флагов проверки TLS-сертификатов и FQDN клиента/сервера: 0 – отключить проверку сертификатов, 1 – проверять FQDN сервера, 2 – проверять FQDN клиента. Например, при значении 3 будет проверяться FQDN и сервера и клиента

    # --------------------------------------
    # Настройки архивирования РК
    # --------------------------------------
    archive_settings:
    upload_params:
    part_payload_size: 32MB # размер парта передаваемых данных
    checksum_algorithm: CRC32 # выбор алгоритма вычисления контрольной суммы. CRC32 – значение по умолчанию. Допустимые значения: DISABLED, CRC32, SHA256
    compression_algorithm: S2 # выбор алгоритма сжатия данных при создании РК. S2 – значение по умолчанию. Допустимые значения: DISABLED, ZSTD, S2

    # --------------------------------------
    # Политика исполнения резервного копирования
    # --------------------------------------
    backup_policy:
    strategy: pbr.policy.backup.strategy.full # выбор стратегии резервного копирования. Также доступно – pbr.policy.backup.strategy.delta
    fast_checkpoint: false # флаг для переключения типа контрольной точки, по умолчанию spread (протяженная), при включении запускает принудительное создание контрольной точки сразу при начале создания базовой РК
    workers_no: 2 # количество параллельных потоков, осуществляющих чтение из каталога PGDATA с диска (не включая WAL-файлы)
    max_pending_wals: -1 # задает режим работы очереди (включение/отключение) и ее максимальный лимит для WAL-файлов, обрабатываемых в текущий момент (по умолчанию «-1» – очередь включена без ограничения размера)
    progress_latency: 0.025 # шаг в долях от размера резервной копии, на котором сообщается прогресс
    use_temporary_replication_slot: true # флаг включения использования временного слота репликации при выполнении резервного копирования: при true – используется временный слот репликации, при значении false – используется постоянный слот репликации
    read_direct_io: false # режим чтения данных из файлов, исключая использование кеша ОС
    write_direct_io: false # режим записи данных в файл без использования кеша ОС (актуально для локальных РК)
    read_cache_size: # значение параметра должно быть кратно 4 КБ на Linux # используйте совместно с read_direct_io для РК произвольной папки (generic folder backup)
    delta_max_steps: 3 # допустимое отставание реплики от главного узла при восстановлении, измеряемое количеством пропущенных шагов репликации
    write_parts_workers_no: 4 # количество параллельных рабочих процессов (workers), выполняющих операцию записи отдельных партов
    write_wals_workers_no: 4 # количество параллельных рабочих процессов (workers), выполняющих обработку WAL-файлов
    verify_page_checksums: false # активация проверки контрольных сумм страниц во время исполнения РК
    max_allowed_page_verification_failures: 0 # максимальное количество ошибок при проверке целостности страниц во время исполнения РК
    backup_file_mode: 0400 # числовое представление прав доступа на создаваемые файлы
    backup_dir_mode: 0700 # числовое представление прав доступа на создаваемые каталоги
    wal_stream_tmp_dir: /tmp # директория для временного хранения WAL-файлов перед записью в резервную копию
    protection_key_path: # путь к ключу в KMS HashiCorp Vault, необходимому для защитного преобразования при создании резервной копии
    local_path: "<local-path>"
    # vault_path: <path>
    # vault_key: <key>

    compress_tde: true # включает защитное преобразование на стороне copywala. Используется если включено сжатие (в copywala.yaml задан archive_settings.compression_algorithm) и в Pangolin включен TDE (в is_tde_on = on).
    # Данный параметр игнорируется при резервном копировании чистого PostgreSQL, произвольных директорий (generic-folder) и других СУБД, в которых не используется защитное преобразование
    extra_files: # список путей к дополнительным файлам, которые необходимо включить в резервную копию. По умолчанию пуст: это значит, что в архив резервной копии будут сохранены только данные из PGDATA и из связанных с ней табличных пространств
    # файлы, указанные ниже, приведены для примера
    - /etc/pangolin-pooler/pangolin-pooler.ini
    - /etc/pangolin-manager/postgres.yml

    # --------------------------------------
    # Пример политики слияния (значения по умолчанию)
    # --------------------------------------
    merge_policy:
    write_parts_workers_no: max(runtime.NumCPU()/2, 1) # количество одновременно работающих процессов для записи частей резервных копий. Устанавливается равным половине числа ядер CPU, но минимум один поток
    read_parts_workers_no: max(runtime.NumCPU()/2, 1) # количество одновременно работающих процессов для чтения резервных копий. Равно половине количества ядер CPU, но не менее одного потока
    verify_page_checksums: false # проверка контрольных сумм страниц PostgreSQL
    max_allowed_page_verification_failures: 0 # максимальное число допустимых ошибок при проверке контрольных сумм страниц
    verify_archive_checksums: true # проверка контрольных сумм всего архива резервной копии
    read_direct_io: false # приложение будет использовать буферизованный ввод-вывод операционной системы при чтении данных
    write_direct_io: false # приложение будет использовать буферизованный ввод-вывод операционной системы при записи данных

    # --------------------------------------
    # Параметры синхронизации узлов кластера БД
    # --------------------------------------
    catchup_policy:
    strategy: pbr.policy.backup.strategy.full # стратегия синхронизации

    # параметры для основного узла (primary)
    master_params:
    workers_no: 4 # количество параллельных рабочих процессов (workers), одновременно на одном воркере загружается только один файл
    wals_workers_no: 4 # количество параллельных рабочих процессов (workers), необходимых для передачи WAL-файлов через репликационный протокол
    max_pending_wals: -1 # размер очереди WAL-файлов на отправку. Останавливает синхронизацию (catchup), если лимит очереди WAL-файлов на отправку превышен. По умолчанию выключен
    wal_stream_tmp_dir: # директория для временного хранения WAL-файлов
    progress_latency: 0.1 # шаг в долях от размера резервной копии, на котором в логах отображается прогресс (0.1 - каждые 10%)
    write_file_timeout: 30m # тайм-аут загрузки одного файла, если файл не успел загрузиться за это время, то синхронизация (catchup) обрывается
    fast_checkpoint: false # флаг для переключения типа контрольной точки
    allow_replica_hosts: # хосты всех узлов кластера, с которых мастеру разрешено подключаться к серверу реплики
    - 10.40.48.109
    s2tp:
    enable_tls: true # флаг использования TLS-протокола
    max_connections: 16 # максимальное количество TCP-соединений, которое может быть открыто при взаимодействии с сервером реплики одновременно
    read_timeout: 5m # тайм-аут одного запроса на чтение, не учитывается при загрузке файла
    write_timeout: 5m # тайм-аут одного запроса на запись, не учитывается при загрузке файла
    tls: # опционально
    rootca:
    local_path: tls/root.crt # путь к локальному файлу
    # vault_path: <path> # путь к секрету в HarhiCorp/SecMan
    # vault_key: <key> # ключ внутри json-секрета
    cert:
    local_path: tls/cert.crt
    # vault_path: <path> # путь к секрету в HarhiCorp/SecMan
    # vault_key: <key> # ключ внутри json-секрета
    key:
    local_path: tls/cert.key
    # vault_path: <path> # путь к секрету в HarhiCorp/SecMan
    # vault_key: <key> # ключ внутри json-секрета

    # параметры для узла-реплики (standby)
    replica_params:
    s2tp:
    addresses: # адреса, на которых запускается сервер реплики и ожидаются подключения от primary. Если используется Pangolin Manager или другие инструменты управления кластером, убедитесь, что указанные адреса доступны с мастера
    - 0.0.0.0:29505
    mtls: false # флаг включения взаимодействия по mTLS
    max_connections: 16 # максимальное количество TCP-соединений, которое может быть открыто при взаимодействии с сервером реплики одновременно
    read_timeout: 5m # тайм-аут одного запроса на чтение, не учитывается при загрузке файла
    write_timeout: 5m # тайм-аут одного запроса на запись, не учитывается при загрузке файла
    tls: # опционально
    rootca:
    local_path: tls/root.crt # путь к локальному файлу
    # vault_path: <path> # путь к секрету в HarhiCorp/SecMan
    # vault_key: <key> # ключ внутри json-секрета
    cert:
    local_path: tls/cert.crt
    # vault_path: <path> # путь к секрету в HarhiCorp/SecMan
    # vault_key: <key> # ключ внутри json-секрета
    key:
    local_path: tls/cert.key
    # vault_path: <path> # путь к секрету в HarhiCorp/SecMan
    # vault_key: <key> # ключ внутри json-секрета

    # --------------------------------------
    # Конфигурация архивирования WAL-файлов
    # --------------------------------------
    wal_archiving:
    is_multi_wal_archiving_enabled: false # многопоточный режим архивации WAL-файлов
    multi_wal_archiving_workers_no: 4 # количество потоков для параллельной передачи WAL-файлов в хранилище
    wal_batch_size: 100 # 100 по умолчанию. Чтобы отключить ограничение размера пакета, установите значение равным 0 или любому отрицательному целому числу

    # Archive WALs in CWL
    is_wal_archiving_in_cwl_enabled: false # включение/отключение архивации журналов предзаписи WAL в CWL
    wal_archiving_cwl_max_file_size: 1GB # максимальный размер CWL-архива с WAL-сегментами

    force_switch_cwl_lock_timeout: 15s # Максимальное время ожидания командой copywala archive-wal force-switch-cwl освобождения эксклюзивной блокировки, удерживаемой процессом copywala archive-wal при архивировании WAL-файлов в CWL-архив

    wal_compression_algorithm: S2 # алгоритм сжатия WAL-файлов. S2 – значение по умолчанию. Допустимые значения: DISABLED, ZSTD, S2, LZ4

    is_archive_logs_to_file_only: false # флаг отключения логирования сообщений уровня INFO в стандартный поток ошибок (stderr). При значении true – сообщения уровня INFO записываются только в журнал Copywala

    dir_mode: 0700 # настройка прав доступа для каталогов создаваемых при архивировании
    file_mode: 0600 # настройка прав доступа для архивируемых WAL-файлов
    wal_file_mode: 0600 # числовое представление прав доступа на создаваемые файлы
    wal_dir_mode: 0700 # числовое представление прав доступа на создаваемые каталоги

    wal_prefetch_size: 0 # включение и регулировка многопоточной загрузки WAL-файлов. По умолчанию выключено
    wal_prefetch_dir: "" # путь к директории для хранения предзагруженных WAL-файлов. По умолчанию пустое значение означает что, директория создается в каталоге pg_wal

    # --------------------------------------
    # Политика восстановления (ниже приведены значения по умолчанию)
    # --------------------------------------
    restore_policy:
    workers_no: runtime.NumCPU()
    jobs_queue_size: 16 # размер очереди задач на распаковку партов архива
    progress_latency: 0.1 # шаг в долях от размера резервной копии, на котором сообщается прогресс (0.1 - каждые 10%)
    reverse_restore: false # порядок восстановления резервных копий данных. При true – восстановление производится в обратном порядке, при false – восстановление идет последовательно

    verify_page_checksums: false # активация проверки контрольных сумм страниц во время восстановления
    max_allowed_page_verification_failures: 0 # максимальное количество ошибок при проверке целостности страниц во время восстановления

    verify_archive_checksums: true # проверка контрольных сумм всего архива
    read_direct_io: false # режим чтения данных из файлов, исключая использование кеша ОС
    write_direct_io: false # режим записи данных в файлы, исключая использование кеша ОС (не доступно для generic folder backups)

    protection_key_path: # путь к ключу в KMS HashiCorp Vault, необходимому для защитного преобразования при восстановлении из резервной копии
    local_path: "<local-path>"
    # vault_path: <path>
    # vault_key: <key>

    # --------------------------------------
    # Конфигурация TLS используемая по умолчанию для всех сетевых соединений (DB, S2, S3, ...)
    # --------------------------------------
    tls:
    rootca:
    local_path: tls/root.crt # путь к локальному файлу
    # vault_path: <path> # путь к секрету в HarhiCorp/SecMan
    # vault_key: <key> # ключ внутри json-секрета
    cert:
    local_path: tls/cert.crt
    # vault_path: <path> # путь к секрету в HarhiCorp/SecMan
    # vault_key: <key> # ключ внутри json-секрета
    key:
    local_path: tls/cert.key
    # vault_path: <path> # путь к секрету в HarhiCorp/SecMan
    # vault_key: <key> # ключ внутри json-секрета

    # --------------------------------------
    # Конфигурация Prometheus (подробное описание атрибутов по умолчанию и обязательных атрибутов каждого поля см. в документации)
    # --------------------------------------
    prometheus:
    push_model:
    jobname:
    address:
    process_collector_opts:
    report_errors:
    pid:
    namespace:
    frequency:
    req_timeout:
    tls: # опционально
    rootca:
    local_path: tls/root.crt # путь к локальному файлу
    # vault_path: <path> # путь к секрету в HarhiCorp/SecMan
    # vault_key: <key> # ключ внутри json-секрета
    cert:
    local_path: tls/cert.crt
    # vault_path: <path> # путь к секрету в HarhiCorp/SecMan
    # vault_key: <key> # ключ внутри json-секрета
    key:
    local_path: tls/cert.key
    # vault_path: <path> # путь к секрету в HarhiCorp/SecMan
    # vault_key: <key> # ключ внутри json-секрета
    pull_model:
    endpoint: /metrics
    address:
    process_collector_opts:
    report_errors:
    pid:
    namespace:
    handler_opts:
    timeout:
    max_requests_in_flight:
    disable_compression:
    log_errors:

    tls: # опционально
    rootca:
    local_path: tls/root.crt # путь к локальному файлу
    # vault_path: <path> # путь к секрету в HarhiCorp/SecMan
    # vault_key: <key> # ключ внутри json-секрета
    cert:
    local_path: tls/cert.crt
    # vault_path: <path> # путь к секрету в HarhiCorp/SecMan
    # vault_key: <key> # ключ внутри json-секрета
    key:
    local_path: tls/cert.key
    # vault_path: <path> # путь к секрету в HarhiCorp/SecMan
    # vault_key: <key> # ключ внутри json-секрета

    # --------------------------------------
    # Опциональные настройки приложения
    # --------------------------------------
    app:
    agent_id_file_path: /etc/pbr/pbr.agent.id # путь к файлу, содержащему идентификатор агентcкого приложения
    copywala_dir: /etc/pbr/copywala # рабочая директория
    allow_concurrent_create_backup: false # управляет возможностью запуска нескольких операций создания резервных копий одновременно
    agent_id_file_mode: 0400 # числовое представление прав доступа на создаваемые файлы
    copywala_dir_mode: 0700 # числовое представление прав доступа на создаваемые каталоги
    creds_private_key_path: /var/pbr/copywala/priv.key # путь к приватному ключу приложения
    copywala_plugins_dir: /usr/lib/pbr/copywala # путь к директории, где находится плагин защитного преобразования

    go_mem_limit: 2GB # мягкий лимит heap-памяти для сборщика мусора Go. При достижении лимита сборщик мусора начинает работать с большей частотой, чтобы удерживать потребление памяти в заданных пределах (в документации go – GOMEMLIMIT)
    # если параметр не указан в copywala.yaml, лимит памяти будет автоматически установлен в размере 1/4 от общего объема RAM, доступного в системе (например, при 32 ГБ оперативной памяти лимит составит 8 ГБ)
    # если задано значение 0 – будут использоваться настройки Go по умолчанию
    # при указании значения – будет установлен заданный лимит
    go_gc_percent: 100 # процент роста heap-памяти перед запуском сборки мусора. Значение 100 означает, что сборка мусора запускается после увеличения объёма heap в 2 раза относительно объема после предыдущей сборки (в документации go – GOGC)
    # более подробное описание параметров приведено в документации go https://go.dev/doc/gc-guide (см. GOMEMLIMIT и GOGC)
    # --------------------------------------
    # Настройка параметров подключения к Platform V Monitor (OPM) и Единый клиент (SDK) Platform V Monitor (MSDK)
    # --------------------------------------
    audit:
    central_audit: # секция с подключением к Platform V Monitor (OPM)
    address: "<https://audit.example.com>"
    tls: # (опционально) сертификаты для подключения к хранилищу через tls
    rootca: # пути к сертификату удостоверяющего центра
    local_path: "<tls/root.crt>" # путь к локальному файлу
    vault_path: "<path>" # путь к секрету в HashiCorp Vault/SecMan
    vault_key: "<key>" # ключ внутри JSON-секрета
    cert: # пути к сертификату сервера
    local_path: "<tls/cert.crt>"
    vault_path: "<path>" # путь к секрету в HashiCorp Vault/SecMan
    vault_key: "<key>" # ключ внутри JSON-секрета
    key: # пути к ключу сервера
    local_path: "<tls/cert.key>"
    vault_path: "<path>" # путь к секрету в HashiCorp Vault/SecMan
    vault_key: "<key>" # ключ внутри JSON-секрета
    msdk_audit: # секция с подключением к Единый клиент (SDK) Platform V Monitor (MSDK)
    address: "<https://audit.msdk.example.com>"
    tls: # (опционально) сертификаты для подключения к хранилищу через tls
    rootca: # пути к сертификату удостоверяющего центра
    local_path: "<tls/root.crt>" # путь к локальному файлу
    vault_path: "<path>" # путь к секрету в HashiCorp Vault/SecMan
    vault_key: "<key>" # ключ внутри JSON-секрета
    cert: # пути к сертификату сервера
    local_path: "<tls/cert.crt>"
    vault_path: "<path>" # путь к секрету в HashiCorp Vault/SecMan
    vault_key: "<key>" # ключ внутри JSON-секрета
    key: # пути к ключу сервера
    local_path: "<tls/cert.key>" # путь к локальному файлу
    vault_path: "<path>" # путь к секрету в HashiCorp Vault/SecMan
    vault_key: "<key>" # ключ внутри JSON-секрета
    retrier: # настройка повторных попыток при возникновении ошибок при отправке событий аудита
    timeout: 10s # максимальное время выполнения запроса
    retries: 5 # максимальное количество попыток
    delay_period: 1s # период задержки

    # --------------------------------------
    # Настройка ведения журналов приложения
    # --------------------------------------
    log:
    path: /var/log/pbr/copywala.log # путь к лог-файлу
    dir_mode: 0700 # настройка прав доступа на создаваемые каталоги. Значения необходимо задавать в восьмеричной системе счисления с ведущим нулем.
    file_mode: 0600 # настройка прав доступа на создаваемые файлы. Значения необходимо задавать в восьмеричной системе счисления с ведущим нулем.
    max_size: 100 # максимальный размер лог-файла в мегабайтах. По умолчанию `100 МБ`
    max_age: 90 # максимальный возраст лог-файла в днях
    max_backups: 10 # максимальное количество резервных копий лог-файлов, которые будут храниться. Если выбрано 0, то количество файлов не ограничено
    use_local_time: true # параметр определяет, в каком формате будут записываться метки времени в имена файлов при ротации. Если выбрано true, используется локальное системное время, при false (и по умолчанию) – `UTС`.
    compress_backups: false # параметр определяет необходимость сжатия файлов. Если выбрано true, лог-файлы будут сжаты, если false, лог-файлы будут храниться без сжатия

    примечание

    С подробной информацией о настройках конфигурации логов можно ознакомиться в разделе «Системный журнал».

Автоматизированная установка с помощью Ansible

Сценарий описан в разделе Автоматизированная установка (с помощью Ansible).

Проверка результата

Для проверки установки и работоспособности Copywala обратитесь к разделу Чек-лист проверки корректности работы.