Перейти к основному содержимому

10 Установка обновлений

При обновлении компонентов Luxms BI пакетами мы рекомендуем руководствоваться следующими принципами.

  1. При наличии тестовой среды:
  • поддержка актуальности тестовой среды;
  • создание снимка файловой системы(snapshot) перед обновлением, если это возможно;
  • выполнение обновления;
  • актуализация конфигурационных файлов;
  • проведение функционального тестирования с привлечением Бизнес-пользователей;
  • принятия решения об обновлении продуктового контура;
  • создание снимка файловой системы(snapshot) перед обновлением продуктовой среды, если это возможно;
  • обновление продуктовой среды;
  • актуализация конфигурационных файлов;
  • проверка работоспособности;
  • принятие решения об успешности обновления.
  1. При отсутствии актуальной тестовой схемы:
  • создание снимка файловой системы(snapshot) перед обновлением продуктовой среды, если это возможно;
  • обновление продуктовой среды;
  • актуализация конфигурационных файлов;
  • проверка работоспособности;
  • принятие решения об успешности обновления.
  1. Критичные ресурсы, требующие обязательное снятие резервной копии:
  • конфигурационные файлы, расположенные по пути /opt/luxmsbi/conf;
  • метаданные Luxms BI - БД mi.
  1. При обновлении среды с кластером Postgres, возможно обновление без снятия копии БД:
  • остановка сервиса Patroni на хосте со статусом Replica;
  • выполнение обновления на хосте со статусом Primary;
  • проверка работоспособности;
  • принятие решения оо успешности обновления;
  • при неудачном обновлении, остановка обновленного узла кластера БД и запуск ранее остановленной реплики.

Установка обновлений компонентов, кроме БД

Для RPM-based ОС

Для получения списка и версий установленных пакетов, выполните команду:

sudo rpm -qa | grep luxms

Установка обновлений компонентов Luxms BI производится обновлением пакетов:

sudo dnf -y update luxmsbi-web

При необходимости отката на предыдущую версию компонента используйте команду:

sudo dnf -y downgrade luxmsbi-web

Для DEB-based ОС

Для получения списка и версий установленных пакетов, выполните команду:

sudo apt list --installed | grep luxms

Установка обновлений компонентов Luxms BI производится обновлением пакетов:

sudo apt -y install luxmsbi-web

При необходимости отката на предыдущую версию компонента используйте команду c указанием конкретной версии:

sudo apt -y install luxmsbi-web=8.9.0-20220913.alse-1.7

Актуализация конфигурационных файлов

Обновления пакетов может включать в себя обновление конфигурационных файлов. Например в связи с появлением нового или изменением существующего функционала. Что требует приведения конфигурационных файлов в соответсвии с обновленной версией очень Важным.
Поскольку конфигурационные файлы содержат значения относящиеся к конкретной инсталляции, например данные по подключению или DNS/IP-адреса, выполнение такой операции в автоматическом режиме пакеты не предусматривают. Актуализация конфигурационных файлов - это ручная часть работы Системного администратора при обновлениях.

Для RPM-based ОС

В RPM-пакетах это решается просто, при обновлении/удалении конфигурационного файла всегда создаются резервные копии и текущий конфигурационный файл не изменяется.

Все что нужно сделать после обновления RPM-пакета.

  1. Определить список конфигурационных файлов конкретного пакета, например:
rpm -qc luxmsbi-appserver-mono
/etc/sysconfig/luxmsbi-appserver
/opt/luxmsbi/conf/appserver/application.properties
/usr/lib/firewalld/services/luxmsbi-appserver.xml
  1. Проверить наличие указанных файлов с дополнительным суффиксом .rpmnew
к сведению

Конфигурационные файлы с суффиксом .rpmnew создаются при установке другой версии пакета, только если текущий конфигурационный файл отличается от эталонного в уже установленном пакете.

ls -la /etc/sysconfig/luxmsbi-appserver* \
/opt/luxmsbi/conf/appserver/application.properties* \
/usr/lib/firewalld/services/luxmsbi-appserver.xml*
-rw-r--r--. 1 root root 321 Jan 11 19:34 /etc/sysconfig/luxmsbi-appserver
-rw-r-----. 1 bi bi 5346 Jan 12 04:19 /opt/luxmsbi/conf/appserver/application.properties
-rw-r-----. 1 bi bi 5350 Jan 12 14:28 /opt/luxmsbi/conf/appserver/application.properties.rpmnew
-rw-r--r--. 1 root root 190 Jan 11 10:42 /usr/lib/firewalld/services/luxmsbi-appserver.xml
  1. При наличии таких файлов, сверить изменения и при необходимости перенести из .rpmnew в текущий конфигурационный файл недостающие директивы.
diff /opt/luxmsbi/conf/appserver/application.properties*
30c30
< luxmsbi.datasource.password=non-bi
---
> luxmsbi.datasource.password=bi
к сведению

В данном случае изменен пароль в текущем конфиге, а новый конфиг содержит пароль по умолчанию.
Эти изменения не требует актуализации, переноса

Для DEB-based ОС

В мире Debian совсем другой подход к конфигурационным файлам. Если Вы выполняете все обновления “линейно” и правильно, то различия базового(входящего в состав пакета) конфигурационного файла нового пакета по сравнению с установленным пакетом, породит диалог. Диалог с возможными опциями при изменении “базового” конфигурационного файла:

к сведению

Применяемое решение для визуализации Диалога с опциями зависти от переменной окружения DEBIAN_FRONTEND.
В наших примерах мы предоставляем вывод для значения readline

