Изменить таблицу 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: Я считаю, что это безопаснее и глупо доказательством (основано на моем опыте).