Миграция и резервное копирование

Два подхода к переносу данных

  1. Резервное копирование и восстановление (полное)

    Создание полной копии метаданных всей системы. Используется для Disaster Recovery (восстановления после сбоя) или для клонирования среды (например, dev → test).

  2. Экспорт и импорт (частичный)

    Это перенос отдельных объектов (воркбуков с их содержимым). Используется для переноса готовых отчетов между средами (например, test → prod) или для миграции из облака.

Резервное копирование и восстановление БД PostgreSQL

Вся конфигурация DataLens (пользователи, дашборды, права) хранится в служебной базе PostgreSQL. Бэкап этой БД — это и есть бэкап всей системы. Скрипт init.sh предоставляет для этого удобные команды:

  • Создать бэкап

    ./init.sh --dump-postgres > datalens_backup.sql
            

    Эта команда создаст SQL-дамп базы данных и выведет его в stdout, который перенаправляется в файл. Регулярное выполнение этой команды — основа стратегии бэкапов.

  • Восстановить из бэкапа

    ./init.sh --restore-postgres datalens_backup.sql
            

    Эта команда развернет данные из указанного SQL-файла в базу данных.

    Важно

    Данные в БД будут перезаписаны.

Важность CONTROL_API_CRYPTO_KEY

При восстановлении из бэкапа на новой инсталляции DataLens есть критический нюанс. Пароли и токены в подключениях зашифрованы ключом CONTROL_API_CRYPTO_KEY. Если на новой системе этот ключ будет другим, DataLens не сможет расшифровать старые секреты, и все подключения перестанут работать.

Совет

При миграции через бэкап и восстановление важно перенести не только дамп БД, но и значение CONTROL_API_CRYPTO_KEY из секрета Kubernetes старой системы в новую.

Экспорт и импорт воркбуков

Этот механизм предназначен для переноса конкретного контента. Он требует, чтобы на обеих инсталляциях была включена фича export.

Процесс:

  1. На исходной системе

    Пользователь с правами на воркбук выбирает опцию Экспортировать. DataLens формирует ZIP-архив со всеми объектами внутри воркбука.

  2. На целевой системе

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

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

Сценарий миграции: Yandex Cloud → On-premises

Это частая задача, когда компания переносит аналитику в свой контур. Поскольку прямого доступа к служебной БД облачного DataLens нет, используется метод экспорта и импорта.

План миграции:

  1. Подготовка

    Развернуть и настроить DataLens On-premises, включая авторизацию и сетевые доступы к источникам данных.

  2. Создание подключений

    В новом On-premises-окружении вручную создать все подключения к источникам данных, которые использовались в облаке.

  3. Экспорт

    В облачном DataLens последовательно экспортировать все необходимые воркбуки в JSON-файлы.

  4. Импорт

    В On-premises-окружении импортировать полученные JSON-файлы.

  5. Перепривязка

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

Кейс

Вы переносите DataLens на новый сервер с помощью pg_dump/pg_restore. После восстановления все дашборды на месте, но чарты не работают и выдают ошибку Connection failed. Что вы забыли сделать?

  • Включить фичу export

  • Перенести CONTROL_API_CRYPTO_KEY со старого сервера на новый

  • Выполнить команду ./init.sh --get-admin-password

  • Создать заново все подключения вручную

  • Включить фичу export

    Фича export нужна для переноса отдельных воркбуков, а не для восстановления из полного бэкапа.

  • Перенести CONTROL_API_CRYPTO_KEY со старого сервера на новый

    Верно! Без старого ключа DataLens не может расшифровать сохраненные реквизиты доступа к базам данных, что и приводит к ошибкам подключения.

  • Выполнить команду ./init.sh --get-admin-password

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

*Создать заново все подключения вручную

Это был бы обходной путь, но причина проблемы в другом. Правильное решение — перенести ключ.
        

Практика: создание и восстановление бэкапа

Сымитируйте процесс Disaster Recovery на вашем стенде.

  1. Создайте резервную копию текущего состояния.

    ./init.sh --dump-postgres > my_first_backup.sql
            

    У вас появится файл my_first_backup.sql.

  2. Войдите в интерфейс DataLens и удалите какой-нибудь объект.

  3. Убедитесь, что объект действительно удален.

  4. Восстановите систему из бэкапа.

    ./init.sh --restore-postgres my_first_backup.sql
            
  5. После завершения команды обновите страницу в браузере. Удаленный объект должен снова появиться.

Итоги

Вы освоили критически важные навыки: резервное копирование, восстановление и миграцию. Теперь вы умеете разворачивать, настраивать DataLens On-premises и обеспечивать его стабильную работу в долгосрочной перспективе.

Вы готовы к реальным задачам администрирования этой мощной BI-платформы. Успехов в работе!