10 Установка обновлений
При обновлении компонентов Luxms BI пакетами мы рекомендуем руководствоваться следующими принципами.
- При наличии тестовой среды:
- поддержка актуальности тестовой среды;
- создание снимка файловой системы(snapshot) перед обновлением, если это возможно;
- выполнение обновления;
- актуализация конфигурационных файлов;
- проведение функционального тестирования с привлечением Бизнес-пользователей;
- принятия решения об обновлении продуктового контура;
- создание снимка файловой системы(snapshot) перед обновлением продуктовой среды, если это возможно;
- обновление продуктовой среды;
- актуализация конфигурационных файлов;
- проверка работоспособности;
- принятие решения об успешности обновления.
- При отсутствии актуальной тестовой схемы:
- создание снимка файловой системы(snapshot) перед обновлением продуктовой среды, если это возможно;
- обновление продуктовой среды;
- актуализация конфигурационных файлов;
- проверка работоспособности;
- принятие решения об успешности обновления.
- Критичные ресурсы, требующие обязательное снятие резервной копии:
- конфигурационные файлы, расположенные по пути
/opt/luxmsbi/conf
; - метаданные Luxms BI - БД
mi
.
- При обновлении среды с кластером 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-пакета.
- Определить список конфигурационных файлов конкретного пакета, например:
rpm -qc luxmsbi-appserver-mono
/etc/sysconfig/luxmsbi-appserver
/opt/luxmsbi/conf/appserver/application.properties
/usr/lib/firewalld/services/luxmsbi-appserver.xml
- Проверить наличие указанных файлов с дополнительным суффиксом
.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
- При наличии таких файлов, сверить изменения и при необходимости перенести из
.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-файла с прилагаемой инструкцией по применению.
Это не обычный вариант внесения изменения, но иногда и это решение используется.