Skip to content

Установка конфигурации

Настройка кластера

Для настройки кластера необходимо собрать pgbackrest, утилиту и выполнить необходимые настройки.

Настройка pgbackrest

При использовании утилиты gpdr для выполнения операций резервного копирования и восстановления конфигурационные файлы pgbackrest.conf можно оставить пустыми. Утилита автоматически заполнит необходимые параметры конфигурации.

1. Установка pgbackrest

git clone https://git.angara.cloud/gbgp/greenplum.disaster.recovery/pgbackrest-sync -b integration_cdump

Примечание: Если ссылка для клонирования недоступна, можно использовать готовый бинарный файл pgbackrest. Зависимости всё равно необходимо установить (см. п.2).

2. Установка зависимостей

Установить зависимости на всех сегментах кластера. Набор пакетов может различаться в зависимости от операционной системы:

  • Ubuntu:

    sudo apt-get update
    sudo apt-get install make gcc libpq-dev libssl-dev libxml2-dev pkg-config liblz4-dev libzstd-dev libbz2-dev libz-dev libyaml-dev libssh2-1-dev
    

  • CentOS:

    sudo yum install make gcc postgresql10-devel openssl-devel libxml2-devel lz4-devel libzstd-devel bzip2-devel libyaml-devel
    

Примечание: При установке пакета postgresql10-devel возможен конфликт. Для решения проблемы необходимо удалить старые пакеты:
1. Просмотрите установленные пакеты: rpm -qa | grep postgres
2. Удалите пакет: sudo yum remove <name_rpm>
3. Повторите установку нового пакета

3. Сборка pgbackrest

cd pgbackrest/src
./configure
make

Примечание: На CentOS возможны проблемы с выполнением ./configure, чаще всего связанные с библиотекой -lpq. Дополнительно установите пакет: sudo yum install postgresql-devel

4. Установка исполняемого файла

Скопировать исполняемый файл в директорию:

sudo cp ./pgbackrest /usr/bin
sudo chmod 755 /usr/bin/pgbackrest

5. Установка Perl

sudo apt-get install perl

6. Создание директорий и настройка прав доступа

# Создание директории для логов
sudo mkdir -p -m 770 /var/log/pgbackrest
sudo chown gpadmin:gpadmin /var/log/pgbackrest

# Создание директорий конфигурации
sudo mkdir -p /etc/pgbackrest
sudo mkdir -p /etc/pgbackrest/conf.d
sudo touch /etc/pgbackrest/pgbackrest.conf
sudo chmod 640 /etc/pgbackrest/pgbackrest.conf
sudo chown gpadmin:gpadmin /etc/pgbackrest/pgbackrest.conf

Сборка утилиты gpdr

Требования:

  • Golang версии 1.20. (инструкцию по установке см. в официальной документации - https://go.dev/doc/install)

Процесс сборки:

  1. Клонирование репозитория:

    git clone https://git.angara.cloud/gbgp/greenplum.disaster.recovery/gpdr-go-temp
    

    Примечание: Используйте последний доступный tag

  2. Сборка утилиты:

    cd ../gpdr-go-temp/src/greenplum_disaster_recovery
    go build
    

  3. Установка: Скопировать полученный бинарный файл в удобное для использования место.

Правила заполнения общего конфигурационного файла

Конфигурационный файл создается перед выполнением любой команды утилиты.
Описание конфигурационного файла и список флагов см. на странице Описание.

По умолчанию файл находится в каталоге с исполняемым файлом утилиты gpdr, альтернативный путь указывается через параметр - project-config.

Общие правила заполнения конфигурационного файла

Конфигурационный файл заполняется в формате TOML:

  • Устанавливается значение key = "value"
  • Все строковые переменные указываются в кавычках
  • Для флагов с массивом данных значения разделяются запятыми

Правила заполнения конкретных флагов

  • Флаги, в которые вводятся пути к каталогам (repo-path, config-path), должны завершаться слешем /, иначе возможны проблемы при чтении файлов из каталогов
  • Флаги, определяющие файл и путь к нему (project-config), должны содержать полный путь включая имя файла, а не только путь к каталогу
  • Флаги, в которых вводится массив данных (exclude-db, exclude), указываются в кавычках через запятую
  • В конфигурационный файл можно добавлять блоки (master, segment+номер сегмента), которые содержат расположение удаленного хоста с репозиторием для соответствующего сегмента. В каждый блок обязательно включаются два параметра: repo-host и repo-host-user. Параметр repo-host-user указывается даже в случае, если его значение одинаково для всех блоков
  • Остальные флаги заполняются согласно стандартным правилам формата TOML