Восстановление базы данных из файла резервной копии в формате CDBBZ
Введение
Здесь представлены инструкции по восстановлению базы данных Comindware Platform для следующего сценария:
- используется ранее настроенный экземпляр ПО Comindware Platform под управлением ОС Linux;
- имеется файл резервной копии базы данных с расширением
.CDBBZ
(архив резервной копии); - резервная копия создана с помощью встроенной в ПО функции «Резервное копирование» (см. «Резервное копирование. Настройка и запуск, просмотр журнала сеансов»);
- индексы OpenSearch (Elasticsearch) восстанавливаются отдельно от восстановления базы данных экземпляра ПО.
Прежде чем приступать к восстановлению экземпляра ПО Comindware Platform из резервной копии, ознакомьтесь с видеороликом и инструкциями, представленными ниже.
Порядок восстановления
- Восстановите базу данных и скрипты.
- При необходимости восстановите лицензионные ключи.
- При необходимости восстановите индексы OpenSearch (Elasticsearch).
Фактические пути и имена файлов
При выполнении инструкций будьте внимательны: указывайте фактические имена файлов и пути, которые используются в вашей системе.
Такие имена указаны в угловых скобках, например:
<backupName>.cdbbz
— имя файла резервной копии в формате CDBBZ;<Database>
— директория базы данных экземпляра ПО (например,/var/lib/comindware/<instanceName>/Database
);<instanceName>
— имя экземпляра ПО, для которого выполняется восстановление;<instanceName>.yml
— файл конфигурации экземпляра ПО;<path/to>
— путь к директории или файлу в вашей системе; замените на фактический путь согласно своей структуре каталогов.<Scripts>
— директория, содержащая C#-скрипты экземпляра ПО;<serviceName>
— имя службы, которую требуется проверить или остановить (например,comindware<instanceName>
,apigateway<instanceName>
,adapterhost<instanceName>
);<user>
— имя пользователя, в домашней директории которого находится файл резервной копии;
Восстановление базы данных и скриптов
-
Перейдите в режим суперпользователя:
sudo -s
или
su -
-
Остановите службы экземпляра ПО (где
<instanceName>
— имя экземпляра ПО):systemctl stop comindware<instanceName>
systemctl stop apigateway<instanceName>
-
Остановите службу adapterhost:
systemctl stop adapterhost<instanceName>
-
С помощью команды
systemctl status <serviceName>
удостоверьтесь, что службы остановлены. -
Перейдите в директорию с CDBBZ-файлом резервной копии, например
/home/<user>
:cd /home/<user>
-
Создайте временную директорию для распакованной резервной копии (например,
tmp
):mkdir tmp
-
Распакуйте архив резервной копии в директорию
tmp
:unzip -q <backupName>.cdbbz -d tmp/
-
Перейдите в директорию
tmp
и просмотрите её содержимое:cd tmp
ls
-
Архив будет распакован в несколько директорий.
Фактический набор директорий
В дальнейших инструкциях используются директории
Database
,Scripts
иStreams
.- В архиве всегда имеется директория
Database
с резервной копией базы данных. - Если в резервной копии нет директорий
Scripts
иStreams
, пропускайте связанные с ними инструкции. - Если в резервной копии имеется директория
History
с данными OpenSearch (Elasticsearch), их следует восстанавливать средствами OpenSearch (Elasticsearch). См. «Восстановление индексов OpenSearch (Elasticsearch) из файла резервной копии репозитория».
- В архиве всегда имеется директория
-
Для восстановления резервной копии используйте пути, указанные в следующих директивах YML-файла конфигурации экземпляра ПО
/usr/share/comindware/configs/instance/<instanceName>.yml
:db.workDir: <path/to/Database>
— путь к директории базы данных;userStorage.localDisk.path: <path/to/Streams>
— путь к директории пользовательских файлов.
Восстановление резервной копии на другом экземпляре ПО
При создании экземпляра ПО база данных привязывается к имени, которое указано в директиве
db.name
(имя базы данных) файла конфигурации<instanceName>.yml
.Если вы восстанавливаете резервную копию на новом экземпляре ПО, необходимо убедиться, что в YML-файле конфигурации задано такое же значение
db.name
, как у экземпляра ПО, на котором была создана резервная копия.Просмотрите файл конфигурации с помощью следующей команды:
cat /usr/share/comindware/configs/instance/<instanceName>.yml
-
Убедитесь в наличии директорий
<Database>
и<Streams>
, указанных в YML-файле конфигурации:ls -lh <path/to/Database>
ls -lh <path/to/Streams>
-
Если папки присутствуют, удалите их содержимое:
rm -rf <path>/Database/*
rm -rf <path>/Streams/*
-
Если папки отсутствуют, создайте их:
mkdir -p <path>/Database
mkdir -p <path>/Streams
-
-
Перейдите в директорию распакованной резервной копии (например,
/home/<user>/tmp/
). -
Переместите директорию
Scripts
вDatabase
:mv Scripts Database
-
Переместите содержимое резервной копии в директории экземпляра ПО:
mv Database/* <path/to/Database>
mv Streams/* <path/to/Streams>
-
Назначьте перенесённым директориям права
rwxrw-rw-
:chmod -R 766 <path/to/Database> <path/to/Streams> /var/lib/comindware/<instanceName>
-
Назначьте перенесенным директориям владельца:
chown -R <User>:<Group> <path/to/Database> <path/to/Streams> /var/lib/comindware/<instanceName>
Здесь
<User>
,<Group>
— значения соответствующих параметров из файла/usr/lib/systemd/system/comindware<instanceName>.service
-
Если в файле конфигурации экземпляра ПО отсутствует параметр
nodeName
(имя узла экземпляра ПО), добавьте его:-
Откройте файл конфигурации для редактирования:
nano /usr/share/comindware/configs/instance/<instanceName>.yml
-
Добавьте директиву:
nodeName: <instanceName>
Имя узла и лицензионные ключи
Чтобы использовать на восстановленном экземпляре ПО прежние лицензионные ключи, скопируйте имя узла из конфигурации исходного экземпляра ПО.
-
-
При необходимости восстановите индексы OpenSearch (Elasticsearch) из резервной копии.
-
Запустите службы экземпляра ПО и проверьте их статус:
systemctl start adapterhost<instanceName>
systemctl start comindware<instanceName>
systemctl start apigateway<instanceName>
systemctl status comindware<instanceName>
systemctl status apigateway<instanceName>
systemctl status adapterhost<instanceName>
-
Откройте веб-сайт экземпляра ПО.
- Дождитесь инициализации экземпляра ПО. Этот процесс может занять некоторое время. Может потребоваться обновить страницу браузера. См. «Инициализация Comindware Platform».
- Удостоверьтесь, что все данные из резервной копии восстановлены.
- Проверьте и исправьте конфигурацию экземпляра ПО. См. «Проверка и настройка конфигурации экземпляра ПО Comindware Platform после восстановления из резервной копии».
-
Удалите временную директорию с распакованной резервной копией:
rm -r /home/<user>/tmp
Восстановление лицензионных ключей
Внимание!
Лицензионные ключи привязаны к имени экземпляра ПО (<instanceName>
) и уникальному идентификатору оборудования сервера (Hardware ID).
Поэтому восстановление возможно только на том же сервере, на котором была создана резервная копия.
При развёртывании на новом оборудовании необходимо заново выполнить активацию лицензионных ключей.
Чтобы использовать на восстановленном экземпляре ПО прежние лицензионные ключи, выполните указанные ниже действия.
-
Откройте файл конфигурации для редактирования:
nano /usr/share/comindware/configs/instance/<instanceName>.yml
-
Укажите такое же значение
nodeName
(имя узла экземпляра ПО), как в конфигурации исходного экземпляра ПО:nodeName: <instanceName>
-
Включите директиву
isContainerEnvironment
:isContainerEnvironment: true
-
Перезапустите экземпляр ПО:
systemctl restart comindware<instanceName>
-
Удостоверьтесь, что лицензионные ключи присутствуют на странице «Администрирование» — «Лицензирование».
- Назначьте лицензионные ключи аккаунтам и группам.
Восстановление индексов OpenSearch (Elasticsearch) из файла резервной копии репозитория
Логика работы репозитория снимков OpenSearch (Elasticsearch)
OpenSearch (Elasticsearch) сохраняет и восстанавливает резервные копии своих данных в виде снимков в директорию, заданную директивой path.repo
в файле конфигурации /etc/elasticsearch/elasticsearch.yml
.
Эта директория служит как для сохранения резервных копий, так и для их восстановления.
-
Остановите службу OpenSearch (Elasticsearch) и удостоверьтесь, что она остановлена:
systemctl stop elasticsearch
systemctl status elasticsearch
-
Создайте папку репозитория OpenSearch (Elasticsearch) (например,
/var/backups/elasticsearch/
) и перенесите в неё файлы из каталогаHistory
ранее распакованной резервной копии:mkdir /var/backups/elasticsearch/
mv /var/lib/comindware/<instanceName>/History/* /var/backups/elasticsearch/
-
Назначьте папке репозитория и её содержимому полные права доступа:
chmod -R 777 /var/backups/elasticsearch/
-
Назначьте владельца
elasticsearch
папке репозитория и её содержимому:chown -R elasticsearch:elasticsearch /var/backups/elasticsearch/
-
В файле конфигурации
/etc/elasticsearch/elasticsearch.yml
укажите путь к созданному репозиторию:path.repo: /var/backups/elasticsearch
-
Запустите службу OpenSearch (Elasticsearch):
systemctl start elasticsearch
-
Зарегистрируйте репозиторий (например,
<repository_backup>
) с резервной копией снимка OpenSearch (Elasticsearch) (<openSearchHost>
— адрес сервера OpenSearch (Elasticsearch)) :-
С авторизацией в OpenSearch (Elasticsearch):
curl -X PUT "https://<openSearchHost>:<opeSearchPort>/_snapshot/<repository_backup>?pretty" \
-u <username>:<password> \
-H 'Content-Type: application/json' -d \
'{
"type": "fs",
"settings": {
"location": "/var/backups/elasticsearch"
}
}'
-
Без авторизации в OpenSearch (Elasticsearch):
curl -X PUT "https://<openSearchHost>:<opeSearchPort>/_snapshot/<repository_backup>?verify=false&pretty" \
-H 'Content-Type: application/json' -d \
'{
"type": "fs",
"settings": {
"location": "/var/backups/elasticsearch"
}
}'
Примечание
Шаги 7 и 8 не требуются при восстановлении снимка из хранилища S3.
Для восстановления снимка из хранилища S3 используйте репозиторий с именем, совпадающим с префиксом индекса OpenSearch (Elasticsearch).
Этот репозиторий создаётся автоматически при запуске резервного копирования
Префикс индекса задаётся в свойствах подключения к OpenSearch (Elasticsearch), используемого по умолчанию.
-
-
Проверьте содержимое зарегистрированного репозитория:
curl -X GET "https://<openSearchHost>:<opeSearchPort>/_snapshot/<repository_backup>?pretty"
-
Восстановите снимок OpenSearch (Elasticsearch):
curl -X POST "https://<openSearchHost>:<opeSearchPort>/_snapshot/<repository_backup>/<backupsessionXX>/_restore?pretty"
- В качестве репозитория укажите имя репозитория, созданного на шаге 7, или префикс индекса OpenSearch (Elasticsearch) при восстановлении из хранилища S3 (см. примечание выше).
- В качестве имени снимка укажите идентификатор резервной копии без точки перед номером и строчными буквами (например,
backupSession.123
указывайте какbackupsession123
) со страницы «Администрирование» – «Инфраструктура» – «Резервное копирование» – «Журнал».
-
Проверьте наличие индексов в восстановленном каталоге:
curl -X GET "https://<openSearchHost>:<opeSearchPort>/_cat/indices?pretty"
Эта статья была полезна 3 чел.