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

Установка CopyWala OB

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

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

Резервные копии и архивы логов OceanBase Database размещаются в хранилище Storage Service: модуль Storage Service обязателен для работы с OceanBase Database.

Предусловия​

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

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

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

к сведению

Установка Copywala OB возможна только ручным способом из RPM-пакета.

  1. Установите пакет copywala-ob-{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-ob-1.3.0-sberlinux9.x86_64.rpm
  2. Для работы с copywala-ob переключитесь на пользователя pbr. Пользователь создается автоматически при установке пакета Copywala OB:

    sudo su - pbr

  3. Откройте файл конфигурации copywala-ob.yaml:

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

    Пример

    :title: Параметры файла copywala-ob.yaml :collapsible:

    # --------------------------------------
    # Подключение к целевой базе данных 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, лог-файлы будут храниться без сжатия

Настройка TLS-сертификатов для CopyWala OB​

Настройка TLS-сертификатов для подключения к OceanBase Database не требуется: TLS-настройки в copywala-ob.yaml применяются только к взаимодействию с хранилищами резервных копий (секции tls (глобальная), s2.tls, s3_backup_server.tls, s3_logs_server.tls). Порядок выпуска и настройки сертификатов — в разделе Настройка интеграции Platform V CopyWala с внешними сервисами.

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

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