Процедура обновления ПО¶
PostgreSQL¶
Примечание
Ниже приведен пример обновления PostgreSQL с версии 12 на версию 16.3. Вы также можете воспользоваться официальной документацией PostgreSQL.
Совет
Рекомендуется использовать программы pg_dump и pg_dumpall из более новой версии PostgreSQL
Предупреждение
В Юниверс MDM версии 6.11 было осуществлено обновление PostgreSQL до версии 16.3, в связи с этим теперь требуется обязательная установка расширения TimescaleDB для корректной работы с большими объемами данных. В зависимости от вашей ОС, проверьте шаги установки TimescaleDB в руководстве по установке системы. Перед установкой рекомендуется проверить совместимость вашей версии PostgreSQL и версии TimescaleDB.
Пример обновления PostgreSQL с помощью pg_dump:
Создайте резервную копию базы данных (шаг можно пропустить, если резервная копия была сделана ранее):
$ pg_dump -U postgres -d your_database_name -F c -b -v -f backup.dump
Создайте копию в формате 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
— имя файла дампа.
- где
Добавьте репозиторий 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
Установите PostgreSQL 16.3:
$ sudo apt-get install postgresql-16
Остановите службу PostgreSQL 12:
$ sudo systemctl stop postgresql@12-main
Инициализируйте новый кластер PostgreSQL 16.3:
$ sudo systemctl stop postgresql@12-main
Запустите службу PostgreSQL 16.3:
$ sudo systemctl start postgresql-16
Удалите старый том:
$ psql -U postgres -c "DROP DATABASE IF EXISTS postgres;"
Восстановите базу данных - создайте новую базу данных:
$ createdb -U postgres postgres
Восстановите дамп:
$ pg_restore -U postgres -d postgres -v backup.dump
Обновите файлы конфигурации - создайте резервные копии старых файлов конфигурации:
$ 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
Откройте новые файлы конфигурации:
$ sudo vim /etc/postgresql/16/main/postgresql.conf $ sudo vim /etc/postgresql/16/main/pg_hba.conf
Найдите пользовательские параметры, установленные в старом postgresql.conf, и скопируйте их в новый postgresql.conf.
Скопируйте пользовательские правила доступа из старого pg_hba.conf в новый pg_hba.conf.
После объединения конфигураций сохраните и закройте новые файлы конфигурации.
Перезапустите PostgreSQL:
$ sudo systemctl restart postgresql-16
Проверьте конфигурацию:
$ sudo tail -f /var/log/postgresql/postgresql-16-main.log
Удалите старую версию PostgreSQL:
$ sudo apt-get remove postgresql-12 $ sudo apt-get autoremove
Удалите старый каталог данных:
$ sudo rm -rf /var/lib/postgresql/12/main
Файлы приложения и конфигурации¶
Предварительно: убедитесь, что созданы все требуемые резервные копии конфигурации.
Примечание
При копировании новых библиотек необходимо удалять старые, т.к в некоторых случаях при обновлении системы используется не новая, а старая версия библиотеки, вследствие чего в работе системы возникают ошибки
Удалите все файлы из директорий:
<TOMCAT_HOME>/work
;<TOMCAT_HOME>/temp
;<TOMCAT_HOME>/webapps
;
Обновите конфигурационные файлы:
Скопируйте из
<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/
При необходимости восстановите из резервных копий файлов персональные параметры конфигурации.
Скопируйте содержимое директории <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/
Убедитесь, что все требуемые для проекта файлы интеграции в
<TOMCAT_HOME>/universe_integration
актуальны. При необходимости воспользуйтесь резервной копией каталога, созданной ранее.При переходе на новую версию PostgreSQL удалите устаревшие стандартные .lib файлы. Пример файла:
postgresql-13-1200.jdbc41.lib
.Создайте резервные копии конфигурационных файлов (если они изменялись - например, изменения могли быть внесены в файл
<TOMCAT_HOME>/webapps/universe-frontend/customer.json
), которые расположены по адресам:<TOMCAT_HOME>/webapps/universe-backend;
<TOMCAT_HOME>/webapps/universe-frontend.
Удалите индексы Elasticsearch:
$ curl -XDELETE 'http://localhost:9200/_all'
Перезапустите Tomcat:
systemctl restart tomcat
Примечание
Процедуру обновления программных компонентов необходимо выполнить на каждом узле кластера, если Юниверс MDM установлена в кластерной конфигурации
Apache Tomcat¶
Для обновления Tomcat с версии 7 до версии 9:
Остановите Tomcat 7 и удалите из автозагрузки:
systemctl stop tomcat && systemctl disable tomcat
Создайте системного пользователя:
useradd -m -U -d /opt/tomcat -s /bin/false tomcat
Скачайте и распакуйте архив (актуальную версию можно найти на официальном сайте). Пример команды (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/(или другой необходимый каталог)
Переместите в каталог
/opt/tomcat
(или другой необходимый):mv apache-tomcat-9.x tomcat-9
Измените владельца каталога на tomcat:
chown -R tomcat: /opt/tomcat-9
Создайте файл системного модуля:
nano /etc/systemd/system/tomcat.service
Запишите в файл следующее:
[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
Выполните перезагрузку для обновления конфигураций:
systemctl daemon-reload
Исправьте системные переменные. CATALINA_BASE=директория Tomcat 9 (экземпляры Tomcat), CATALINA_HOME=директория tomcat 9 (общие файлы Tomcat).
Перенесите содержимое каталогов из 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/
В файле
<TOMCAT9_HOME>/conf/tomcat.conf
укажите пути каталогов Tomcat 9 для: CATALINA_HOME, CATALINA_TMPDIR, Duniverse.conf, Dlogback.configurationFile.Перенесите дополнительные .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
Сделайте сценарии внутри bin исполняемыми:
sh -c 'chmod +x /opt/tomcat/latest/bin/*.sh'
Добавьте Tomcat 9 в автозагрузку и запустите:
systemctl enable tomcat && systemctl start tomcat
Проверьте статус:
systemctl status tomcat
База данных¶
Обновление базы данных:
Скопируйте директорию database из дистрибутива в любой подкаталог относительно конечного каталога установки дистрибутива Юниверс.
Укажите требуемые параметры системы в файле init_env.sh (init_env.bat для Windows) из директории database.
Запустите скрипт обновления схемы данных в БД:
./update_database.sh
В случае возникновения проблем с обновлением используйте следующие скрипты:
Для просмотра статуса миграций:
./check_database.sh
(.bat для Windows).Для устранения ошибок миграций:
./repair_database.sh
(.bat для Windows).
Если проблема сохраняется после выполнения repair_database.sh
, то необходимо обратиться в техподдержку.