Импорт больших (и поврежденных?) Текстовых файлов в MySQL сломал мою лампу - PullRequest
0 голосов
/ 05 августа 2009

Я импортировал данные из текстовых файлов в mysql (через скрипт php). Этот дамп огромен, он разбит на 10 файлов. Я импортировал первый и второй, и все было хорошо - я мог видеть все записи в phpmyadmin и т. Д. Было около 700 000 (?) Записей. Когда я начал импортировать третий, случилось нечто странное - скрипт импорта загружен навсегда. Я оставил его, чтобы завершить свою работу, но после очень долгого времени (и так как файл был того же размера, что и предыдущие части, я думал, что это не должно занять много времени), я нажал «стоп» в браузере, чтобы остановить мой скрипт. Затем я попытался получить доступ к phpmyadmin ... загружается вечно и никогда не останавливается. Пытался загрузить мой сайт (он у меня на локальном apache2) ... грузится вечно.

/etc/init.d/mysql restart
Stopping MySQL database server: mysqld

... тоже длится вечно и никогда не завершается. На самом деле это никогда не останавливает. Я могу успешно перезапустить apache.

У меня есть резервная копия (снимок - это vm), но я пытаюсь выяснить, что происходит. Почему весь апач так реагирует? Что случилось? Как я могу предотвратить это в следующий раз? Я могу вернуться к снимку, импортировать правильные части 1 и 2, а затем попробовать 4-й вариант ... но что, если 4-й тоже все сломает?

Я использую Debian Lenny, Apache 2 и получаю доступ к своему сайту через «виртуальный» домен, настроенный в / etc / hosts и конфигурационный файл apache (да, я тоже пытался получить к нему доступ через 127.0.0.1 ... тоже не работает).


Я пробовал это:

killall mysqld
debian# /etc/init.d/mysql restart
Stopping MySQL database server: mysqld failed!
/etc/init.d/mysql: ERROR: The partition with /var/lib/mysql is too full! failed!

1 Ответ

0 голосов
/ 05 августа 2009

Здесь может происходить несколько вещей. Найдите еще несколько подсказок со следующим:

  • убедитесь, что вы не заполнили свой раздел var. Введите 'df -h' и посмотрите, заполнено ли что-либо на 100%.
  • проверьте журнал ошибок mysql, скорее всего, в /var/log/mysql.err или в чем-то подобном.
  • Вы всегда можете увидеть, что происходит в mysql, выполнив 'mysql -uroot -e "show processlist"' Вам необходимо изменить часть "-uroot" на допустимого пользователя в зависимости от того, как у вас установлена ​​mysql (" -u имя пользователя -p ")

Кроме того, killall - не лучший способ завершить работу mysql. Попробуйте sudo /etc/init.d/mysqld stop или mysqladmin -uroot shutdown. В общем, старайтесь не использовать killall. Если вам нужно убить, попробуйте «kill [pid mysql]» или «ps -ef | grep mysql | awk '{print $ 2}' | xargs kill»

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...