5. Обновление версии

5.1. Обновление из консоли для Datamart Platform Studio, установленной на сервере (ВМ)

Примечание

В зависимости от мощности сервера и скорости каналов связи процесс обновления может занять от 30 до 60 минут.

Для обновления Datamart Studio установленной на сервере необходимо произвести следующие действия в консоли от имени пользователя datamart:

  1. Перейти в папку с установленной Datamart Platform Studio (в текущем примере /home/datamart)

# cd /home/datamart
  1. Остановить текущую версию, выполнив команду stop:

# ./datamart-studio stop
Остановка |prod|

Рисунок 5.3 Остановка Datamart Platform Studio

  1. Создать бэкап текущей версии Datamart Studio

Перед созданием бэкапа желательно удалить из папки старые архивы, если они там есть (например, файл datamart-studio-xxx.tgz мог остаться после установки), так как они будут занимать лишнее место в папке бэкапа.

Для запуска процедуры архивации бэкап копии текущей версии выполняем команду:

# sudo ./datamart-studio backup

Примечание

Созданный бэкап-файл будет помещен по умолчанию в подпапку ./backup

Если требуется применить дополнительные опции бэкапирования, см. раздел Раздел 4 Резервное копирование и восстановление

Процесс архивации достаточно длительный и, в зависимости от размера программы и мощности сервера, может занимать 10 минут или более.

  1. Скачать архив с обновлением для новой версии

    Например, для скачивания архива в папку /tmp, необходимо выполнить команды:

# cd /tmp
# sudo wget https://dms-demo.datamart.ru/datamart/dtms-builds/datamart-studio-NEW_VERSION.tar.gz
  1. Распаковать архив

    Для этого необходимо создать новый каталог в папке, в которую был скачен архив на предыдущем шаге (в примере папка /tmp) и распаковать в него скачанный архив:

# mkdir datamart_studio_upgrade
# tar zxvf datamart-studio-NEW_VERSION.tar.gz -C datamart_studio_upgrade
  1. Запустить процедуру обновления

    Для запуска процедуры обновления, необходимо зайти в каталог, в котором было распаковано обновления ( в примере каталог /tmp/datamart_studio_upgrade/ ) и запустить процесс обновления (c sudo), указав в команде каталог, в котором установлена текущая версия Программы (/home/datamart/):

# cd /tmp/datamart_studio_upgrade/
# sudo ./datamart-studio upgrade /home/datamart

Примечание

Процесс обновления достаточно длительный и в зависимости от размера программы и мощности сервера может занимать 10 минут или более.

В случае успешного обновления, процесс завершается сообщением:

Datamart Studio updated to version <NEW_VERSION>

Программа Datamart Studio будет запущена автоматически. В шапке веб-интерфейса программы должен быть отображён номер новой версии:

Версия |prod| после обновления

Рисунок 5.4 Версия Datamart Platform Studio после обновления

  1. Обновить бандлы приложений из хранилища репозиториев

    После проведения обновления и запуска программы необходимо обновить бандлы и приложения из хранилищ(а) репозиториев.

    Вариант 1: Обновить из консоли

    Обновить все хранилища репозиториев можно командой:

    docker-compose -f docker-compose.datamart.yaml exec app bundle exec rails runner "Rephub.all.each { |r| r.grab_repositories }"
    

    Обновить отдельное хранилище репозиториев по ID:

    docker-compose -f docker-compose.datamart.yaml exec app bundle exec rails runner "Rephub.find(:id).grab_repositories"
    

    Вариант 2: Обновить из веб-интерфейса |prod|

    Обновить данные хранилищ в веб-интерфейсе Datamart Platform Studio можно в разделе «Репозитории». В указанном разделе необходимо нажать на кнопку «Обновить все» ( см. Рисунок 5.5):

Обновление данных хранилищ в веб-интерфейсе |prod|

Рисунок 5.5 Обновление данных хранилищ в веб-интерфейсе Datamart Platform Studio

Примечание

Если у вас подключено несколько хранилищ репозиториев (реп-хабов), можно обновить бандлы из репозиториев для каждого из подключенных хранилищ.

