Подготовка к обновлению

Примечание

Перед началом резервного копирования экспортируйте модель данных и остановите сервер приложений Tomcat

Резервное копирование компонентов

Резервное копирование базы данных

Резервное копирование базы данных выполняется стандартными средствами СУБД (pg_dump, pg_restore, pg admin и т.п.). Пример создания резервной копии с помощью утилиты pg_dump:

  1. Остановите сервер Tomcat:

    systemctl stop tomcat
    
  2. Уточните имя базы данных в файле настроек <TOMCAT_HOME>/conf/Catalina/localhost/universe-backend.xml. Имя содержится в строке вида (в примере указано имя universe): Resource .... url="jdbc:postgresql://localhost:5432/universe" .../>

  3. Выполните команду:

    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
    
  1. Запустите сервер Tomcat:

    systemctl start tomcat
    

Параметры команды могут отличаться. Необходимо убедиться, что в резервную копию были включены все схемы базы universe.

Резервное копирование поискового индекса

Резервное копирование поискового индекса осуществляется стандартными средствами Opensearch. Подробнее см. в официальной документации (подходит и для Opensearch). Перед выполнением операции необходимо изменить настройки Opensearch в соответствии с конфигурацией целевой системы.

Для создания резервной копии поискового индекса:

  1. Укажите путь к репозиторию снапшотов в секции Paths (файла <OPENSEARCH_HOME>/config/opensearch.yml). Путь должен быть доступен всем узлам кластера:

    path.repo : /mount/backups
    
  2. Перезапустите Opensearch. Пример команды:

    systemctl restart opensearch
    
  3. Создайте каталог для репозитория:

    mkdir -p /mount/backups
    
  4. Перейдите в созданный каталог:

    cd /mount/
    
  5. Назначьте права на запись всем пользователям:

    chmod a+w ./backups
    
  6. Перезапустите узлы кластера, если используется кластерная конфигурация (в противном случае шаг можно пропустить).

  7. Добавьте репозиторий в конфигурацию кластера. Пример выполнения из консоли с помощью утилиты 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" }}'
  1. Проверьте успешность выполнения предыдущего шага (в результате выполнения команды на экране должны отобразится текущие настройки репозитория):

    $ curl -XGET 'localhost:9200/_snapshot/universe_indices_backup'
    
  2. Создайте снапшот всех активных индексов кластера (в примере используется имя snapshot_1):

    $ curl -XPUT 'localhost:9200/_snapshot/universe_indices_backup/snapshot_1?wait_for_completion=true'
    

В случае успешного завершения процедуры создания снапшота на экране отобразится сообщение вида "state":"SUCCESS".

  1. Для получения дополнительных сведений о состоянии снапшота выполните команду:

    $ curl -XGET 'localhost:9200/_snapshot/universe_indices_backup/snapshot_1'
    

Резервное копирование файлов конфигурации

  1. Скопируйте содержимое:

  • Каталога <TOMCAT_HOME>/webapps;

  • Каталога <TOMCAT_HOME>/universe-integration;

  • Каталога, указанного в параметре -Dunidata.conf файла конфигурации tomcat.conf.

Примечание

По умолчанию параметр -Dunidata.conf расположен в файле <TOMCAT_HOME>/conf/tomcat.conf

  1. Укажите путь к файлу logback.xml в <TOMCAT_HOME>/conf/tomcat.conf:

    Dlogback.configurationFile=/opt/universe/universe.conf/logback.xml в настройках $TOMCAT_HOME/conf/tomcat.conf
    

Если в файл universe-backend.xml, расположенный в <TOMCAT_HOME>/ conf/Catalina/localhost, вносились изменения - создайте его резервную копию для последующего обновления.

Восстановление резервных копий

Восстановление резервной копии базы данных

Восстановление резервной копии БД осуществляется стандартными средствами СУБД (pg_restore, pg admin и т.д.). Далее представлен пример восстановления резервной копии средствами pg_restore.

  1. Остановите сервер Tomcat:

    systemctl stop tomcat
    
  2. Создайте пустую БД. Для этого используйте команды консоли:

    su postgres
    psql -U postgres
    create database <имя базы>;
    \q
    

Либо используйте SQL-запрос:

CREATE DATABASE <имя базы> WITH OWNER = postgres

В качестве альтернативы может быть выполнена очистка существующей БД.

  1. Выполните команду:

    $ pg_restore -d universe -p 5432 -h localhost -U <username> -- jobs=<количество параллельных потоков, каждый занимающий одно соединение + 1 административное соединение> <путь и имя файла>
    
  2. Запустите сервер Tomcat:

    systemctl start tomcat
    

Восстановление резервной копии поискового индекса

Восстановление резервных копий поискового индекса осуществляется стандартными средствами Opensearch. Подробнее см. в официальной документации (подходит и для Opensearch).

Для восстановления резервной копии поискового индекса:

  1. Закройте текущие индексы:

    $ curl -XPOST 'localhost:9200/_all/_close'
    

Количество частей (Shards) индекса в снапшоте и в кластере должны совпадать, в противном случае восстановление завершится с ошибкой. Требование не распространяется на пустые кластеры.

  1. В случае, если имя текущих снапшотов неизвестно, используйте команду:

    $ curl -XGET 'localhost:9200/_snapshot/_all'
    
  2. Восстановите снапшот. Пример команды для снапшота с именем snapshot_1:

    $ curl -XPOST 'localhost:9200/_snapshot/universe_indices_backup/snapshot_1/_restore'
    

Снапшот представляет собой слепок состояния поискового индекса. Таких снапшотов может быть несколько – для хранения нескольких состояний Opensearch.