Подготовка к обновлению¶
Примечание
Перед началом резервного копирования экспортируйте модель данных и остановите сервер приложений Tomcat
Резервное копирование компонентов¶
Резервное копирование базы данных¶
Резервное копирование базы данных выполняется стандартными средствами СУБД (pg_dump, pg_restore, pg admin и т.п.). Пример создания резервной копии с помощью утилиты pg_dump:
Остановите сервер Tomcat:
systemctl stop tomcat
Уточните имя базы данных в файле настроек <TOMCAT_HOME>/conf/Catalina/localhost/universe-backend.xml. Имя содержится в строке вида (в примере указано имя universe):
Resource .... url="jdbc:postgresql://localhost:5432/universe" .../>
Выполните команду:
pg_dump -U ${POSTGRES_USERNAME} -h ${POSTGRES_ADDRESS} -Fc ${DATABASE_NAME} > ./${DATABASE_NAME}$(date +%F_%H%M).dump
Узнать путь к БД можно в файле
./bin/setenv.sh
или с помощью команды:echo $POSTGRES_ADDRESS$DATABASE_NAME
Запустите сервер Tomcat:
systemctl start tomcat
Параметры команды могут отличаться. Необходимо убедиться, что в резервную копию были включены все схемы базы universe.
Резервное копирование поискового индекса¶
Резервное копирование поискового индекса осуществляется стандартными средствами Opensearch. Подробнее см. в официальной документации (подходит и для Opensearch). Перед выполнением операции необходимо изменить настройки Opensearch в соответствии с конфигурацией целевой системы.
Для создания резервной копии поискового индекса:
Укажите путь к репозиторию снапшотов в секции Paths (файла <OPENSEARCH_HOME>/config/opensearch.yml). Путь должен быть доступен всем узлам кластера:
path.repo : /mount/backups
Перезапустите Opensearch. Пример команды:
systemctl restart opensearch
Создайте каталог для репозитория:
mkdir -p /mount/backups
Перейдите в созданный каталог:
cd /mount/
Назначьте права на запись всем пользователям:
chmod a+w ./backups
Перезапустите узлы кластера, если используется кластерная конфигурация (в противном случае шаг можно пропустить).
Добавьте репозиторий в конфигурацию кластера. Пример выполнения из консоли с помощью утилиты curl:
$ curl -XPUT 'localhost:9200/_snapshot/universe_indices_backup' -d '{ "type" : "fs", "settings" : { "compress" : true, "location": "<путь к директории репозитория из настроек>/universe_indices_backup" } }'
Если путь к директории репозитория был указан в path.repo, его не требуется включать в вышеуказанную команду. В таком случае команда будет иметь вид:
curl -XPUT 'localhost:9200/_snapshot/universe_indices_backup' -d '{ "type" : "fs", "settings" : { "compress" : true, "location" : "universe_indices_backup" }}'
Проверьте успешность выполнения предыдущего шага (в результате выполнения команды на экране должны отобразится текущие настройки репозитория):
$ curl -XGET 'localhost:9200/_snapshot/universe_indices_backup'
Создайте снапшот всех активных индексов кластера (в примере используется имя snapshot_1):
$ curl -XPUT 'localhost:9200/_snapshot/universe_indices_backup/snapshot_1?wait_for_completion=true'
В случае успешного завершения процедуры создания снапшота на экране отобразится сообщение вида "state":"SUCCESS"
.
Для получения дополнительных сведений о состоянии снапшота выполните команду:
$ curl -XGET 'localhost:9200/_snapshot/universe_indices_backup/snapshot_1'
Резервное копирование файлов конфигурации¶
Скопируйте содержимое:
Каталога <TOMCAT_HOME>/webapps;
Каталога <TOMCAT_HOME>/universe-integration;
Каталога, указанного в параметре -Duniverse.conf файла конфигурации tomcat.conf.
Примечание
По умолчанию параметр -Duniverse.conf расположен в файле <TOMCAT_HOME>/conf/tomcat.conf
Укажите путь к файлу logback.xml в <TOMCAT_HOME>/conf/tomcat.conf:
Dlogback.configurationFile=/opt/conf/universe/logback.xml в настройках $TOMCAT_HOME/conf/tomcat.conf
Если в файл universe-backend.xml, расположенный в <TOMCAT_HOME>/ conf/Catalina/localhost, вносились изменения - создайте его резервную копию для последующего обновления.
Восстановление резервных копий¶
Восстановление резервной копии базы данных¶
Восстановление резервной копии БД осуществляется стандартными средствами СУБД (pg_restore, pg admin и т.д.). Далее представлен пример восстановления резервной копии средствами pg_restore.
Остановите сервер Tomcat:
systemctl stop tomcat
Создайте пустую БД. Для этого используйте команды консоли:
su postgres psql -U postgres create database <имя базы>; \q
Либо используйте SQL-запрос:
CREATE DATABASE <имя базы> WITH OWNER = postgres
В качестве альтернативы может быть выполнена очистка существующей БД.
Выполните команду:
$ pg_restore -d universe -p 5432 -h localhost -U <username> -- jobs=<количество параллельных потоков, каждый занимающий одно соединение + 1 административное соединение> <путь и имя файла>
Запустите сервер Tomcat:
systemctl start tomcat
Восстановление резервной копии поискового индекса¶
Восстановление резервных копий поискового индекса осуществляется стандартными средствами Opensearch. Подробнее см. в официальной документации (подходит и для Opensearch).
Для восстановления резервной копии поискового индекса:
Закройте текущие индексы:
$ curl -XPOST 'localhost:9200/_all/_close'
Количество частей (Shards) индекса в снапшоте и в кластере должны совпадать, в противном случае восстановление завершится с ошибкой. Требование не распространяется на пустые кластеры.
В случае, если имя текущих снапшотов неизвестно, используйте команду:
$ curl -XGET 'localhost:9200/_snapshot/_all'
Восстановите снапшот. Пример команды для снапшота с именем snapshot_1:
$ curl -XPOST 'localhost:9200/_snapshot/universe_indices_backup/snapshot_1/_restore'
Снапшот представляет собой слепок состояния поискового индекса. Таких снапшотов может быть несколько – для хранения нескольких состояний Opensearch.