Перейти к основному содержимому
Версия: ИИ спец релиз

Обновление TRON.ASOC

Рекомендуется выполнять обновление TRON.ASOC после выхода новой версии.

Перед обновлением обязательно сделайте резервные копии компонентов чтобы откатиться без потери данных, если обновление не удастся.

К сведению

Инструкция предполагает, что переход на новый реестр pcr.tronasoc.ru уже выполнен при обновлении до версии 1.7. Подробнее см. раздел Переход на новый реестр документации версии 1.7.

Обновление TRON.ASOC состоит из следующих этапов:

  1. Резервное копирование базы данных PostgreSQL с использованием Docker и MinIO
  2. Резервное копирование базы данных ClickHouse (S3 Storage)
  3. Установка новой версии TRON.ASOC
Внимание

Обратите внимание, что синхронизация баз данных PostgreSQL и ClickHouse с точностью до секунды не обязательна и допускается расхождение. При этом основным источником данных выступает БД PostgreSQL, она должна поддерживаться в максимально актуальном состоянии. База ClickHouse, в свою очередь, резервируется с интервалом около 20 минут, и ее незначительное отставание от PostgreSQL не влияет на работу системы.

Резервное копирование базы данных PostgreSQL с использованием Docker и MinIO​

Рекомендуется использовать штатные процедуры резервного копирования БД PostgreSQL, если они предусмотрены в вашей инфраструктуре. В иных случаях используйте стандартные инструменты резервного копирования, адаптированные под систему TRON.ASOC. Для этого в систему добавлен отдельный сервис, который создает резервную копию БД PostgreSQL и выгружает архив в S3-хранилище. Этот сервис подключается как отдельный компонент в Docker Compose с использованием профиля (profile) и не активируется по умолчанию.

Резервное копирование​

Чтобы сделать резервную копию БД PostgreSQL, выполните следующие шаги:

  1. Добавьте сервис postgres-backup в файл docker-compose.yml:

    postgres-backup:
    profiles:
    - backup
    image: pcr.tronasoc.ru/asoc/external/minback:v1.4
    environment:
    - PGHOST=psql
    - PGPORT=${ASOC_PG_PORT:-5432}
    - PGUSER=${ASOC_PG_USER:-asocusr}
    - PGPASSWORD=${ASOC_PG_PASSWORD:-asocpwd}
    - PGDATABASE=${ASOC_PG_DBNAME:-dbasoc}
    - MINIO_SERVER=http://minio:9000
    - MINIO_ACCESS_KEY=${ASOC_MINIO_ROOT_USER:-minioroot}
    - MINIO_SECRET_KEY=${ASOC_MINIO_ROOT_PASSWORD:-miniorootpassword}
    - MINIO_BUCKET=postgres-backups
    - DATE_FORMAT=+%Y%m%d-%H%M%S
    command: ${ASOC_PG_DBNAME:-dbasoc} -h psql -p ${ASOC_PG_PORT:-5432} -U ${ASOC_PG_USER:-asocusr}
    depends_on:
    psql:
    condition: service_healthy
    minio:
    condition: service_started
    restart: "no"
    Внимание

    Значения переменных взяты из docker-compose.yml для версии TRON.ASOC 1.4.2. Если вы используете другие значения, то приведите их в соответствие со значениями для других сервисов.

  2. Создайте бакет postgres-backups в S3:

    • перейдите в веб-интерфейс MinIO: http://$ASOC_DOMAIN:9001;
    • нажмите кнопку Create Bucket.
  3. Запустите резервное копирование сервиса командой:

    sudo docker compose --profile backup up --no-deps postgres-backup

Восстановление​

