Обязательная миграция данных из 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 и меняем директорию:
Запускаем команду миграции:console/command transfer-data-from-mongo-to-clickhouse --manifestPath ~/manifest.json --withAudit --withApiRequests --withOperationSteps --withConnections --withRequests

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

Далее выходим из пользователя optimacros_middlework и останавливаем nginx
Выходим из контейнера, принудительно завершаем работу воркспейса:
Если до обновления делался локальный бэкап воркспейса (резервная копия директории 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
Убеждаемся что ошибок при выключении и запуске воркспейса нет, все данные в аудите присутствуют, а так же новые данные записываются.