Я пытаюсь импортировать 10-гигабайтную базу данных в свою локальную установку mysql. Я использую Ubuntu 11.10. Я использую для этого командную строку.
mysql -u root -p database < database.backup.sql
Я оставил его работать на 2 дня и, наконец, остановил его, просто чтобы посмотреть, что происходит, и у меня было только несколько таблиц. Мне нужен лучший способ сделать это, но я не нашел ничего, что говорило бы сделать это иначе, чем в командной строке.
Есть ли другой способ сделать это, при котором время ожидания сервера (или того, что он делает) не истекает?
войдите в другое окно mysql и введите, вы увидите, где он "застрял" ...
SHOW PROCESSLIST;
используя эту информацию, вы сможете настроить my.cnf и ускорить импорт.
Также взгляните на свой mysqld.log, убедитесь, что там все чисто, когда вы запускаете mysqld, это также даст вам указание, если что-то не так (например, поврежденный InnoDB).
Если это не вся одна таблица, вы можете разделить ее на несколько файлов и загрузить каждый из них в отдельный клиент (это будет работать быстрее, а также упростит изоляцию ошибки).
В зависимости от того, как структурирован файл, а также от структуры вашей базы данных, типа движка и т. Д., Вы можете получить огромный извлеките выгоду из заключения вашего импорта в транзакцию (или несколько).
На ум приходит конкретное веб-приложение. Программа установки просто выполнила сценарий .sql, состоящий из нескольких тысяч вставок. Это заняло ~ 2 минуты. Как только я заключил это в транзакцию, она выполнилась менее чем за секунду.