Восстановление базы данных, вложенных файлов и журналов из полной резервной копии
Введение
Здесь представлены инструкции по восстановлению базы данных экземпляра ПО Comindware Platform (далее «экземпляр ПО»), развёрнутого в среде Linux.
Данные инструкции подходят для восстановления из резервной копии, созданной по инструкциям в статье «Создание полной резервной копии (базы данных, вложенных файлов и журналов) без остановки экземпляра ПО».
В данных инструкциях используются только стандартные средства операционной системы и Elasticsearch.
В статье рассмотрены два сценария:
- восстановление базы данных при её переносе на новую машину;
- восстановление базы данных на ранее работавшей системе c имеющейся базой данных.
Для восстановления базы данных экземпляра ПО из файла резервной копии необходимо распаковать архив резерва в пользовательскую или временную директорию, откуда уже перенести файлы и директории в целевые директории.
Для восстановления журнала операций требуется зарегистрировать репозиторий в Elasticsearch и из зарегистрированного репозитория восстановить данные.
Исходные данные
Для восстановления данных перейдите в директорию с резервной копией базы данных экземпляра ПО, созданной по инструкции в статье «Создание полной резервной копии (базы данных, вложенных файлов и журналов) без остановки экземпляра ПО».
Здесь предполагается, что архив резервной копии находится папке /tmp/
.
Подготовка к восстановлению из резервной копии
-
Для выполнения всех операций перейдите в режим суперпользователя
root
:sudo -s
или
su -
-
Перед тем как выполнять любые действия с файлами ПО и базы данных, остановите экземпляр ПО и его вспомогательные службы и удостоверьтесь, что они остановлены:
systemctl stop elasticsearch nginx kafka comindware<instancename>
systemctl status elasticsearch nginx kafka comindware<instancename>
Здесь
<instancename>
— имя экземпляра ПО. -
Если восстановление из резервной копии производится в рамках переноса продукта на чистый экземпляр ПО без базы данных, переходите к восстановлению БД.
-
Для сохранения целостности данных перед восстановлением из резервной копии требуется очистить директории c базой данных и загруженными файлами:
rm -rf /var/lib/comindware/<instancename>/Database/*
rm -rf /var/lib/comindware/<instancename>/Streams/*
Восстановление базы данных из резервной копии
-
Перейдите в директорию с загруженным архивом резервной копии (например,
tmp
):cd /tmp/
-
Распакуйте архив с резервной копией (например,
backup_2023_01_23_10_17.tar.bz2
):tar -xf backup_2023_01_23_10_17.tar.bz2
-
Войдите в директорию резервной копии и просмотрите её содержимое:
cd backup_2023_01_23_10_17/
ll
Содержимое папки резервной копии Распакованная директория резервной копии должна иметь следующую структуру:
Database
— файлы базы данных.Scripts
— скомпилированные библиотеки для скриптов на языке C#.snapshots
— снимок данных Apache Ignite Ignite.wal
— журнал предварительной записи.elastic
— копия репозитория Elasticsearch (OpenSearch).Streams
— загруженные пользователями и сформированные системой файлы, которые прикреплены к соответствующим атрибутам.
Структура резервной копии -
Перенесите снимок данных Apache Ignite (в примере — содержимое директории
/tmp/backup_2023_01_23_10_17/Database/snapshots/snapshot_2023_01_23_10_17/
) в рабочую директорию Apache Ignite (/var/www/comindware/data/Database/
):mv Database/snapshots/snapshot_2023_01_23_10_17/* /var/lib/comindware/<instancename>/Database/
-
Перенесите директорию со скриптами из резервной копии в рабочую директорию Apache Ignite:
mv Database/Scripts /var/lib/comindware/<instancename>/Database/
-
Перенесите директорию с загруженными файлами из резервной копии в целевую директорию:
mv Streams /var/lib/comindware/<instancename>/Database/
-
Назначьте перенесённым папкам права
rwxr-xr-x
:chmod -R 755 /var/lib/comindware/<instancename>/Database/Streams/
chmod -R 755 /var/lib/comindware/<instancename>/Database/
-
Назначьте перенесенным папкам владельца
www-data
:chown -R www-data:www-data /var/lib/comindware/<instancename>/Database/Streams/
chown -R www-data:www-data /var/lib/comindware/<instancename>/Database/
Восстановление индексов Elasticsearch из резервной копии репозитория
-
Создайте директорию репозитория Elasticsearch и перенесите в неё файлы из резервной копии:
mkdir /var/www/backups/elasticsearch/
mv elastic/* /var/www/backups/elasticsearch/
-
Назначьте папке репозитория и её содержимому права
rwxr-xr-x
:chmod -R 755 /var/www/backups/
-
Назначьте владельца
elasticsearch
директории репозитория и её содержимому:chown -R elasticsearch:elasticsearch /var/www/backups/
-
В файле конфигурации
elasticsearch.yml
с помощью директивыpath.repo: /var/www/backups/elasticsearch
укажите путь к созданному репозиторию (например, с помощью редактораnano
):nano /etc/elasticsearch/elasticsearch.yml
Путь к репозиторию в файле конфигурации Elasticsearch -
Запустите службу Elasticsearch:
systemctl start elasticsearch.service
-
Зарегистрируйте новый репозиторий снимков Elasticsearch:
curl -X PUT "localhost:9200/_snapshot/elastic_snap?pretty" -H 'Content-Type: application/json' -d' {"type": "fs", "settings": {"location": "/var/www/backups/elasticsearch"}}'
-
Проверьте содержимое зарегистрированного репозитория:
curl -X GET "localhost:9200/_cat/snapshots/elastic_snap?pretty"
-
Выберите необходимый снимок и восстановите состояние Elasticsearch:
curl -X POST "localhost:9200/_snapshot/elastic_snap/snapshot2023_01_23_10_17/_restore?pretty"
-
Проверьте наличие индексов в восстановленном каталоге:
curl -X GET "localhost:9200/_cat/indices?pretty"
Запуск и проверка конфигурации экземпляра ПО
-
Запустите необходимые службы и проверьте их статус:
systemctl start elasticsearch kafka nginx comindware<instancename>
systemctl status elasticsearch kafka nginx comindware<instancename>
-
Откройте в браузере веб-сайт с экземпляром ПО.
- Дождитесь инициализации экземпляра ПО. Этот процесс может занять некоторое время. Может потребоваться обновить страницу браузера.
- Проверьте и исправьте конфигурацию экземпляра. См. «Проверка и настройка конфигурации экземпляра ПО после восстановления из резервной копии».