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

Platform V Vector DB (VDB)

Для интеграции с VDB укажите в конфигурационном файле copywala-vdb.yaml следующие параметры:

# --------------------------------------
# Настройка подключения к целевой БД
# --------------------------------------
vdb:
http_address: "<https://host:port>"
auth_enabled: <true/false>

# Использование учетных данных в открытом виде
username: "<username>"
password: "<password>"

# Использование учетных данных, сохраненных в защищенном виде
use_enc_creds: <true/false>
enc_creds_path: "</var/pbr/copywala/vdb.creds>"

# Формирование резервной копии в режиме полного снимка (единый снепшот-файл, содержащий все коллекции базы данных)
full_snapshot: <true/false>

# Копирование снепшот-файлов напрямую из локальной файловой системы
copy_local_snapshots: <true/false>
local_snapshots_path: "</vdb/snapshots>"

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

# --------------------------------------
# Назначение резервной копии
# --------------------------------------
# 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:///vdb/backups/>"

# --------------------------------------
# Директория для восстановления данных
# --------------------------------------
restore_data_path: "</vdb/data/>"

# --------------------------------------
# Наименование экземпляра БД для восстановления (уникальное имя экземпляра агента)
# --------------------------------------
restore_instance_name: ""

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

# --------------------------------------
# Возможность загрузки TLS-сертификатов из защищенного хранилища секретов
# --------------------------------------
vault: # настройки подключения
server: "<vault-url>"
namespace: "<namespace>"
path: "<mount-path>" # путь к точке монтирования хранилища секретов
kv_version: "<v2>" # версия формата хранилища ключей-значений
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:

# --------------------------------------
# Конфигурация S2
# --------------------------------------
s2:
checksum_algorithm: DISABLED # выбор алгоритма вычисления контрольной суммы. Допустимые значения: DISABLED (по умолчанию), CRC32
storage_path: "" # значение по умолчанию пустое. Задается пользователем для возможности выбора одного из дополнительных хранилищ, пример: /var/pbr/s2/backups
tls: # опционально
rootca:
local_path: tls/root.crt # путь к локальному файлу
# vault_path: <path> # путь к секрету в HashiCorp/SecMan
# vault_key: <key> # ключ внутри json-секрета
cert:
local_path: tls/cert.crt # путь к локальному файлу
# vault_path: <path> # путь к секрету в HashiCorp/SecMan
# vault_key: <key> # ключ внутри json-секрета
key:
local_path: tls/cert.key # путь к локальному файлу
# vault_path: <path> # путь к секрету в HashiCorp/SecMan
# vault_key: <key> # ключ внутри json-секрета

s2tp_enabled: true # флаг использования протокола S2TP для взаимодействия copywala и storage service (s2). По умолчанию – true. Используется только в рамках операций передачи данных при создании и восстановлении резервных копий. gRPC остается как основной протокол для взаимодействия с S2, кроме переноса данных
s2tp:
addresses: # массив адресов серверов s2
- "<host_1:port_1>"
- "<host_2:port_2>"
enable_tls: true # флаг использования TLS-протокола
max_connections: 16 # максимальное количество открытых соединений к серверу на один указанный адрес (в массиве addresses)
read_timeout: 5m # таймаут для операции чтения
write_timeout: 5m # таймаут для операции записи
tls: # опционально
rootca:
local_path: tls/root.crt # путь к локальному файлу
# vault_path: <path> # путь к секрету в HashiCorp/SecMan
# vault_key: <key> # ключ внутри json-секрета
cert:
local_path: tls/cert.crt # путь к локальному файлу
# vault_path: <path> # путь к секрету в HashiCorp/SecMan
# vault_key: <key> # ключ внутри json-секрета
key:
local_path: tls/cert.key # путь к локальному файлу
# vault_path: <path> # путь к секрету в HashiCorp/SecMan
# vault_key: <key> # ключ внутри json-секрета

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

# --------------------------------------
# Политика восстановления (ниже приведены значения по умолчанию)
# --------------------------------------
restore_policy:
workers_no: runtime.NumCPU()
jobs_queue_size: 16 # размер очереди задач на распаковку партов архива

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

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

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

# --------------------------------------
# Опциональные настройки приложения (ниже приведены значения по умолчанию)
# --------------------------------------
app:
agent_id_file_path: /etc/pbr/pbr.agent.id # путь к файлу, содержащему идентификатор агентского приложения
agent_id_file_mode: 0400 # числовое представление прав доступа на создаваемые файлы
copywala_dir: /etc/pbr/copywala # рабочая директория
copywala_dir_mode: 0700 # числовое представление прав доступа на создаваемые каталоги
allow_concurrent_create_backup: false # управляет возможностью запуска нескольких операций создания резервных копий одновременно
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)

# --------------------------------------
# Настройка ведения журналов приложения (ниже приведены значения по умолчанию)
# --------------------------------------
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 (и по умолчанию) – `UTC`.
compress_backups: false # параметр определяет необходимость сжатия резервных копий лог-файлов. Если выбрано true, лог-файлы будут сжаты, если false, лог-файлы будут храниться без сжатия

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

Интеграция с VDB считается успешно выполненной, если в журналах (логах) приложения отсутствуют записи об ошибках, связанных с подключением, передачей данных или операциями чтения-записи с API Platform V Vector DB.