последствия изменения движка хранения MySQL во время работы приложения - PullRequest
0 голосов
/ 07 мая 2018

У нас есть запущенное приложение, которое использует Mysql в многопоточной среде. У нас есть около 25 таблиц, из которых 20 таблиц используют InnoDb в качестве механизма хранения, а 5 таблиц используют MyISAM в качестве механизма хранения.

Мы собираемся изменить механизм хранения этих 5 таблиц на InnoDB. Вызовет ли это какую-то проблему, если изменить ее во время работы приложения

1 Ответ

0 голосов
/ 14 мая 2018

Любое изменение, которое вы делаете с помощью ALTER TABLE, для которого требуется копия таблицы, блокирует таблицу. Это самая важная проблема для приложений. Таблица будет недоступна из запросов любым приложением.

Как долго длится эта блокировка, зависит от размера таблицы, производительности вашего сервера и другой нагрузки, под которой находится сервер.

Вы можете вносить изменения с минимальным временем простоя, если вы используете онлайн-инструмент для изменения схемы, такой как pt-online-schema-change .

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

...