Ускорение преобразования от MyISAM до InnoDB

У меня есть MyISAM-стол MySQL 1,5 ГБ (данные на 1,0 ГБ, индексы на 0,5 ГБ) в производстве, которое я собираюсь преобразовать в InnoDB.

Так как стол используется в производстве, я хотел бы сделать время простоя максимально коротким.

Мои вопросы:

  • Какие параметры конфигурации MySQL должны быть приспособлены, чтобы убыстриться ALTER TABLE table_name ENGINE=InnoDB;?

  • Что могут использоваться другие уловки, чтобы ускорить преобразование производственной таблицы базы данных от MyISAM до InnoDB?

17
задан knorv 17 January 2010 в 17:10
поделиться

3 ответа

- 4087713-
  • Установка большого innodb_buffer_pool_size (2 ГБ или более)
  • Преобразует ваши старые файлы данных myisam / index, используя команды оболочки
  • Увеличить InnoDB_LOG_FILE_SIZE (256 МБ)
  • . X Параллельные потоки, где x - это колёжи CTY CPU на вашем сервере
  • Другие второстепенные настройки только для преобразования (innodb_doublewrite = 0, innodb_flush_log_at_trx_commit = 0)

Настройка InnoDB_BUFFER_POOL_SIZE как можно выше, является типичным способом ускорения InnoDB Создание таблиц - Ваш набор данных выглядит так, будто он может поместиться внутри буферного пула 2 ГБ InnoDB, поэтому любой приличный сервер 64 битов должен позволить этому. ALTER TABLE TYPE = InnoDB также быстрее, чем решение Dump + Reimport и легко запустить параллельно.

Также убедитесь, что вы увеличили innodb_log_file_size из по умолчанию 5 МБ до 128 или 256 МБ. Осторожно, и ему нужна чистая остановка + стирание старого IB_Logfile *.

Если ваш сервер имеет что-то вроде 8 ГБ оперативной памяти, и что вы запускаете 64 бита версии MySQL, я бы предложил 2 ГБ innodb_buffer_pool, и вы можете даже преобразить старые файлы myd и myi перед закрытием простоя, так что они будут Будьте в кеше страницы ОС, когда начнутся реальная работа.

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

Удачи.

13
ответ дан 30 November 2019 в 13:45
поделиться

Таблица будет недоступна только для пишетов; Читает продолжат получать доступ к старой таблице MyIsam на протяжении всего изменения.

Серьезно, восстановление таблицы 1.5G не должно занимать много времени, если ваше приложение не может терпеть это количество простоя, у вас должна быть некоторая система HA на месте, которую вы можете использовать для этого. Предположительно, ваша команда по технической поддержке может изложить уведомление, чтобы сообщить пользователям о простоях времени и предоставлено достаточное предупреждение, вы сделаете это в тихом времени в день / недели (мы обычно нахожусь в воскресном утре, чтобы быть хорошим временем, но это может варьироваться, если У вас есть много клиентов в мусульманских странах)

Вы можете узнать, сколько времени возьмется, запустив на столе с одинаковым размером данных в нем на вашей непроизводственной системе той же конфигурации и спецификации, которая Вы несомненно, имеют для тестирования производительности.

2
ответ дан 30 November 2019 в 13:45
поделиться

Если вы после быстрого (хоть и несколько lo-Fi), вы можете просто экспортировать данные в текстовый файл (через mysqldump), измените тип таблицы на InnoDB в результирующем текстовом файле, а затем повторно импортируйте данные.

Это сказано, что вам нужно будет проверить это, импортируя в другую базу данных, чтобы убедиться, что нет проблем.

3
ответ дан 30 November 2019 в 13:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: