Ускорение выгрузки и импорта MySQL
Существуют ли документированные методы для ускорения дампов и импорта mySQL?
Это будет включать настройки my.cnf, использование ram-дисков и т. Д.
Нужны только документированные методы, желательно с ориентирами, показывающими потенциальное ускорение.
9 ответов
http://www.maatkit.org/ имеет mk-rallel-dump и mk-rallel-restore
Если вы мечтали о многопоточном mysqldump, не желайте больше. Этот инструмент сбрасывает таблицы MySQL параллельно. Это намного умнее mysqldump, который может действовать как оболочка для mysqldump (с разумным поведением по умолчанию) или как оболочка для SELECT INTO OUTFILE. Он предназначен для высокопроизводительных приложений с очень большими размерами данных, где скорость имеет большое значение. Он использует преимущества нескольких процессоров и дисков, чтобы вывести ваши данные намного быстрее.
В mysqldump также есть различные возможные варианты, например, не создавать индексы во время импорта дампа, а вместо этого делать их массовыми по завершении.
- Получить копию High Performance MySQL. Отличная книга.
- Расширенные вставки в отвалы
- Создайте дамп в формате --tab, чтобы вы могли использовать mysqlimport, который работает быстрее, чем mysql
- Импорт с несколькими потоками, по одному для каждой таблицы.
- Если возможно, используйте другой движок базы данных. импорт в сильно транзакционный движок, такой как innodb, очень медленный. Вставка в нетранзакционный механизм, такой как MyISAM, намного быстрее.
- Посмотрите на скрипт сравнения таблиц в Maakit toolkit и посмотрите, можете ли вы обновить свои таблицы, вместо того, чтобы создавать дампы и импортировать их. Но вы, вероятно, говорите о резервном копировании / восстановлении.
Если вы импортируете в InnoDB, единственное, что вы можете сделать, это поместить
innodb_flush_log_at_trx_commit = 2
в вашем my.cnf
временно во время выполнения импорта. Вы можете положить его обратно 1
если вам нужна кислота.
Я думаю, ваш вопрос также зависит от того, где находится узкое место:
- Если ваша сеть является узким местом, вы также можете посмотреть на
-C
/--compress
флаг дляmysqldump
, - Если на вашем компьютере заканчивается память (т. Е. Начинается подкачка), вы должны купить больше памяти.
Кроме того, посмотрите на --quick
флаг для mysqldump
(а также --disable-keys
если вы используете MyIsam).
Использование расширенных вставок в дампах должно ускорить импорт.
mysqlhotcopy
может быть альтернативой для вас, если у вас есть только таблицы MyIsam.
Используя индексы, но не слишком много, активируйте кеш запросов, используя sphinx для большой базы данных, вот несколько хороших советов http://www.keedeo.com/media/1857/26-astuces-pour-accelerer-vos-requetes-mysql (На французском)
Другой альтернативой является http://www.mydumper.org/ - многопоточное резервное копирование / восстановление mysql, которое в 3-10 раз быстрее, чем mysqldump, и может обрабатывать как MyISAM и InnoDB, так и Drizzle http://vbtechsupport.com/1695/