Импорт 8GB MySQL дампа занимает много времени - PullRequest
11 голосов
/ 23 мая 2011

У меня есть 8 ГБ базы данных MYSQL таблиц InnoDB, созданных с помощью mysqldump. Я импортирую данные с:

mysql -uroot -p my_db < dump.sql

Дамп базы данных объемом 5 ГБ был импортирован в течение часа. 8 ГБ дамп занимает 50 часов и считается. Когда я проверял список процессов с

ПОКАЗАТЬ ПРОЦЕСС;

Большую часть времени был видим один запрос INSERT с состоянием «освобождающие элементы»

Есть ли способ, кроме копирования необработанных файлов, ускорить процесс импорта?

Ответы [ 2 ]

14 голосов
/ 23 мая 2011

Хитрость в том, чтобы убедиться, что самая большая отдельная таблица помещается в буферный пул innodb. Если этого не произойдет, то вставки (и, конечно, импорт) будут очень медленными.

Не имеет значения размер всей базы данных, но самая большая отдельная таблица.

Для значительно больших баз данных вы можете рассмотреть альтернативные способы передачи базы данных, такие как снимки файловой системы. Это, конечно, лучше всего работает, если на ваших машинах установлена ​​одна и та же версия базы данных, ОС и архитектуры.

6 голосов
/ 23 мая 2011

Сколько памяти у машины?Мое первое предположение было бы, что у машины есть 6 ГБ или 8 ГБ памяти, и mysql был в состоянии сохранить первый дамп полностью в памяти, но каким-то образом заменяет хард-ядро при втором импорте.Можете ли вы запустить vmstat 5 в течение нескольких итераций при импорте и посмотреть, насколько сильно система перезагружается?

...