Вмешательство в базу данных предполагает потенциальный риск. Мы не рекомендуем вносить ручные правки в базу, поскольку это может нарушить корректную работу платформы.
Перед внесением изменений в БД создайте резервную копию платформы.
Перед удалением узла кластера его нужно освободить от виртуальных машин (ВМ): удалить ВМ или перенести на другие узлы кластера. Если ВМ по какой-либо причине не могут быть удалены или перенесены, измените статус узла на "Повреждён". Для этого:
- Определите id недоступного узла кластера в разделе "Узлы".
- Подключитесь к серверу с платформой по SSH.
-
Подключитесь к СУБД:
В связи с поэтапным переходом платформы на использование СУБД PostgreSQL, разные экземпляры VMmanager могут использовать разные СУБД:
- VMmanager Hosting — MySQL;
- VMmanager Infrastructure:
- для новых установок на ОС Astra Linux, начиная с версии VMmanager 2023.06.1 — PostgreSQL;
- в остальных случаях — MySQL.
Чтобы определить тип СУБД, выполните на сервере с платформой команду:
docker ps --filter name=pgsql
Пример ответаCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 3213c5dc94d0 postgres:12 "docker-entrypoint.s…" 5 days ago Up 4 days 5432/tcp pgsql
Если вывод команды содержит информацию о контейнере, платформа использует PostgreSQL, если ответ пустой — MySQL.
MySQLdocker exec -it mysql bash -c "mysql isp -p\$MYSQL_ROOT_PASSWORD"
PostgreSQLdocker exec -it pgsql bash -c "psql -d isp"
-
Проверьте содержится ли в базе данных информация о резервных копиях ВМ и сетевых интерфейсах удаляемого узла:
select id,name,backup_location from vm_disk_backup where node=<node_ID>;
select id,name from vm_node_bridge where node=<node_ID>;
select id,name from vm_node_bond where node=<node_ID>;
select id,name from vm_node_interfaces where node=<node_ID>;
Пример запроса с результатами:
mysql> select id,name,backup_location from vm_disk_backup where node=1; +-----+------------------------+-----------------+ | id | name | backup_location | +-----+------------------------+-----------------+ | 42 | vm_102_20211224T000000 | 1 | | 77 | vm_102_20211231T000000 | 1 | | 111 | vm_102_20220107T000000 | 1 | +-----+------------------------+-----------------+ 3 rows in set (0.00 sec)
-
Если информация о резервных копиях или сетевых интерфейсах есть в базе данных, удалите её с помощью соответствующего запроса:
-
Резервные копии:
delete from vm_disk_backup where node=<node_ID>;
-
Бриджи:
delete from vm_node_bridge where node=<node_ID>;
Если при удалении информации о бриджах появляется ошибка вида ERROR 1451 (23000): Cannot delete or update a parent row: a foreign key constraint fails, выполните запрос:
UPDATE vm_host_interfaces i LEFT JOIN vm_host h ON i.host = h.id LEFT JOIN vm_node n ON h.node = n.id LEFT JOIN vm_node_bridge b ON b.node = n.id SET i.node_bridge = b.id WHERE i.node_bridge = <bridge_id> ;
-
Бонды:
delete from vm_node_bond where node=<node_ID>;
-
Сетевые интерфейсы:
delete from vm_node_interfaces where node=<node_ID>;
Обратите внимание!Если данные не удалить, то при удалении узла в платформе появится ошибка #1111 Handler throw uncaught exception: vm/node/{node_id} constraint.
-
-
Измените статус узла:
update vm_node set state='crashed' where id=<node_ID>;
-
В интерфейсе платформы обновите страницу раздела "Узлы" и удалите проблемный узел: меню → Удалить → введите название узла → Удалить .
Обратите внимание!ВМ проблемного узла будут удалены из базы данных платформы.