Процедура обновления ПО

PostgreSQL

Примечание

Ниже приведен пример обновления PostgreSQL с версии 12 на версию 16.3. Вы также можете воспользоваться официальной документацией PostgreSQL.

Совет

Рекомендуется использовать программы pg_dump и pg_dumpall из более новой версии PostgreSQL

Предупреждение

В Юниверс MDM версии 6.11 было осуществлено обновление PostgreSQL до версии 16.3, в связи с этим теперь требуется обязательная установка расширения TimescaleDB для корректной работы с большими объемами данных. В зависимости от вашей ОС, проверьте шаги установки TimescaleDB в руководстве по установке системы. Перед установкой рекомендуется проверить совместимость вашей версии PostgreSQL и версии TimescaleDB.

Пример обновления PostgreSQL с помощью pg_dump:

  1. Создайте резервную копию базы данных (шаг можно пропустить, если резервная копия была сделана ранее):

    $ pg_dump -U postgres -d your_database_name -F c -b -v -f backup.dump
    
  2. Создайте копию в формате sql (на всякий случай):

    $ pg_dump -U postgres -d your_database_name > backup.sql
    
    где -U postgres — пользователь базы данных;

    -d your_database_name — имя базы данных; -F c — формат дампа (custom); -b — включает большие объекты в дамп; -v — включает подробный вывод; -f backup.dump — имя файла дампа.

  3. Добавьте репозиторий PostgreSQL:

    $ sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt/ $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'
    wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
    sudo apt-get update
    
  4. Установите PostgreSQL 16.3:

    $ sudo apt-get install postgresql-16
    
  5. Остановите службу PostgreSQL 12:

    $ sudo systemctl stop postgresql@12-main
    
  6. Инициализируйте новый кластер PostgreSQL 16.3:

    $ sudo systemctl stop postgresql@12-main
    
  7. Запустите службу PostgreSQL 16.3:

    $ sudo systemctl start postgresql-16
    
  8. Удалите старый том:

    $ psql -U postgres -c "DROP DATABASE IF EXISTS postgres;"
    
  9. Восстановите базу данных - создайте новую базу данных:

    $ createdb -U postgres postgres
    
  10. Восстановите дамп:

    $ pg_restore -U postgres -d postgres -v backup.dump
    
  11. Обновите файлы конфигурации - создайте резервные копии старых файлов конфигурации:

    $ cp /etc/postgresql/12/main/postgresql.conf /etc/postgresql/12/main/postgresql.conf.backup
    $ cp /etc/postgresql/12/main/pg_hba.conf /etc/postgresql/12/main/pg_hba.conf.backup
    
  12. Откройте новые файлы конфигурации:

    $ sudo vim /etc/postgresql/16/main/postgresql.conf
    $ sudo vim /etc/postgresql/16/main/pg_hba.conf
    
  13. Найдите пользовательские параметры, установленные в старом postgresql.conf, и скопируйте их в новый postgresql.conf.

  14. Скопируйте пользовательские правила доступа из старого pg_hba.conf в новый pg_hba.conf.

  15. После объединения конфигураций сохраните и закройте новые файлы конфигурации.

  16. Перезапустите PostgreSQL:

    $ sudo systemctl restart postgresql-16
    
  17. Проверьте конфигурацию:

    $ sudo tail -f /var/log/postgresql/postgresql-16-main.log
    
  18. Удалите старую версию PostgreSQL:

    $ sudo apt-get remove postgresql-12
    $ sudo apt-get autoremove
    
  19. Удалите старый каталог данных:

    $ sudo rm -rf /var/lib/postgresql/12/main
    

Файлы приложения и конфигурации

Предварительно: убедитесь, что созданы все требуемые резервные копии конфигурации.