Чтобы восстановить БД PostgreSQL, выполните следующие шаги:

  1. Остановите контейнеры core, reporter и front командой:

    sudo docker compose stop core reporter front
  2. Переместите архив в контейнер с БД:

    sudo docker cp dbasoc-20260403-194144.archive [ID_контейнера_PostgreSQL]:/tmp/restore.archive
    К сведению

    Чтобы узнать значение ID контейнера PostgreSQL, выполните команду:

    sudo docker ps -qf "name=psql"
  3. Запустите восстановление БД в контейнере:

    • подключитесь к контейнеру командой:

      sudo docker exec -ti 15cd460e9c6c /bin/bash
    • убедитесь, что архив с резервной копией присутствует в директории /tmp:

      ls -lh /tmp
    • удалите старую БД:

      psql -U postgres -c "DROP DATABASE IF EXISTS dbasoc;"
    • создайте новую БД с владельцем asocusr:

      psql -U postgres -c "CREATE DATABASE dbasoc OWNER asocusr;"
    • восстановите архив от пользователя asocusr:

      pg_restore -U asocusr -d dbasoc -v /tmp/restore.archive
    • подключитесь к БД и проверьте наличие данных:

      psql -U asocusr -d dbasoc -> select * from users;
  4. Запустите сервисы core и reporter:

    sudo docker compose restart core reporter front
  5. Посмотрите логи сервиса:

    sudo docker ps -qf "name=core"
    sudo docker logs <id контейнера core>
    К сведению

    Пример успешного лога:

    2026-04-03T20:12:28.982+0000 [INFO][core][http][server][listen][url::8080] start listening
  6. Авторизуйтесь в веб-интерфейсе и убедитесь, что данные на месте.

Резервное копирование базы данных ClickHouse (S3 Storage)​

Внимание

Перед началом работ остановите контейнеры core, reporter и front, взаимодействующие с контейнером ClickHouse.

Остановка контейнера ClickHouse не требуется, так как если остановить контейнер ClickHouse, резервное копирование может быть неуспешным.

Миграция и резервное копирование БД ClickHouse включает следующие этапы:

  1. Подключение к терминалу контейнера и запуск клиента ClickHouse
  2. Создание резервной копии в S3
  3. Подключение к терминалу контейнера для восстановления
  4. Запуск восстановления БД

Подключение к терминалу контейнера и запуск клиента ClickHouse​

Чтобы подключиться к терминалу контейнера и запустить клиента ClickHouse, выполните следующие шаги:

  1. Выполните команду для подключения к терминалу в зависимости от места развертывания ClickHouse:

    • если БД развернута в Kubernetes, выполните команду:

      kubectl exec -it asoc-clickhouse-<номер_пода> -n namespace -- /bin/bash
    • если БД развернута в Docker Compose, выполните команду:

      docker exec -it tron-clickhouse-<номер_контейнера> /bin/bash
  2. Запустите клиента ClickHouse командой:

    clickhouse-client --database=asoc_db --user=<пользователь> --port=9000 --host=localhost

Создание резервной копии в S3​

Внимание

Эта инструкция рассчитана на использование встроенного S3-хранилища, которое разворачивается в вашей инфраструктуре при установке TRON.ASOC. Если вместо этого используется внешнее хранилище (External S3), замените логин и токен в команде из шага 2 на соответствующие учетные данные из ващего внешнего S3.

Чтобы создать резервную копию в S3, выполните следующие шаги:

  1. Запустите клиента ClickHouse командой:

    clickhouse-client --database=asoc_db --user=<пользователь> --port=9000 --host=localhost
  2. Введите следующий SQL-запрос:

BACKUP DATABASE asoc_db TO S3(
'https://URL_Вашего_S3/clickhouse-asoc/asoc_db_test_1.zip',
'ПОЛЬЗОВАТЕЛЬ_S3',
'ТОКЕН_S3'
)
SETTINGS compression_method='zstd', compression_level=3;
К сведению

Актуальное состояние БД хранится в директории /var/lib/clickhouse.

Подключение к терминалу контейнера для восстановления БД​

Чтобы повторно подключиться к терминалу контейнера, выполните шаг 1 из инструкции выше.

Запуск восстановления БД​

Чтобы запустить восстановление ClickHouse, выполните следующие шаги:

  1. Запустите клиента ClickHouse командой:

    clickhouse-client --database=asoc_db --user=<пользователь> --port=9000 --host=localhost
  2. Удалите старую БД: DROP DATABASE.

  3. Выполните восстановление:

RESTORE DATABASE asoc_db FROM S3(
'https://URL_Вашего_S3/clickhouse-asoc/asoc_db_test_1.zip',
'ПОЛЬЗОВАТЕЛЬ_S3',
'ТОКЕН_S3'

Установка новой версии TRON.ASOC​

Для установки новой версии воспользуйтесь инструкцией в разделе Установка с помощью Docker Compose или Установка с помощью Helm Chart.

Проверка результата​

Чтобы проверить результат обновления, выполните следующие шаги:

  1. Авторизуйтесь в системе.
  2. Перейдите в раздел О программе.
  3. Убедитесь, что в правом верхнем углу отображается новая версия продукта.