(InnoDB) копировались данные из другой базы (из таблицы в таблицу):
INSERT INTO base1.table SELECT * from base2.table
Копирование длилось ~ 12 часов, и в какой-то момент операция прервалась с ошибкой, что мол таблица повреждена и теперь (даже после перезапуска сервера)
mysqld съдает 100% CPU и не открывает подключения (Unable to connect to localhost).
Я так понимаю, что он откатывает изменения, но это продолжается уже 5 суток. В логах ничего нет.
Мне на самом деле эти конкретные базы (base1 и base2) не нужны (я могу восстановить их из резервной копии).
Как мне отменить эту операцию отката и просто запустить сервер, чтобы работали все мои другие базы?
Это ещё надо доказать, что там что-то происходит, а не дедлок
а как узнать? к бд подключиться не могу мб какой-то уровень детализации в логах повысить?
/var/log/mysqld.log Можно отсюда начать, дальше я не так сильно шарю к сожалению
С чего подключиться не можете? Место свободное есть?
Для начала смотреть в error log, как выше и написали, чтобы понять, что происходит при запуске. Потом, возможно, использовать innodb_force_recovery - https://dev.mysql.com/doc/refman/8.0/en/forcing-innodb-recovery.html Но не советую бежать и сразу играться с переменной, пока не понятно, что там вообще происходит. Так что в первую очередь обязательно error log смотреть. Касаемо уровня логирования, он выставляется вот этой переменной - https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_log_error_verbosity
Это сервер откатывает транзакции, что не удалось завершить, почти наверняка. Жди.
Отменить - просто установить сервер с нуля
Смотри в логи сервера, там всё написано
а с текущими бд как быть? я их и забэкапить не могу сейчас
в логах пусто
Никак. Либо стирай всё, либо жди когда откатится транзакции
В логах что-то да должно быть
я подозреваю что уровень детализации низкий, но если повысить и ребутнуть, то заново начнёт откатывать. скоро 6е сутки пойдут!
Нет там достаточный уровень чтобы всё что надо выводить
# tail -f /var/log/mysql/error.log 2023-08-03T06:15:22.769281Z 0 [System] [MY-010116] [Server] /usr/sbin/mysqld (mysqld 8.0.26-0ubuntu0.20.04.2) starting as process 1039454 2023-08-03T06:15:22.782695Z 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started.
Если очень не терпится, то innodb_force_recovery про который я уже писал. В ссылке выше все написано, какие значение что делают: innodb_force_recovery=3 - скипает rollback транзакций innodb_force_recovery=5 вообще не смотреть в undo, считать, что все транзакции «закоммичены» Любое значение выше 3 с высокой долей вероятности «закораптит» файлы данных, потому что данные будут не консистентны. Но сервер поднимется, можно будет сделать дамп. В вашем случае, если проблема в одной таблице, то ставить параметр в 3, поднимать и дропать эту таблицу. Такой сценарий порямо там же описан, но кто бы читал…
Обсуждают сегодня