OceanBase Database
Для интеграции с OceanBase Database укажите в конфигурационном файле copywala-ob.yaml параметры для подключения к целевой базе данных:
# --------------------------------------
# Подключение к целевой базе данных OceanBase Database
# --------------------------------------
target_db:
address: "<host:port>" # адрес и порт OceanBase Database
username: "<username>" # имя пользователя, имеющего права доступа к системному тенанту (sys-тенанту) и к тенанту, для которого выполняется РК
password: "<password>" # пароль пользователя
# Использование пароля, сохраненного в защищенном виде (Vault)
# vault_path: "<path>" # путь к секрету в HashiCorp/SecMan
# vault_key: "<key>" # ключ внутри json-секрета (по умолчанию password)
# --------------------------------------
# Назначение резервной копии (хранилище РК)
# Существующие варианты протоколов:
# - s2://<s2-host>/<root_path> — s2 протокол, root_path опционален
# - s3://<s3-host>/<bucket_name> — S3-хранилище
# --------------------------------------
backup_destination_uri: "<s2://srv-10-25.host/oceanbase?s3-host=29577>" # путь до хранилища РК. Параметр обязателен для команд create-backup и restore
# --------------------------------------
# Назначение архива логов
# --------------------------------------
logs_destination_uri: "<s2://srv-10-25.host/oceanbase>" # путь до хранилища логов. Параметр обязателен для команды archive-logs. Для команд create-backup и restore, если параметр не задан, используется backup_destination_uri
# --------------------------------------
# Режим резервного копирования
# --------------------------------------
# Допустимые значения:
# s3-proxy (по умолчанию) — копирование в S3-совместимое хранилище (S2/S3);
# fuse-proxy — (запрещено использовать: функциональность в разработке) создание резервной копии через FUSE.
backup_mode: "<s3-proxy>"
# --------------------------------------
# Политика резервного копирования
# --------------------------------------
backup_policy:
strategy: "<pbr.policy.backup.strategy.full>" # тип создаваемой копии: полная — pbr.policy.backup.strategy.full (по умолчанию), дельта — pbr.policy.backup.strategy.delta
log_piece_switch_interval: "<1d>" # интервал переключения лог-юнита (log piece) в OceanBase Database при архивации логов
progress_interval: "<5s>" # интервал опроса статуса задания создания РК по служебным таблицам OceanBase Database и вывода прогресса в лог
# --------------------------------------
# Политика восстановления
# --------------------------------------
restore_policy:
with_statement: "<pool_list=test_pool>" # выделенный пул ресурсов для восстановления. Помимо pool_list можно передавать переменные как query-параметры через '&'
progress_interval: "<5s>" # интервал опроса статуса задания восстановления по служебным таблицам OceanBase Database и вывода прогресса в лог
# --------------------------------------
# Настройки S2
# --------------------------------------
s2:
# tls: # опционально. Параметры групп взаимозаменяемы — необходимо указать одну из групп: local_path | vault_path + vault_key | pki (опция pki для key недоступна)
# rootca:
# local_path: "<tls/root.crt>" # путь к локальному файлу
# # или
# # vault_path: <path> # путь к секрету в HashiCorp/SecMan, используется с vault_key
# # vault_key: <key> # ключ внутри json-секрета, используется с vault_path
# # или
# # pki: <...> # сертификат из PKI — корпоративной системы управления сертификатами
# cert:
# local_path: "<tls/cert.crt>"
# # или
# # vault_path: <path> # путь к секрету в HashiCorp/SecMan, используется с vault_key
# # vault_key: <key> # ключ внутри json-секрета, используется с vault_path
# # или
# # pki: <...> # сертификат из PKI — корпоративной системы управления сертификатами
# key:
# local_path: "<tls/cert.key>" # путь к локальному файлу
# # или
# # vault_path: <path> # путь к секрету в HashiCorp/SecMan, используется с vault_key
# # vault_key: <key> # ключ внутри json-секрета, используется с vault_path
# --------------------------------------
# Настройки S3-сервера для backup_destination_uri
# --------------------------------------
s3_backup_server:
# при использовании s2-протокола access_id/secret_key не передаются (s2 использует собственную аутентификацию)
# access_id: "<key>"
# secret_key: "<secret>"
region: "<ru-s2>" # регион s3 (для s2-протокола: ru-s2)
use_path_style: <true> # если параметр имеет значение true, задействуется формат полного URL с указанием пути (path-style addressing); если false – название бакета включается непосредственно в доменное имя (для s2 поддерживается только path-style)
disable_request_checksums: <true> # проверка контрольных сумм запросов (для s2-протокола не поддерживается)
# tls: # опционально. Параметры групп взаимозаменяемы — необходимо указать одну из групп: local_path | vault_path + vault_key | pki (опция pki для key недоступна)
# rootca:
# local_path: "<tls/root.crt>" # путь к локальному файлу
# # или
# # vault_path: <path> # путь к секрету в HashiCorp/SecMan, используется с vault_key
# # vault_key: <key> # ключ внутри json-секрета, используется с vault_path
# # или
# # pki: <...> # сертификат из PKI — корпоративной системы управления сертификатами
# cert:
# local_path: "<tls/cert.crt>"
# # или
# # vault_path: <path> # путь к секрету в HashiCorp/SecMan, используется с vault_key
# # vault_key: <key> # ключ внутри json-секрета, используется с vault_path
# # или
# # pki: <...> # сертификат из PKI — корпоративной системы управления сертификатами
# key:
# local_path: "<tls/cert.key>" # путь к локальному файлу
# # или
# # vault_path: <path> # путь к секрету в HashiCorp/SecMan, используется с vault_key
# # vault_key: <key> # ключ внутри json-секрета, используется с vault_path
# --------------------------------------
# Настройки S3-сервера для logs_destination_uri
# --------------------------------------
s3_logs_server:
# при использовании s2-протокола access_id/secret_key не передаются (s2 использует собственную аутентификацию)
# access_id: "<key>"
# secret_key: "<secret>"
region: "<ru-s2>" # регион s3 (для s2-протокола: ru-s2)
use_path_style: <true> # если параметр имеет значение true, задействуется формат полного URL с указанием пути (path-style addressing); если false – название бакета включается непосредственно в доменное имя (для s2 поддерживается только path-style)
disable_request_checksums: <true> # проверка контрольных сумм запросов (для s2-протокола не поддерживается)
# tls: # опционально. Параметры групп взаимозаменяемы — необходимо указать одну из групп: local_path | vault_path + vault_key | pki (опция pki для key недоступна)
# rootca:
# local_path: "<tls/root.crt>" # путь к локальному файлу
# # или
# # vault_path: <path> # путь к секрету в HashiCorp/SecMan, используется с vault_key
# # vault_key: <key> # ключ внутри json-секрета, используется с vault_path
# # или
# # pki: <...> # сертификат из PKI — корпоративной системы управления сертификатами
# cert:
# local_path: "<tls/cert.crt>"
# # или
# # vault_path: <path> # путь к секрету в HashiCorp/SecMan, используется с vault_key
# # vault_key: <key> # ключ внутри json-секрета, используется с vault_path
# # или
# # pki: <...> # сертификат из PKI — корпоративной системы управления сертификатами
# key:
# local_path: "<tls/cert.key>" # путь к локальному файлу
# # или
# # vault_path: <path> # путь к секрету в HashiCorp/SecMan, используется с vault_key
# # vault_key: <key> # ключ внутри json-секрета, используется с vault_path
# --------------------------------------
# Глобальная TLS-конфигурация (опционально)
# --------------------------------------
# tls: # параметры групп взаимозаменяемы — для каждого из rootca/cert/key/crl необходимо указать одну из групп: local_path | vault_path + vault_key | pki (опция pki для key и crl недоступна)
# rootca:
# local_path: "<tls/root.crt>" # путь к локальному файлу
# # или
# # vault_path: <path> # путь к секрету в HashiCorp/SecMan, используется с vault_key
# # vault_key: <key> # ключ внутри json-секрета, используется с vault_path
# # или
# # pki: <...> # сертификат из PKI — корпоративной системы управления сертификатами
# cert:
# local_path: "<tls/cert.crt>"
# # или
# # vault_path: <path> # путь к секрету в HashiCorp/SecMan, используется с vault_key
# # vault_key: <key> # ключ внутри json-секрета, используется с vault_path
# # или
# # pki: <...> # сертификат из PKI — корпоративной системы управления сертификатами
# key:
# local_path: "<tls/cert.key>" # путь к локальному файлу
# # или
# # vault_path: <path> # путь к секрету в HashiCorp/SecMan, используется с vault_key
# # vault_key: <key> # ключ внутри json-секрета, используется с vault_path
# crl:
# local_path: "<tls/revoked.crl>" # путь к локальному файлу
# # или
# # vault_path: <path> # путь к секрету в HashiCorp/SecMan, используется с vault_key
# # vault_key: <key> # ключ внутри json-секрета, используется с vault_path
# crl_dir: "<path>"
# --------------------------------------
# Запрещено использовать: функциональность в разработке. В описании приведен только корневой параметр
# Конфигурация FUSE (опционально)
# --------------------------------------
# fuse:
# --------------------------------------
# Конфигурация приложения (опционально)
# --------------------------------------
# app:
# agent_id_file_path: /etc/pbr/pbr.agent.id # путь к файлу, содержащему идентификатор агентского приложения
# agent_id_file_mode: 0400 # числовое представление прав доступа на создаваемые файлы
# copywala_dir: /var/pbr/copywala # рабочая директория
# copywala_dir_mode: 0700 # числовое представление прав доступа на создаваемые каталоги
# allow_concurrent_create_backup: false # управляет возможностью запуска нескольких операций создания резервных копий одновременно
# copywala_plugins_dir: /usr/lib/pbr/copywala # путь к директории, где находится плагин защитного преобразования
# creds_private_key_path: /var/pbr/copywala/priv.key # путь к приватному ключу приложения
# # ВАЖНО: в постановке .tmp/odb указан путь /var/pbr/copywala/priv.key,
# # в шаблоне configs/copywala-ob.example.yaml — /var/pbr/copywala-ob/priv.key. Уточнить актуальный.
# go_mem_limit: 2GB # мягкий лимит heap-памяти для сборщика мусора Go. При достижении лимита сборщик мусора начинает работать с большей частотой, чтобы удерживать потребление памяти в заданных пределах (в документации go – GOMEMLIMIT)
# go_gc_percent: 100 # процент роста heap-памяти перед запуском сборки мусора. Значение 100 означает, что сборка мусора запускается после увеличения объёма heap в 2 раза относительно объема после предыдущей сборки (в документации go – GOGC)
# --------------------------------------
# Конфигурация Vault (опционально)
# --------------------------------------
# vault: # настройки подключения
# server: "<vault-url>"
# # namespace: "<namespace>"
# # path: "<mount-path>" # путь к точке монтирования хранилища секретов
# # kv_version: v2 # версия формата KV-хранилища
# # database_engine_mount_path: "<db engine path>" # путь к точке монтирования секретов БД
# 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 часов)
# --------------------------------------
# Логирование
# --------------------------------------
log:
path: /var/log/pbr/copywala-ob.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, лог-файлы будут храниться без сжатия
примечание
Пользователь target_db.username должен иметь права доступа к системному тенанту (sys-тенанту) OceanBase Database и к тенанту, для которого выполняется резервное копирование, так как утилита copywala-ob выполняет подключение и через системный тенант (sys-тенант).
Проверка результата
Интеграция с OceanBase Database считается успешно выполненной, если при выполнении команды copywala-ob db info информация об экземпляре БД выводится без ошибок, а в журналах (логах) приложения отсутствуют записи об ошибках, связанных с подключением к целевой базе данных.