Новая установка CentOS.
Я выполнял импорт большой БД (файл 2 ГБ sql) и у меня возникла проблема. Казалось, что SSH-клиент потерял соединение, а импорт завис. Я использовал другое окно для входа в MySQL, и импорт оказался мертвым, застрявшим в определенной таблице строк 3M.
Так я попробовал
DROP DATABASE huge_db;
15-20 минут спустя ничего. В другом окне я сделал:
/etc/init.d/mysqld restart
В окне DROP DB появилось сообщение: ВЫКЛЮЧЕНИЕ СЕРВЕРА. Затем я фактически перезапустил физический сервер.
Вернулись в MySQL, проверил, и БД все еще там, побежал
DROP DATABASE huge_db;
снова и снова жду уже минут 5.
Еще раз, это свежая установка. Это huge_db
единственный БД (кроме системных БД). Клянусь, я уже давно и быстро сбросил БД, но, возможно, я ошибаюсь.
Я успешно удалил базу данных. Это заняло около 30 минут. Также обратите внимание, что я думаю, что ошибался, когда думал, что импорт mysqldump был мертв. Терминальное соединение было потеряно, но я думаю, что процесс все еще работает. Скорее всего, я убил промежуточную таблицу импорта (таблицу строк 3M) и, вероятно, 3/4 всего БД. Это вводило в заблуждение, что «top» показывал mysql, используя только 3% памяти, когда казалось, что он должен использовать больше.
Удаление БД заняло 30 минут, поэтому, опять же, мне, возможно, не пришлось перезагружать сервер и, возможно, я мог просто дождаться завершения DROP, но я не знаю, как mysql отреагирует на получение запроса DROP для тот же самый БД, который он импортирует через mysqldump.
Тем не менее, остается вопрос: почему для удаления базы данных объемом 2 ГБ требуется более 30 минут, когда все, что от нее требуется, - это удалить все файлы базы данных и удалить все ссылки на базу данных из information_schema? Подумаешь?
DROP DATABASE
команды сервер не будет работать, пока все соединения не будут закрыты.