Резервное копирование и обновление iQBot
Что нужно сохранять
В стандартной установке (IQB_IQBFS_STORAGE=database, Messaging и NLU запускает ядро) все данные лежат в одной базе PostgreSQL: боты и их конфигурация, пользователи и роли, диалоги, события, а также обученные модели NLU. Поэтому основа резервной копии это дамп этой базы.
| Что | Где | Как сохранять |
|---|---|---|
| База данных | PostgreSQL | pg_dump, по расписанию |
Файл .env | рядом с исполняемым файлом iqbot | копия файла, права 600, хранить отдельно от дампа |
Каталог data/ | рядом с исполняемым файлом | нужен, только если IQB_IQBFS_STORAGE=disk, при database данные ботов в базе |
| Файлы языковых моделей | каталог языкового сервера | заменимы: поставляются по запросу в support@iqstore.ru |
Службы systemd, docker-compose.yml | сервер | в системе хранения конфигураций |
Если вы запускаете Messaging или NLU отдельно и даёте им собственные базы, дампы нужны для каждой из них, а у Messaging ещё и значение ENCRYPTION_KEY: без него сохранённые токены вебхуков не прочитать.
Дамп и восстановление базы
pg_dump -Fc -h localhost -U iqbot iqbot > iqbot-$(date +%F).dump
Восстановление в пустую базу:
createdb -h localhost -U iqbot iqbot_restore
pg_restore -h localhost -U iqbot -d iqbot_restore --no-owner iqbot-2026-11-06.dump
Копия, которую ни разу не восстанавливали, не считается резервной. Раз в квартал разворачивайте дамп на тестовом стенде и проверяйте, что платформа с ним запускается и боты отвечают.
Резервная копия отдельного бота
Для переноса и точечного резервирования используйте возможности самой платформы:
- Экспорт в списке ботов скачивает архив бота
.tgz. Он нужен, чтобы перенести бота на другой стенд или сохранить его перед рискованными изменениями. - Создать ревизию сохраняет контрольную точку внутри платформы, Откат возвращает бота к ней. Откат перезаписывает текущее содержимое бота без возможности отмены.
- Раздел «Контроль версий» скачивает архив всего сервера, команды
pullиpushпереносят данные между серверами, см. Командная строка iQBot.
Архив бота и ревизии не заменяют дамп базы: в них нет пользователей, ролей и журналов.
Обновление версии
- Сообщите пользователям об окне обслуживания.
- Сделайте дамп базы (см. выше) и сохраните копию
.env. - Остановите платформу (
systemctl stop iqbotилиdocker compose stop iqbot). - Замените файлы. Для установки из архива распакуйте новый архив поверх каталога установки:
.envиdata/в архиве нет, они не затрагиваются.Для Docker замените тег образа вsudo unzip -o iqbot-v<новая-версия>-linux-x64.zip -d /opt/iqbot
sudo chown -R iqbot:iqbot /opt/iqbot
sudo chmod +x /opt/iqbot/iqbot /opt/iqbot/bin/nlu /opt/iqbot/bin/messagingdocker-compose.yml. - Посмотрите, какие миграции потребуются, ничего не выполняя:
sudo -u iqbot /opt/iqbot/iqbot migrate up --dry - Запустите платформу с автоматической миграцией. Переменная
IQB_AUTO_MIGRATE=trueили ключ--autoMigrateнужны, только пока версия меняется, потом их можно убрать.sudo -u iqbot /opt/iqbot/iqbot --autoMigrate - Дождитесь строки
iQBot is readyи проверьтеcurl http://localhost:3000/status: все компоненты должны быть в состоянииup. - Откройте консоль, проверьте раздел «Готовность к продуктиву» и ответ хотя бы одного бота в эмуляторе. Если у ботов есть тестовые сценарии, запустите их:
./iqbot test-scenarios --botId <бот>. - Верните службу в штатный режим (
systemctl start iqbot, без--autoMigrate).
NLU и Messaging лежат в каталоге bin дистрибутива и обновляются вместе с ядром. Языковые файлы при обновлении менять не нужно, пока вам не сообщили о новой версии моделей.
Откат обновления
Если после обновления платформа работает неправильно, а миграции уже выполнены, вернуть версию можно только вместе с данными:
- Остановите платформу.
- Верните прежние файлы дистрибутива (старый архив или старый тег образа).
- Восстановите базу из дампа, снятого на шаге 2.
- Запустите платформу.
Откат миграций командой ./iqbot migrate down --target <версия> возможен, но надёжным способом остаётся восстановление дампа.
Переход на версию 3.0
iQBot 3.0 это новая базовая версия: автоматического переноса данных с версий 2.x и более ранних нет. Устанавливайте 3.0 на чистую базу данных, а ботов переносите архивами: в старой версии экспортируйте бота (Экспорт), в новой импортируйте его (Импортировать бота из архива). Пользователей, роли и настройки сервера создайте заново, при необходимости заранее сохраните выгрузку нужных данных из старой базы. Миграции, которые выполняет migrate, начинаются с версии 3.0.