Примечание

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

  1. Удалите все файлы из директорий:

    • <TOMCAT_HOME>/work;

    • <TOMCAT_HOME>/temp;

    • <TOMCAT_HOME>/webapps;

  2. Обновите конфигурационные файлы:

  • Скопируйте из <TOMCAT_HOME>/conf/Catalina/localhost дистрибутива в директорию <UNIVERSE_CONF_DIR> ранее созданную резервную копию файла universe-backend.xml. Пример команды:

    cp <UNIVERSE_PACKAGE_DIR>/conf/Catalina/localhost/universe-backend.xml <TOMCAT_HOME>/conf/Catalina/localhost/
    
  • Скопируйте из <TOMCAT_HOME>/conf/universe/ дистрибутива в директорию <UNIVERSE_CONF_DIR>/ ранее созданную резервную копию файла backend.properties. Пример команды:

    cp <UNIVERSE_PACKAGE_DIR>/conf/universe/backend.properties <TOMCAT_HOME>/conf/universe/
    
  • В файле backend.properties закомментируйте параметр universe.licensing.gpg.license.file для корректного обновления лицензии через интерфейс системы. После запуска обновленной системы необходимо активировать действующую лицензию повторно.

  • Скопируйте из дистрибутива в директорию <TOMCAT_HOME>/conf/universe/ актуальный файл external-routing.xml, либо внесите в него актуальные изменения:

    cp <UNIVERSE_PACKAGE_DIR>/conf/universe/external-routing.xml <TOMCAT_HOME>/conf/universe/
    
  • При необходимости восстановите из резервных копий файлов персональные параметры конфигурации.

  1. Скопируйте содержимое директории <TOMCAT_HOME>/webapps/ и <TOMCAT_HOME>/lib/ (WAR-файлы приложения, библиотеки) из установочного пакета при помощи команд:

    cp <UNIVERSE_PACKAGE>/Tomcat/lib/* <TOMCAT_HOME>/lib/
    cp <UNIVERSE_PACKAGE>/Tomcat/webapps/universe-*.war <TOMCAT_HOME>/webapps/
    
  2. Убедитесь, что все требуемые для проекта файлы интеграции в <TOMCAT_HOME>/universe_integration актуальны. При необходимости воспользуйтесь резервной копией каталога, созданной ранее.

  3. При переходе на новую версию PostgreSQL удалите устаревшие стандартные .lib файлы. Пример файла: postgresql-13-1200.jdbc41.lib.

  4. Создайте резервные копии конфигурационных файлов (если они изменялись - например, изменения могли быть внесены в файл <TOMCAT_HOME>/webapps/universe-frontend/customer.json), которые расположены по адресам:

    • <TOMCAT_HOME>/webapps/universe-backend;

    • <TOMCAT_HOME>/webapps/universe-frontend.

  5. Удалите индексы Elasticsearch:

    $ curl -XDELETE 'http://localhost:9200/_all'
    
  6. Перезапустите Tomcat:

    systemctl restart tomcat
    

Примечание

Процедуру обновления программных компонентов необходимо выполнить на каждом узле кластера, если Юниверс MDM установлена в кластерной конфигурации

Apache Tomcat

Для обновления Tomcat с версии 7 до версии 9:

  1. Остановите Tomcat 7 и удалите из автозагрузки:

    systemctl stop tomcat && systemctl disable tomcat
    
  2. Создайте системного пользователя:

    useradd -m -U -d /opt/tomcat -s /bin/false tomcat
    
  3. Скачайте и распакуйте архив (актуальную версию можно найти на официальном сайте). Пример команды (9.x - актуальная версия Tomcat):

    wget https://downloads.apache.org/tomcat/tomcat9/v9.х/bin/apache-tomcat-9.x.tar.gz
    tar -zxpvf apache-tomcat-9.x.tar.gz -C /opt/(или другой необходимый каталог)
    
  4. Переместите в каталог /opt/tomcat (или другой необходимый):

    mv apache-tomcat-9.x tomcat-9
    
  5. Измените владельца каталога на tomcat:

    chown -R tomcat: /opt/tomcat-9
    
  6. Создайте файл системного модуля:

    nano /etc/systemd/system/tomcat.service
    
  7. Запишите в файл следующее:

    [Unit]
    Description=Tomcat 9 servlet container
    After=network.target
    [Service]
    Type=forking
    User=tomcat
    Group=tomcat
    Environment="JAVA_HOME=/usr/lib/jvm/jre" Environment="JAVA_OPTS=-Djava.security.egd=file:///dev/urandom" Environment="CATALINA_BASE=/opt/tomcat-9" Environment="CATALINA_HOME=/opt/tomcat-9" Environment="CATALINA_PID=/opt/tomcat-9/temp/tomcat.pid" Environment="CATALINA_OPTS=-Xms512M -Xmx1024M -server - XX:+UseParallelGC"
    ExecStart=/opt/tomcat-9/bin/startup.sh ExecStop=/opt/tomcat-9/bin/shutdown.sh
    [Install]
    WantedBy=multi-user.target
    
  8. Выполните перезагрузку для обновления конфигураций:

    systemctl daemon-reload
    
  9. Исправьте системные переменные. CATALINA_BASE=директория Tomcat 9 (экземпляры Tomcat), CATALINA_HOME=директория tomcat 9 (общие файлы Tomcat).

  10. Перенесите содержимое каталогов из Tomcat 7 в Tomcat 9:

  • TOMCAT7_HOME/conf/Catalina -> TOMCAT9_HOME/conf/Catalina

  • TOMCAT7_HOME/conf/universe -> TOMCAT9_HOME/conf/universe

  • TOMCAT7_HOME/bin/setenv.bat(sh) -> TOMCAT9_HOME/bin/setenv.bat(sh)

  • TOMCAT7_HOME/lib/postgresql-x.x.x -> TOMCAT9_HOME/lib/postgresqlx.x.x

  • Пример команды:

    cp <TOMCAT9_HOME>/conf/universe <TOMCAT7_HOME>/conf/universe/
    
  1. В файле <TOMCAT9_HOME>/conf/tomcat.conf укажите пути каталогов Tomcat 9 для: CATALINA_HOME, CATALINA_TMPDIR, Duniverse.conf, Dlogback.configurationFile.

  2. Перенесите дополнительные .jar файлы, добавленные в проект, если такие имеются:

  • TOMCAT7_HOME/lib/*.jar -> TOMCAT9_HOME/lib/

  • TOMCAT7_HOME/webapps/*.war -> TOMCAT9_HOME/webapps/

  • TOMCAT7_HOME/universe-integration -> TOMCAT9_HOME/universe-integration

  • Пример команды:

    cp <TOMCAT9_HOME>/lib/*.jar <TOMCAT7_HOME>/lib
    
  1. Сделайте сценарии внутри bin исполняемыми:

    sh -c 'chmod +x /opt/tomcat/latest/bin/*.sh'
    
  2. Добавьте Tomcat 9 в автозагрузку и запустите:

    systemctl enable tomcat && systemctl start tomcat
    
  3. Проверьте статус:

    systemctl status tomcat
    

База данных

Обновление базы данных:

  1. Скопируйте директорию database из дистрибутива в любой подкаталог относительно конечного каталога установки дистрибутива Юниверс.

  2. Укажите требуемые параметры системы в файле init_env.sh (init_env.bat для Windows) из директории database.

  3. Запустите скрипт обновления схемы данных в БД:

    ./update_database.sh
    
  • В случае возникновения проблем с обновлением используйте следующие скрипты:

    • Для просмотра статуса миграций: ./check_database.sh (.bat для Windows).

    • Для устранения ошибок миграций: ./repair_database.sh (.bat для Windows).

Если проблема сохраняется после выполнения repair_database.sh, то необходимо обратиться в техподдержку.

Поисковой индекс

Примечание

Осуществлен переход с Elasticsearch на OpenSearch. Инструкцию по переходу см. по ссылке