Изменить таблицу mysql в автономном режиме или нет?
Мне нужно добавить столбец в текущую таблицу.
Эта таблица используется много в течение дня и ночи. я узнал, что мне нужно изменить с помощью команды alter, найденной здесь.
http://dev.mysql.com/doc/refman/5.1/en/alter-table.html
Я тестировал его на сервере разработки.
Мне потребовалось около 2 часов. Теперь я хочу выполнить это на рабочем сервере?
это остановит мой сайт?
Ответы
Ответ 1
Почему бы не отобразить на сайте сообщение о том, что вы будете выполнять техническое обслуживание с полуночного времени UTC 7 января 2012 года.
Таким образом, вы не будете ломать какие-либо данные, вы не получите никаких ошибок mysql. вы выполняете свой ALTER и снова запускаете сайт после его завершения (не забудьте свой код, чтобы убедиться, что у вас есть правильное поле и т.д.). Простое решение.
Stackoverflow делает это, почему не ваш?
Ответ 2
Да, во время ALTER TABLE все чтения и записи блокируются. Если ваш сайт должен использовать эту таблицу, запросы будут зависать.
Попробуйте pt-online-schema-change. Он позволяет читать и записывать, чтобы продолжить, в то время как он фиксирует изменения, которые должны быть воспроизведены против измененной таблицы после завершения реструктуризации.
Тестовый тест на сервере разработки, чтобы вы знали, как он работает и что ожидать.
Ответ 3
Он не остановит ваш сайт, но, скорее всего, он вызовет ошибки.
Конечно, нет способа ответить на этот вопрос, не глядя на весь код вашего приложения.
В нижней строке указано, что при сомнительном графике окно обслуживания.
Ответ 4
- Сделать производственный сервер на какое-то время указывать на dev db (или) зеркало prodcution db.
- Изменить таблицу в процессе производства
- Разверните код, связанный с производством db (с новыми атрибутами)
P.S: Я считаю, что это безопаснее и глупо доказательством (основано на моем опыте).