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

PostgreSQL

Примечание

Ниже приведен пример обновления PostgreSQL с версии 9.6 на версию 13.2 и примеры команд для ОС CentOS 7. Если ваше окружение отличается, то используйте официальную документацию PostgreSQL

Совет

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

Настоящая инструкция предполагает, что текущая установка находится в каталоге /usr/local/pgsql, а область данных – в /usr/local/pgsql/data. Замените пути соответствующим образом.

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

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

    pg_dumpall > outputfile.sql
    
  2. Создайте резервную копию файлов конфигурации pg_hba.conf и postgresql.conf из <POSTGRESQL9.6_HOME>/data.

  3. Остановите postgresql-9.6:

    systemctl stop postgresql-9.6
    
  4. Переименуйте каталог, если postgresql-9.6 был установлен в каталоге по умолчанию:

    mv /usr/local/pgsql /usr/local/pgsql.old
    
  5. Установка Postgresql-13 будет производиться из исходного кода. Установите git:

    yum install git
    
  6. Скачайте исходный код из официального репозитория (каталог postgres создастся автоматически в активном каталоге):

    git clone https://github.com/postgres/postgres
    
  7. Перейдите в созданный каталог postgres и переключитесь на ветку репозитория с версией 13:

    cd postgres/
    git checkout REL_13_STABLE
    
  8. Для обеспечения корректности конфигурирования и сборки установите следующее:

    yum install readline-devel zlib-devel flex bison uuid-devel libxml2 libxml2-devel systemd systemd-devel
    
  9. Запустите конфигурирование:

    ./configure --with-uuid=ossp --with-libxml --with-systemd
    
    • Дополнительные параметры --with-uuid=ossp и --with-libxml нужны для установки необходимых в дальнейшем расширений, параметр --with-systemd необходим для управления запуском Postgresql с помощью systemctl (описано ниже в п. 23).

  10. Запустите сборку: make

  11. Под учетной записью пользователя запустите автотесты (данный функционал не работает под учетной записью root): make check

  12. Запустите установку: sudo make install

  13. Создайте каталог, где будут храниться файлы БД:

    mkdir /usr/local/pgsql/data
    
  14. Назначьте права пользователю на этот каталог:

    chown postgres /usr/local/pgsql/data/
    
  15. Перейдите в каталог:

    cd /usr/local/pgsql/bin
    
  16. Выполните следующее:

    export PATH=/usr/local/pgsql/bin/:$PATH
    export PGDATA=/usr/local/pgsql/data/
    
  17. Под учетной записью пользователя инициализируйте БД:

    initdb -k -D /usr/local/pgsql/data/
    
  18. Переместите в <POSTGRESQL13_HOME>/data сохраненные файлы конфигурации pg_hba.conf и postgresql.conf.

  19. Запустите postgresql13:

    pg_ctl start
    
  20. Установите расширения для БД:

    a. cd .../postgres/contrib
    b. make
    c. make install
    
  21. Восстановите данные из созданной резервной копии (пример восстановления с помощью pg_restore):

    /usr/local/pgsql/bin/psql -d postgres -f outputfile.sql
    
  22. Остановите postgresql13:

    pg_ctl stop
    
  23. Для автозапуска и управления работой приложения с помощью команд systemctl добавьте следующий системный файл /etc/systemd/system/postgresql-13.service с содержимым:

    [Unit]
    Description=PostgreSQL database server
    Documentation=man:postgres(1)
    [Service]
    Type=notify
    User=postgres
    ExecStart=/usr/local/pgsql/bin/postgres -D /usr/local/pgsql/data ExecReload=/bin/kill -HUP $MAINPID
    KillMode=mixed
    KillSignal=SIGINT
    TimeoutSec=0
    [Install]
    WantedBy=multi-user.target
    
  24. Выполните следующее:

    systemctl enable postgresql-13 && systemctl start postgresql-13
    
  25. Проверьте статус:

    systemctl status postgresql-13
    

В случае ошибки запуска (статус failed) перезагрузите операционную систему.

  1. Удалите postgresql-9.6 из автозагрузки:

    systemctl disable postgresql-9.6
    
  2. При необходимости удалите postgresql-9.6:

    yum remove pgdg-centos96 postgresql96 postgresql96-server postgresql96-libs postgresql96-devel postgresql96-contrib postgresql96-jdbc
    
  3. Проверьте версию установленного PostgreSQL:

    postgres --version
    

Далее запустите миграцию БД от 9.6 к 13:

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

    systemctl stop postgresql-9.6
    
  2. Проверьте возможность обновления:

    su postgres
    cd /var/lib/pgsql
    /usr/pgsql-13/bin/pg_upgrade --old-bindir=/usr/pgsql-9.6/bin/ -- new-bindir=/usr/pgsql-13/bin/ --old- datadir=/var/lib/pgsql/9.6/data/ --new- datadir=/var/lib/pgsql/13/data/ --check
    
  3. Если в ответном сообщении отображено Clusters are compatible, то запустите миграцию:

    su postgres
    cd /var/lib/pgsql
    /usr/pgsql-13/bin/pg_upgrade --old-bindir=/usr/pgsql-9.6/bin/ -- new-bindir=/usr/pgsql-13/bin/ --old- datadir=/var/lib/pgsql/9.6/data/ --new- datadir=/var/lib/pgsql/13/data/
    
  4. После успешного завершения версия 9.6 может быть удалена:

    yum remove pgdg-centos96 postgresql96 postgresql96-server postgresql96-libs postgresql96-devel postgresql96-contrib postgresql96-jdbc postgresql-jdbc
    
  5. Повторно проверьте версию установленного PostgreSQL:

    yum list installed | egrep "postgres|pgdg"
    

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

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

Примечание

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

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

    • <TOMCAT_HOME>/work;

    • <TOMCAT_HOME>/temp;

    • <TOMCAT_HOME>/webapps;

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

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

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

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

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

    cp <UNIDATA_PACKAGE>/Tomcat/lib/* <TOMCAT_HOME>/lib/
    cp <UNIDATA_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. Скачайте и распакуйте архив (актуальную версию можно найти на официальном сайте). Пример команды:

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

    mv apache-tomcat-9.0.48 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, то необходимо обратиться в техподдержку.

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

Примечание

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