5.2. Обновление c консоли сервера управления для Datamart Platform Studio установленной в среде в Kubernetes (K8s)

Для проведения процедуры обновления Datamart Platform Studio работающей в среде K8s требуется на управляющем сервере (ВМ) последовательно произвести следующие действия:

  1. Удалить данные старой версии (за исключением бэкап-файлов):

rm -rf /opt/datamart-studio/datamart-studio{,-k8s}
  1. Распаковать новую версию (вместо datamart-studio-NEW.tgz подставьте имя нового архива):

tar zxf datamart-studio-NEW.tgz -C /opt/
  1. Удалить старую версию из K8s (все POD и все хранилища persistentVolumeClaims):

./datamart-studio destroy-k8s
kubectl -n dms get persistentvolumeclaims
  1. Установить новую версию:

./datamart-studio deploy-k8s

Примечание

В процессе обновления данные Datamart Platform Studio будут сохранены, обновится только контейнер Datamart Platform Studio, который будет функционировать с кодом новой версии.

  1. Обновить бандлы из репозитория

После проведения обновления и запуска программы необходимо обновить бандлы и приложения из репозитория. Для этого в разделе «Репозитории» необходимо нажать на кнопку «Обновить все» (см. Рисунок 5.5):

5.3. Определение версии сборки

Версия текущей сборки ПО Datamart Platform Studio отображается в заголовке на странице сводной панели во всплывающем окне (см. Рисунок 5.6):

Версия сборки |prod|

Рисунок 5.6 Версия сборки Datamart Platform Studio

5.4. Особенности обновлений

5.4.1. Особенности обновления до версии 2.7.0

Для проведения консистентного обновления установленных услуг в Datamart Platform Studio до версии 2.7.0 потребуется обновление установленных приложений из бандлов. Это связано с обновлением логики связи исходящих интерфейсов по нескольким портам. В версии 2.6.0 и ранее возможно было установить соединения только по одному общему порту.

5.4.2. Концепция обновления для группы Cтудий

При обслуживании группы отдельно развернутых версий Datamart Platform Studio для удобства единовременного обновления и соблюдения единообразного содержания хранилищ репозиториев, версий бандлов и версий доступного для разворачивания и реконфигурирования Витрин данных ПО, может применяться схема со служебной мастер-Студией тех. поддержки и дочерними Студиями (клиентскими версиями).

В этом случае, обновление происходит в 2 этапа:

  1. Сначала, обычным образом, обновляется мастер-Студия.

  2. После обновления мастер-Студии, для каждой дочерней запускается скрипт обновления из мастера.

При этом, в файле конфигураций дочерних студий, настройки хранилища Nexus и Gitea настраиваются таким образом, чтобы они смотрели не на собственные хранилища, а на централизованный Nexus и Gitea в мастер-Студии (см. ra_dtmsconfig ra_dtmsconfig настройка параметров DOCKER_REGISTRY, GLOBAL_VALUES, GITEA_HOST).

5.4.3. Обнаружение ошибок миграции

Если после обновления в заголовке Datamart Platform Studio выводится предупреждающее сообщение об ошибках миграции, то это значит, что какая-то часть скриптов миграции при обновлении версии выполнена некорректно. Необходимо проверить статус прохождения процессов миграции данных командой rails data:migrate:status и схемы данных командой rails db:migrate:status:

# docker-compose -f docker-compose.datamart.yaml exec app bundle exec rails data:migrate:status

# docker-compose -f docker-compose.datamart.yaml exec app bundle exec rails db:migrate:status

В случае обнаружения ошибочного статуса (down) в одной из миграций, попробовать повторить процесс миграции командой rails db:migrate для схемы данных:

# docker-compose -f docker-compose.datamart.yaml exec app bundle exec rails db:migrate

и миграции данных командой rails data:migrate :

# docker-compose -f docker-compose.datamart.yaml exec app bundle exec rails data:migrate

запустить обе миграции сразу можно командой rails db:migrate:with_data :

# docker-compose -f docker-compose.datamart.yaml exec app bundle exec rails db:migrate:with_data

В случае повторения ошибок, прислать данные ошибок в службу технической поддержки Datamart Platform Studio для выяснения причин и оперативного устранения проблемы.