Резервное копирование Avanpost DS и восстановление из копии

7.11. Резервное копирование Avanpost DS и восстановление из копии

Навигатор по разделу:

1. Резервное копирование Avanpost DS

Для резервного копирования Avanpost DS используется утилита "/opt/avanpost/tools/cli/cli db-backup".
Утилита создаёт резервную копию базы данных. Запускается на контроллере домена при работающем Avanpost DS, не прерывая его работу.

ВНИМАНИЕ!

Необходимо обязательно сохранять версии дистрибутива. Резервная копия Avanpost DS привязана к конкретной версии продукта. Восстановление данных возможно только на ту же версию, с которой создавалась копия.

Флаги:

  • --output — Путь и имя файла для архива бэкапа. Архив бэкапа будет создан по указанному пути с заданным именем.
  • --config — Путь и имя файла конфигурации, который будет включён в архив бэкапа. Этот файл будет скопирован и сохранён в составе бэкапа.

  • --keytab — Путь и имя файла keytab, который будет включён в архив резервной копии. Этот файл будет скопирован и сохранён в составе бэкапа.
  • --cert — Путь и имя файла сертификата, который будет включён в архив бэкапа. Этот файл будет скопирован и сохранён в составе бэкапа.

  • --key — Путь и имя файла приватного ключа, который будет включён в архив бэкапа. Этот файл будет скопирован и сохранён в составе бэкапа.

Пример использования утилиты
$ /opt/avanpost/tools/cli/cli db-backup \
--output "/opt/avanpost/ads/backup_$(date +%F)" \
--config "/opt/avanpost/ads/config/config.yaml" \
--keytab "/opt/avanpost/ads/config/.mkey.keytab" \
--cert "/opt/avanpost/ads/dc_cert" \
--key "opt/avanpost/ads/dc_key"


Database Backup: starting...
Database Backup: successful

$ ls -la /opt/avanpost/ads/backup
-rw-r--r--. 1 ads ads 691682334 мар 20 17:09 backup_2025-03-20.tar

2. Восстановление Avanpost DS из резервной копии

2.1. Полное восстановление Avanpost DS из резервной копии 

Восстановление требуется в случае сбоя всех контроллеров в домене. Для восстановления Avanpost DS используется утилита "/opt/avanpost/tools/cli/cli db-load".
Утилита восстанавливает базу данных из резервной копии. Запускать утилиту необходимо только при выключенном Avanpost DS. При восстановлении удаляет информацию о репликах (replhosts).

Флаги:

  • --backup — Путь к архиву бэкапа. Указывает расположение файла бэкапа, который нужно восстановить.
  • --config-dest — Путь, по которому будет восстановлен конфигурационный файл из архива бэкапа. Файл будет извлечён и сохранён по этому пути (включая название).
  • --keytab-dest — Путь, по которому будет восстановлен файл keytab из архива бэкапа. Файл будет извлечён и сохранён по этому пути (включая название).
  • --cert-dest — Путь, по которому будет восстановлен сертификат из архива бэкапа. Файл будет извлечён и сохранён по этому пути (включая название).
  • --key-dest — Путь, по которому будет восстановлен приватный ключ из архива бэкапа. Файл будет извлечён и сохранён по этому пути (включая название).
Пример использования утилиты
$ /opt/avanpost/tools/cli/cli db-load \
--backup "/opt/avanpost/ads/backup_2025-03-20.tar" \
--config-dest "/opt/avanpost/ads/config/config.yaml" \
--keytab-dest "/opt/avanpost/ads/config/.mkey.keytab" \
--cert-dest "/opt/avanpost/ads/dc_cert" \
--key-dest "/opt/avanpost/ads/dc_key"


Database LOAD: starting...
config is valid
badger 2025/04/16 10:24:43 INFO: All 0 tables opened in 0s
badger 2025/04/16 10:24:43 INFO: Discard stats nextEmptySlot: 0
badger 2025/04/16 10:24:43 INFO: Set nextTxnTs to 0
Database LOAD: successful, please, start DS again.

