Миграция восстановления данных MongoDB -> Kafka
Концепция
В MongoDB содержится золотая запись всей платформы. Поэтому из MongoDB можно восстановить все данные в других БД.
Чтобы восстановить все данные из MongoDB в Apache Kafka необходимо запустить специальную миграцию восстановления описанную ниже.
Предварительна подготовка
Для начала нужно настроить in-миграцию через PostgreSQL из in-таблиц. Если у Вас уже настроена данная миграция, то пропустите этот пункт.
Дело в том, что данная миграция восстановления реализована в рамках механизма входящей миграции из in-таблиц PostgreSQL, и нужно вначале настроить именно эту миграцию.
Если же в Вашем случае нет миграции из in-таблиц PostgreSQL, то Вам ВСЁРАВНО нужно настроить эту миграцию на какой-нибудь один БО. И запустить её в холостую, чтобы система создала все необходимые таблицы для проведения миграции восстановления.
В ниже указанной ссылке подробно описано как запустить миграцию из in-таблиц PostgreSQL - вы можете проделать это всё, но не заливать данные в in-таблицы и прогнать миграцию из in-таблиц PostgreSQL впустую.
Также в нижеуказанном пункте содержится указание на стороннее PostgreSQL БД - стороннее БД брать не нужно, можно взять уже существующую БД и создать там отдельную схему, и настроить всё туда.
Как запустить миграцию из in-таблиц PostgreSQL написано здесь: Как настроить входящую миграцию через PostgreSQL с нуля
Настройка конфигурационного файла
Теперь нужно настроить конфигурационный файл
/mybpm/configs/InMigrationConfig.txt
В нём есть параметр:
# Пароль для сервисов, чтобы их другие не могли вызывать, кто этого пароля не знает.
# Если указано меньше шести (6) символов, то считается что пароля нет, и эти сервисы вызвать невозможно.
passwordToEnableServices=SuperPuperSecret
В этом параметре нужно придумать пароль, для защиты от сторонних попыток запустить миграцию в неподходящее время. Пароль должен быть шесть или больше символов. Если вместо пароля поставить - (тире), то миграцию вообще нельзя будет запустить тем самым эта возможность будет отключена.
Подготовка задач на запуск миграции
Теперь нужно вызвать сервис, который создаст задачи на выполнение операции. Сервис вызывается следующим образом:
GET http://localhost:1313/web/migration/create-mongo-to-kafka-tasks?pass=PASSWORD&companyCode=COMPANY_CODE
Например это можно сделать с помощью команды curl следующим образом:
curl --location 'http://localhost:1313/web/migration/create-mongo-to-kafka-tasks?pass=PASSWORD&companyCode=COMPANY_CODE'
Не забудьте здесь заменить PASSWORD и COMPANY_CODE соответствующими значениями.
PASSWORD - это тот самый пароль, который вы задали в конфиге, описанный ранее.
COMPANY_CODE - это код аккаунта, в котором вы работаете в системе. Его можно посмотреть в диалоговом окне "О Платформе",
которое можно вызвать справа в верху, где находиться меню профиля пользователя:

В диалогом окне будет параметр под названием "Код аккаунта":

При вызове этого сервиса должно появиться сообщения, что задачи на миграцию Mongo -> Kafka созданы для всех БО, которые есть в вашем аккаунте.
Если появляются другие сообщения, то нужно исправить соответствующие недочёты, которые указаны в этих сообщениях.
Например, в системе уже содержаться не выполненные задачи, и создавать в данный момент новые нельзя. Нужно подождать когда, те задачи выполняться.
В сервисе можно мигрировать не все БО, а только некоторые, добавив не обязательный параметр boCodes, примерно так.
GET http://localhost:1313/web/migration/create-mongo-to-kafka-tasks \
?pass=PASSWORD \
&companyCode=COMPANY_CODE \
&boCodes=CODE1,CODE2
Где CODE1 и CODE2 нужно заменить кодами тех БО, которые вы хотите восстановить сейчас. Тут через запятую можно
перечислить много кодов БО.
Также существует возможность указать все БО данной компании за исключением некоторых.
Для этого можно добавить необязательный параметр excludeBoCodes, примерно так:
GET http://localhost:1313/web/migration/create-mongo-to-kafka-tasks \
?pass=PASSWORD \
&companyCode=COMPANY_CODE \
&excludeBoCodes=CODE1,CODE2
Где CODE1 и CODE2 нужно заменить кодами тех БО, которые вы хотите исключить. Тут через запятую можно
перечислить много кодов БО.
Можно передать оба параметра сразу: boCodes и excludeBoCodes - при этом приоритетным будет
параметр excludeBoCodes, то есть эти БО будут исключены, даже если их коды указаны в boCodes
Мониторинг задач миграции восстановления
Когда задачи созданы, их исполнение можно мониторить, для этого можно воспользоваться БД PostgreSQL. Там в базе данных с in-таблицами, будет представление со следующим именем:
last_migration_state
Его можно посмотреть так:
select * from public.last_migration_state
Вместо public укажите ту схему, которую вы настроили при запуске in-миграции через PostgreSQL.
