Восстановление базы данных из файла резервной копии в формате .CDBBZ
Введение
Здесь представлены инструкции по восстановлению базы данных Comindware Business Application Platform для следующего сценария:
- используется ранее настроенный экземпляр ПО Comindware Business Application Platform под управлением ОС Linux;
- имеется файл резервной копии базы данных с расширением
.CDBBZ
; - резервная копия создана с помощью встроенной в ПО функции «Резервное копирование» (см. «Резервное копирование. Настройка и запуск, просмотр журнала сеансов»);
- индексы Elasticsearch восстанавливаются отдельно от восстановления базы данных экземпляра ПО.
Восстановление базы данных и скриптов
-
Перейдите в режим суперпользователя:
sudo -s
или
su -
-
Остановите службы экземпляра ПО (где
<instanceName>
— имя экземпляра ПО):systemctl stop comindware<instanceName>
systemctl stop apigateway<instanceName>
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>
-
-
При необходимости восстановите индексы 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 Business Application Platform».
- Удостоверьтесь, что все данные из резервной копии восстановлены.
- Проверьте и исправьте конфигурацию экземпляра ПО. См. «Проверка и настройка конфигурации экземпляра ПО Comindware Business Application Platform после восстановления из резервной копии».
-
Удалите временную директорию с распакованной резервной копией:
rm -r /home/<user>/tmp
Восстановление индексов Elasticsearch из файла резервной копии репозитория
-
Остановите службу Elasticsearch и удостоверьтесь, что она остановлена:
systemctl stop elasticsearch
systemctl status elasticsearch
-
Создайте папку репозитория Elasticsearch (например,
/var/www/backups/elasticsearch/
) и перенесите в неё файлы из каталогаHistory
ранее распакованной резервной копии:mkdir /var/www/backups/elasticsearch/
mv /var/lib/comindware/<instanceName>/History/* /var/www/backups/elasticsearch/
-
Назначьте папке репозитория и её содержимому права
rwxr-xr-x
:chmod -R 755 /var/www/backups/
-
Назначьте владельца
elasticsearch
папке репозитория и её содержимому:chown -R elasticsearch:elasticsearch /var/www/backups/
-
В файле конфигурации
/etc/elasticsearch/elasticsearch.yml
укажите путь к созданному репозиторию:path.repo: /var/www/backups/elasticsearch
-
Запустите службу Elasticsearch:
systemctl start elasticsearch.service
-
Зарегистрируйте репозиторий (например,
repostory_backup
) с резервной копией снимка Elasticsearch:curl -X PUT "localhost:9200/_snapshot/repostory_backup?pretty" -H ’Content-Type: application/json’ -d’
{
"type": "fs",
"settings": {
"location": "/var/www/backups/elasticsearch"
}
}
Примечание
Шаги 7 и 8 не требуются при восстановлении снимка из хранилища S3.
Для восстановления снимка из хранилища S3 используйте репозиторий с именем, совпадающим с префиксом индекса Elasticsearch.
Этот репозиторий создаётся автоматически при запуске резервного копирования
Префикс индекса задаётся в свойствах подключения к Elasticsearch, используемого по умолчанию.
-
Проверьте содержимое зарегистрированного репозитория:
curl -X GET "localhost:9200/_cat/snapshots/repostory_backup?pretty"
-
Восстановите снимок Elasticsearch:
curl -X POST "localhost:9200/_snapshot/repostory_backup/backupSession123/_restore?pretty"
- В качестве репозитория укажите имя репозитория, созданного на шаге 7, или префикс индекса Elasticsearch (см. примечание выше).
- В качестве имени снимка укажите идентификатор резервной копии без точки перед номером (например,
backupSession.123
указывайте какbackupSession123
) со страницы «Администрирование» – «Инфраструктура» – «Резервное копирование» – «Журнал».
-
Проверьте наличие индексов в восстановленном каталоге:
curl -X GET "localhost:9200/_cat/indices?pretty"
Эта статья была полезна 2 чел.