$ ls -la /opt/avanpost | grep "data"
drwx------  2 ads ads 691682334 апр 07 07:05 data
drwx------  2 ads ads 891482734 апр 07 07:05 data_old_2025-04-7-07-05-55

Для восстановления Avanpost DS необходимо выполнить шаги:

Шаг 1. Выключить Avanpost DS на всех контроллерах домена.

Для этого требуется выполнить команду:

sudo systemctl stop ads

Шаг 2. Восстановить один из контроллеров из резервной копии.

Для этого требуется на выбранном КД запустить восстановление базы данных с помощью утилиты "cli db-load".

Шаг 3. Запустить Avanpost DS на восстановленном контроллер домена. 

Для этого требуется выполнить команду:

sudo systemctl start ads

Данный контроллер станет основным.

Шаг 4. Установить права для пользователя "ads" на директорию "/opt/avanpost".

Для этого необходимо выполнить команду:

sudo chown -R ads:ads /opt/avanpost/ads

Шаг 5. Очистить данные на остальных контроллерах.

Для этого требуется выполнить команды:

rm -rf /opt/avanpost/ads/data \
rm -rf /opt/avanpost/ads/ds-log \ 

Шаг 6. Запустить Avanpost DS на остальных контроллерах.

Для этого требуется выполнить команду:

sudo systemctl start ads

Шаг 7. Добавить остальные контроллеры домена в репликацию.

Для этого необходимо выполнить команду на каждом неосновном КД, подставив свои значения в шаблон:

Шаблон команды
/opt/avanpost/tools/cli/cli add-instance --host [IP2] --name [FQDN2] --endpoint [IP1]:48910 --user [ADMIN_USER] --password [ADMIN_PASSWORD]

Заменить [ADMIN_USER] и [ADMIN_PASSWORD] на реквизиты учетной записи пользователя с правами добавления контроллеров, по умолчанию это Administrator:Avanp0st

Заменить [IP2] на IP-адрес нового контроллера.

Заменить [IP1] на IP-адрес первичного(основного) контроллера.

Заменить [FQDN2] на FQDN нового контроллера.

Пример команды
/opt/avanpost/tools/cli/cli add-instance --host 192.168.1.12 --name ds02.avanpost.local --endpoint 192.168.1.11:48910 --user Administrator --password Avanp0st

Шаг 8. Проверить репликацию. 

Все вторичные КД должны синхронизироваться с основным КД, восстановленным из резервной копии. После завершения репликации инфраструктура будет восстановлена.

2.2. Частичное восстановление Avanpost DS из резервной копии

Для частичного восстановления Avanpost DS используется утилита "/opt/avanpost/tools/cli/cli db-load-partial".
Утилита загружает выборочные записи из резервной копии БД по указанным UID. Запускать утилиту необходимо только при выключенном Avanpost DS. Восстанавливаются только те объекты, UIDs которых переданы явно.

Флаги:

  • --backup — Путь к архиву бэкапа. Указывает расположение файла бэкапа, из которого нужно извлечь объекты.
  • --uids — Список UIDs, которые нужно восстановить, указанные через пробел. Например: "uid1 uid2 uid3".
Пример использования утилиты
$ /opt/avanpost/tools/cli/cli db-load-partial \
--backup "/opt/avanpost/ads/backup_2025-08-10.tar" \
--uids "0182735e-32f8-4df3-820f-279cd2f8c183 bd448a8d-0a40-43a1-870f-b24a54e21176"


Database LOAD PARTIAL: starting...
config is valid
Restored USN 296 296
Restored HWM for ds02.example.com 212
Restored UTD for ds02.example.com 155
2025/08/10 17:24:02 Processing UID: 0182735e-32f8-4df3-820f-279cd2f8c183
2025/08/10 17:24:02 current usn 296
attr 'surname' replacing
2025/08/10 17:24:02 new usn 297
2025/08/10 17:24:02 Processing UID: bd448a8d-0a40-43a1-870f-b24a54e21176
2025/08/10 17:24:02 current usn 297
attr 'surname' replacing
2025/08/10 17:24:02 new usn 298
Database LOAD PARTIAL: successful, please, start DS again.


Обсуждение