apt install luxmsbi-web
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following packages will be upgraded:
luxmsbi-web
1 upgraded, 0 newly installed, 0 to remove and 259 not upgraded.
Need to get 0 B/29.1 MB of archives.
After this operation, 6105 kB of additional disk space will be used.
(Reading database ... 118877 files and directories currently installed.)
Preparing to unpack .../luxmsbi-web_9.2.14-20231219.alse-1.7_amd64.deb ...
Unpacking luxmsbi-web (9.2.14-20231219.alse-1.7) over (9.2.12-20231122.alse-1.7) ...
Setting up luxmsbi-web (9.2.14-20231219.alse-1.7) ...

Configuration file '/opt/luxmsbi/conf/luxmsbi-web-settings.js'
==> Modified (by you or by a script) since installation.
==> Package distributor has shipped an updated version.
What would you like to do about it ? Your options are:
Y or I : install the package maintainer's version
N or O : keep your currently-installed version
D : show the differences between the versions
Z : start a shell to examine the situation
The default action is to keep your current version.
*** luxmsbi-web-settings.js (Y/I/N/O/D/Z) [default=N] ?
Progress: [ 40%] [####......]

Если Вы до обновления внесли изменения в конфигурационный файл, то эти изменения сохранятся, диалог с опциями не визуализируется. При условии, что “базовый” конфигурационный файл в новом пакете не отличается от такого же “базового” конфигурационного файла установленной ранее версии.

Сложности возникнут только в одном случае - конфигурационный файл будет поврежден или потерян до выполнения обновления. Вы не сможете восстановить конфигурационный файл из пакета - здесь поможет только резервное копирование /opt/luxmsbi/conf.

Кстати, посмотреть список конфигурационных файлов можно с помощью команды:

 cat /var/lib/dpkg/info/luxmsbi-web.conffiles 
/opt/luxmsbi/conf/luxmsbi-web-settings.js
/opt/luxmsbi/conf/nginx/nginx.conf
/opt/luxmsbi/conf/nginx/conf.d/luxmsbi.ssl
/opt/luxmsbi/conf/nginx/lua/aalcfg.lua
/opt/luxmsbi/conf/nginx/lua/bicfg.lua
/opt/luxmsbi/conf/nginx/conf.d/entrypoint.conf
/opt/luxmsbi/conf/nginx/conf.d/luxmsbi-core.conf
/opt/luxmsbi/conf/nginx/conf.d/upstreams.conf
/opt/luxmsbi/conf/nginx/conf.d/luxmsbi-appserver.location
/opt/luxmsbi/conf/nginx/conf.d/luxmsbi-bins.location

Установка обновлений пакета БД luxmsbi-pg

При установке пакета luxmsbi-pg в пост-инсталляционном скрипте реализована следующая логика:

  • При установке пакета скрипт использует переменную окружения PGDATA для определения расположения файлов БД. Используйте PGDATA при установке БД в нестандартном расположении.
  • Установка пакета на “чистую” БД автоматически создает БД для Luxms BI с именем mi.
  • Установка пакета на БД с уже существующей базой данных mi не вносит изменения в существующую БД;

Установка пакета luxmsbi-pg во всех случаях сохраняет в файловой системе сервера, /usr/share/luxmsb-pg/:

  • Дамп БД соответсвующий версии пакета, сохраняется только одна версия дампа.
  • SQL-скрипты обновлений для БД.
  • Shell-скрипты для установки дампа и обновлений БД в ручном режиме.

Если при установке пакета БД была недоступна или не выставлена переменная окружения PGDATA, то развертывание бызы mi может быть выполненно в ручном режиме:

su - postgres -c /usr/share/luxmsbi-pg/luxmsbi-setupdb.sh /usr/share/luxmsbi-pg/luxmsbi-dump.sql.gz

Очистка, возврат первоначального состояния БД

При необходимости восстановления первоначального состояния БД нужно запустить предыдущую команду с ключом --force:

su - postgres -c /usr/share/luxmsbi-pg/luxmsbi-setupdb.sh /usr/share/luxmsbi-pg/luxmsbi-dump.sql.gz --force

При этом существующая БД mi не будет утрачена, а переименована в mi_$(date +%Y%m%d_%H%M%S).

Обновление БД

осторожно

До начала процесса обновления БД рекомендуем снять резервную копию БД, смотрите раздел Резервное копирование.

Скрипты обновления БД поставляются в составе пакетов luxmsbi-pg/luxmsbi-pgpro, поэтому необходимо установить необходимую версию соответствующего пакета на ВСЕ узлы кластера или хост содержащий БД.

Для RPM-based ОС:

sudo dnf -y install luxmsbi-pg

Для DEB-based ОС:

sudo apt -y install luxmsbi-pg

Установка обновлений БД может выполняться только из командной строки, два варианта запуска обновления:

1) Кумулятивная установка - установка всех необходимых обновлений:

su - postgres -c "/usr/share/luxmsbi-pg/luxmsbi-setupdb.sh --upgrade"

2) Выборочная установка - установка скрипта конкретной версии обновления БД:

su - postgres -c "/usr/share/luxmsbi-pg/luxmsbi-setupdb.sh --upgrade /usr/share/luxmsbi-pg/upgradeDB-7.0.0.sql"

При установке обновлений БД проверяется текущая версия существующей БД mi и, при отсутствии необходимости обновления, изменения в БД не выполняются.

SQL-скрипты обновления БД выполняются в транзакции. При возникновении ошибки в процессе установки все изменения БД отменяются и shell-скрипт выдает информацию о возникшей ошибке.

Обновление БД по требованиям Клиента

При аварийных ситуациях или в случае дополнительного изменения БД под требования клиентов поставка обновлений может производиться в виде SQL-файла с прилагаемой инструкцией по применению.

Это не обычный вариант внесения изменения, но иногда и это решение используется.