Перейти к содержанию

Обязательная миграция данных из MongoDB в Clickhouse при обновлении воркспейса на версию 9.300.dev.464 и выше

Начиная с версии 9.300.dev.464 в дистрибутиве воркспейса вместо mongodb управление данными аудита, истории запросов и событий воркспейса, будет производиться с помощью ClickHouse. В данной инструкции описан обязательный процесс миграции данных из mongoDB в ClickHouse, при обновлении на версию 9.300.x.464 и выше.

Процесс обновления воркспейса стандартный и описан в данной статье: update

Info

Данная инструкция выполняется до запуска обновления, то есть после остановки и бэкапирования воркспейса.

Подготовка

В зависимости от объёма данных внутри mongodb необходимо учесть свободное дисковое пространство на машине. т.к. коллекции будут сначала распакованы на машину механизмом mongoexport, потом залиты в clickhouse по принципу: mongoexport одной коллекции -> трансфер коллекции в clickhouse -> очистка временного файла -> mongoexport следующей коллекции и т.д.

После остановки и создания локального бэкапа воркспейса необходимо загрузить на воркспейс дистрибутив версии 9.300.dev.xxx, распаковать его в директорию, например:

cd /om/workspace-installer
mv ./current ./prev
mkdir ./current
tar -xf workspace_installer-d-9.300.dev.xxx.tar.gz -C ./current

Имена директорий и .tar архива могут отличаться.

После чего необходимо добавить в манифест, в блок workspace, следующие параметры (при условии, что используется встроенная в воркспейс база данных):

     "clickhouse": {
      "service": {
        "status": true  
      },
      "userPasswords": {
        "default": "PASSWORD", 
        "workspace": "SOME_PASSWORD"
      },
      "host": "127.0.0.1",
      "port": 3192,
      "username": "workspace",
      "password": "SOME_PASSWORD",
      "database": "workspace",
      "https": false
    },

Info

Важно: пароль пользователя workspace из блока userPasswords должен совпадать с полем password. Пароли должны быть не более 20 символов.

После этого обновляем воркспейс следуя инструкции

Миграция данных

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

lxc-attach $(lxc-ls)
bash /home/optimacros_middlework/optimacros_middlework/bin/container/shutdown.sh optimacros_middlework

Переходим под пользователя optimacros_middlework и меняем директорию:

su optimacros_middlework
cd ~/optimacros_middlework
Запускаем команду миграции:

console/command transfer-data-from-mongo-to-clickhouse --manifestPath ~/manifest.json --withAudit --withApiRequests --withOperationSteps --withConnections --withRequests

migrate-9300_1

Данная команда, в зависимости от объёма данных и скорости диска, может занять от 10 минут до нескольких часов.

migrate-9300_2

Далее выходим из пользователя optimacros_middlework и останавливаем nginx

exit
systemctl stop nginx

Выходим из контейнера, принудительно завершаем работу воркспейса:

exit
./current/install workspace --path /om/workspace1/manifest.json shutdown --force

Если до обновления делался локальный бэкап воркспейса (резервная копия директории workspace1), то можем удалить директорию /om/workspace1/data/mongodb и запустить воркспейс Если локального бэкапа не делалось - делаем локальную копию (если место на диске позволяет) и запускаем воркспейс, пример:

cd /om/workspace-backups
rsync -av /om/workspace1/data/mongodb ./mongo-backup
rm -r /om/workspace1/data/mongodb
cd /om/workspace-installer
./current/install workspace --path /om/workspace1/manifest.json up

Убеждаемся что ошибок при выключении и запуске воркспейса нет, все данные в аудите присутствуют, а так же новые данные записываются.