У меня есть MyISAM-стол MySQL 1,5 ГБ (данные на 1,0 ГБ, индексы на 0,5 ГБ) в производстве, которое я собираюсь преобразовать в InnoDB.
Так как стол используется в производстве, я хотел бы сделать время простоя максимально коротким.
Мои вопросы:
Какие параметры конфигурации MySQL должны быть приспособлены, чтобы убыстриться ALTER TABLE table_name ENGINE=InnoDB;
?
Что могут использоваться другие уловки, чтобы ускорить преобразование производственной таблицы базы данных от MyISAM до InnoDB?
Настройка 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 перед закрытием простоя, так что они будут Будьте в кеше страницы ОС, когда начнутся реальная работа.
Если вы также пойдете на второстепенные настройки, пожалуйста, имейте в виду, что вам нужно отменить их после преобразования (еще одно небольшое время простоя), чтобы ваши данные были в безопасности, я сомневаюсь, что они стоят этого для такого небольшого набора данных.
Удачи.
Таблица будет недоступна только для пишетов; Читает продолжат получать доступ к старой таблице MyIsam на протяжении всего изменения.
Серьезно, восстановление таблицы 1.5G не должно занимать много времени, если ваше приложение не может терпеть это количество простоя, у вас должна быть некоторая система HA на месте, которую вы можете использовать для этого. Предположительно, ваша команда по технической поддержке может изложить уведомление, чтобы сообщить пользователям о простоях времени и предоставлено достаточное предупреждение, вы сделаете это в тихом времени в день / недели (мы обычно нахожусь в воскресном утре, чтобы быть хорошим временем, но это может варьироваться, если У вас есть много клиентов в мусульманских странах)
Вы можете узнать, сколько времени возьмется, запустив на столе с одинаковым размером данных в нем на вашей непроизводственной системе той же конфигурации и спецификации, которая Вы несомненно, имеют для тестирования производительности.
Если вы после быстрого (хоть и несколько lo-Fi), вы можете просто экспортировать данные в текстовый файл (через mysqldump), измените тип таблицы на InnoDB в результирующем текстовом файле, а затем повторно импортируйте данные.
Это сказано, что вам нужно будет проверить это, импортируя в другую базу данных, чтобы убедиться, что нет проблем.