Восстановление базы данных из файла резервной копии в формате .CDBBZ
Введение
Здесь представлены инструкции по восстановлению базы данных Comindware Platform для следующего сценария:
- используется ранее настроенный экземпляр ПО Comindware Platform под управлением ОС Linux;
- имеется файл резервной копии базы данных с расширением
.CDBBZ
; - резервная копия создана с помощью встроенной в ПО функции «Резервное копирование» (см. «Резервное копирование. Настройка и запуск, просмотр журнала сеансов»);
- индексы OpenSearch (Elasticsearch) восстанавливаются отдельно от восстановления базы данных экземпляра ПО.
Прежде чем приступать к восстановлению экземпляра ПО Comindware Platform из резервной копии, ознакомьтесь с видеороликом и инструкциями, представленными ниже.
Видеоинструкция
Ссылка на видеоролик: https://kb.comindware.ru/platform/v5.0/administration/deploy/linux/img/restore_complete_backup_linux.mp4
Восстановление базы данных и скриптов
-
Перейдите в режим суперпользователя:
sudo -s
или
su -
-
Остановите службы экземпляра ПО (где
<instanceName>
— имя экземпляра ПО):systemctl stop comindware<instanceName>
systemctl stop apigateway<instanceName>
-
Остановите службу adapterhost:
ps -fax | grep <instanceName> | grep Agent
kill -9 $(ps -eo pid,args | grep <instanceName> | grep Agent | awk {'print $1'})
или
systemctl stop adapterhost<instanceName>
-
С помощью команды
systemctl status <serviceName>
удостоверьтесь, что службы остановлены. -
Перейдите в директорию с резервной копией, например
/home/<user>
cd /home/<user>
-
Создайте временную директорию для распакованной резервной копии (например,
tmp
):mkdir tmp
-
Распакуйте архив резервной копии в директорию
tmp
:unzip -q <backupName>.cdbbz -d tmp/
-
Перейдите в директорию
tmp
и просмотрите её содержимое:cd tmp
ls
-
После распаковки архива в директории быть 3 директории:
Database
,Scripts
,Streams
.Примечание
Если в распакованной резервной копии имеется директория
Ignite
вместоDatabase
, переименуйте её вDatabase
:mv Ignite Database
-
Для восстановления резервной копии используйте следующие параметры из YML-файла конфигурации экземпляра ПО
/usr/share/comindware/configs/instance/<instanceName>.yml
:databasePath: <path/to/Database>
— путь к директории базы данных;userStorage.localDisk.path: <path/to/Streams>
— путь к директории пользовательских файлов;Просмотрите откройте файл конфигурации с помощью следующей команды:
cat /usr/share/comindware/configs/instance/<instanceName>.yml
-
Убедитесь в наличии директорий
<path/to/Database>
и<path/to/Streams>
:ls -lh <path/to/Database>
ls -lh <path/to/Streams>
-
Если папки отсутствуют, создайте их:
mkdir -p <path/to/Database>
mkdir -p <path/to/Streams>
-
-
Перейдите в директорию распакованной резервной копии (например,
/home/<user>/temp/
). -
Переместите директорию
Scripts
вDatabase
:mv Scripts Database
-
Переместите содержимое резервной копии в директории экземпляра ПО:
mv Database/* <path/to/Database>
mv Streams/* <path/to/Streams>
-
Назначьте перенесённым директориям права
rwxrw-rw-
:chmod -R 766 <path/to/Database/folder> <path/to/Streams> /var/lib/comindware/<instanceName>
-
Назначьте перенесенным директориям владельца:
chown -R <User>:<Group> <path/to/database/folder> <path/to/streams/folder> /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 comindware<instanceName>
systemctl start apigateway<instanceName>
systemctl start adapterhost<instanceName>
systemctl status comindware<instanceName>
systemctl status apigateway<instanceName>
systemctl status adapterhost<instanceName>
-
Откройте веб-сайт экземпляра ПО.
- Дождитесь инициализации экземпляра ПО. Этот процесс может занять некоторое время. Может потребоваться обновить страницу браузера. См. «Инициализация Comindware Platform».
- Удостоверьтесь, что все данные из резервной копии восстановлены.
- Проверьте и исправьте конфигурацию экземпляра ПО. См. «Проверка и настройка конфигурации экземпляра ПО Comindware Platform после восстановления из резервной копии».
-
Удалите временную директорию с распакованной резервной копией:
rm -r /home/<user>/tmp
Восстановление лицензионных ключей
Чтобы использовать на восстановленном экземпляре ПО прежние лицензионные ключи, выполните указанные ниже действия.
-
Откройте файл конфигурации для редактирования:
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>:9200/_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>:9200/_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>:9200/_snapshot/<repository_backup>?pretty"
-
Восстановите снимок OpenSearch (Elasticsearch):
curl -X POST "https://<openSearchHost>:9200/_snapshot/<repository_backup>/<backupsessionXX>/_restore?pretty"
- В качестве репозитория укажите имя репозитория, созданного на шаге 7, или префикс индекса OpenSearch (Elasticsearch) при восстановлении из хранилища S3 (см. примечание выше).
- В качестве имени снимка укажите идентификатор резервной копии без точки перед номером и строчными буквами (например,
backupSession.123
указывайте какbackupsession123
) со страницы «Администрирование» – «Инфраструктура» – «Резервное копирование» – «Журнал».
-
Проверьте наличие индексов в восстановленном каталоге:
curl -X GET "https://<openSearchHost>:9200/_cat/indices?pretty"
Эта статья была полезна 2 чел.