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

Примечание

Перед началом резервного копирования экспортируйте модель данных и остановите сервер приложений 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 в соответствии с конфигурацией целевой системы.

Примечание

Осуществлен переход с Elasticsearch на OpenSearch. Если вам необходимо осуществить резервное копирование для Elasticsearch, вы также можете воспользоваться текущей инструкцией, заменив opensearch на elasticsearch в соответствующих местах

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

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

    path.repo : /mnt/backups/opensearch
    
  2. Создайте каталог для репозитория:

    mkdir -p /mnt/backups/opensearch
    
  3. Измените владельца папки:

    chown -R opensearch:opensearch /mnt/backups/opensearch

  4. Перезапустите Opensearch. Пример команды:

    systemctl restart opensearch
    
  5. Зарегистрируйте репозиторий в конфигурации кластера. Пример выполнения из консоли с помощью утилиты curl:

    $curl -X PUT "http://localhost:9200/_snapshot/universe_indices_backup" -H 'Content-Type:
    

    application/json' -d' { "typ

  6. Проверьте успешность выполнения предыдущего шага (в результате выполнения команды на экране должны отобразится текущие настройки репозитория):

    $ curl -XGET 'localhost:9200/_snapshot/universe_indices_backup'
    
  7. Создайте снапшот всех активных индексов кластера (в примере используется имя 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;

  • Каталога <TOMCAT_HOME>/conf.

  1. Укажите путь к файлу 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.

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

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

    su postgres
    psql -U postgres
    CREATE DATABASE <имя базы> WITH OWNER = postgres
    \q
    

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

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

    $ pg_restore -d universe -p 5432 -h localhost -U <путь и имя файла>
    
  2. Запустите сервер Tomcat:

    systemctl start tomcat
    

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

Восстановление резервных копий поискового индекса осуществляется стандартными средствами Opensearch.

Примечание

Осуществлен переход с Elasticsearch на OpenSearch. Если вам необходимо осуществить восстановление резервной копии Elasticsearch, вы также можете воспользоваться текущей инструкцией

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

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

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

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

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

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

    curl -X POST
    "http://localhost:9200/_snapshot/universe_indices_backup/snapshot_1/_restore" -H
    'Content-Type: application/json' -d'
    {
    "indices": "default_default*",
    "ignore_unavailable": true,
    "include_global_state": false
    }'
    

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