Процедура обновления ПО¶
PostgreSQL¶
Примечание
Ниже приведен пример обновления PostgreSQL с версии 9.6 на версию 13.2 и примеры команд для ОС CentOS 7. Если ваше окружение отличается, то используйте официальную документацию PostgreSQL
Совет
Рекомендуется использовать программы pg_dump и pg_dumpall из более новой версии PostgreSQL
Настоящая инструкция предполагает, что текущая установка находится в каталоге /usr/local/pgsql, а область данных – в /usr/local/pgsql/data. Замените пути соответствующим образом.
Пример обновления PostgreSQL с помощью pg_dumpall:
Создайте резервную копию базы данных (шаг можно пропустить, если резервная копия была сделана ранее):
pg_dumpall > outputfile.sql
Создайте резервную копию файлов конфигурации pg_hba.conf и postgresql.conf из
<POSTGRESQL9.6_HOME>/data
.Остановите postgresql-9.6:
systemctl stop postgresql-9.6
Переименуйте каталог, если postgresql-9.6 был установлен в каталоге по умолчанию:
mv /usr/local/pgsql /usr/local/pgsql.old
Установка Postgresql-13 будет производиться из исходного кода. Установите git:
yum install git
Скачайте исходный код из официального репозитория (каталог postgres создастся автоматически в активном каталоге):
git clone https://github.com/postgres/postgres
Перейдите в созданный каталог postgres и переключитесь на ветку репозитория с версией 13:
cd postgres/ git checkout REL_13_STABLE
Для обеспечения корректности конфигурирования и сборки установите следующее:
yum install readline-devel zlib-devel flex bison uuid-devel libxml2 libxml2-devel systemd systemd-devel
Запустите конфигурирование:
./configure --with-uuid=ossp --with-libxml --with-systemd
Дополнительные параметры --with-uuid=ossp и --with-libxml нужны для установки необходимых в дальнейшем расширений, параметр --with-systemd необходим для управления запуском Postgresql с помощью systemctl (описано ниже в п. 23).
Запустите сборку:
make
Под учетной записью пользователя запустите автотесты (функция не работает под учетной записью root):
make check
Запустите установку:
sudo make install
Создайте каталог, где будут храниться файлы БД:
mkdir /usr/local/pgsql/data
Назначьте права пользователю на этот каталог:
chown postgres /usr/local/pgsql/data/
Перейдите в каталог:
cd /usr/local/pgsql/bin
Выполните следующее:
export PATH=/usr/local/pgsql/bin/:$PATH export PGDATA=/usr/local/pgsql/data/
Под учетной записью пользователя инициализируйте БД:
initdb -k -D /usr/local/pgsql/data/
Переместите в <POSTGRESQL13_HOME>/data сохраненные файлы конфигурации pg_hba.conf и postgresql.conf.
Запустите postgresql13:
pg_ctl start
Установите расширения для БД:
a. cd .../postgres/contrib b. make c. make install
Восстановите данные из созданной резервной копии (пример восстановления с помощью pg_restore):
/usr/local/pgsql/bin/psql -d postgres -f outputfile.sql
Остановите postgresql13:
pg_ctl stop
Для автозапуска и управления работой приложения с помощью команд systemctl добавьте следующий системный файл
nano /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
Выполните следующее:
systemctl enable postgresql-13 && systemctl start postgresql-13
Проверьте статус:
systemctl status postgresql-13
В случае ошибки запуска (статус failed) перезагрузите операционную систему.
Удалите postgresql-9.6 из автозагрузки:
systemctl disable postgresql-9.6
При необходимости удалите postgresql-9.6:
yum remove pgdg-centos96 postgresql96 postgresql96-server postgresql96-libs postgresql96-devel postgresql96-contrib postgresql96-jdbc
Проверьте версию установленного PostgreSQL:
postgres --version
Далее запустите миграцию БД от 9.6 к 13:
Остановите сервис:
systemctl stop postgresql-9.6
Проверьте возможность обновления:
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
Если в ответном сообщении отображено 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/
После успешного завершения версия 9.6 может быть удалена:
yum remove pgdg-centos96 postgresql96 postgresql96-server postgresql96-libs postgresql96-devel postgresql96-contrib postgresql96-jdbc postgresql-jdbc
Повторно проверьте версию установленного PostgreSQL:
yum list installed | egrep "postgres|pgdg"
Файлы приложения и конфигурации¶
Предварительно: убедитесь, что созданы все требуемые резервные копии конфигурации.
Примечание
При копировании новых библиотек необходимо удалять старые, т.к в некоторых случаях при обновлении системы используется не новая, а старая версия библиотеки, вследствие чего в работе системы возникают ошибки
Удалите все файлы из директорий:
<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
Примечание
Процедуру обновления программных компонентов необходимо выполнить на каждом узле кластера, если Юниверс DG установлена в кластерной конфигурации
Apache Tomcat¶
Для обновления Tomcat с версии 7 до версии 9:
Остановите Tomcat 7 и удалите из автозагрузки:
systemctl stop tomcat && systemctl disable tomcat
Создайте системного пользователя:
useradd -m -U -d /opt/tomcat -s /bin/false tomcat
Скачайте и распакуйте архив (актуальную версию можно найти на официальном сайте). Пример команды (9.0.хх - номер версии Tomcat):
wget https://downloads.apache.org/tomcat/tomcat9/v9.0.хх/bin/apache-tomcat-9.0.хх.tar.gz tar -zxpvf apache-tomcat-9.0.хх.tar.gz -C /opt/(или другой необходимый каталог)
Переместите в каталог /opt/tomcat (или другой необходимый):
mv apache-tomcat-9.0.хх 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, то необходимо обратиться в техподдержку.