@JustFool

Миграции могут уронить проект, как быть?

В моем проекте я пользуюсь yii/migrate, как то раз во время деплоя я поднял миграции и тут случилось оно. Из за миграций бд залочилась, после чего вообще упал MySQL. Причиной была слишком большая таблица с большим кол-во записей, а в миграциях был ADD COLUMN Как быть, как можно подстраховаться в таких случаях, кроме тестирования?
  • Вопрос задан
  • 329 просмотров
Пригласить эксперта
Ответы на вопрос 3
Sanasol
@Sanasol
нельзя просто так взять и загуглить ошибку
кроме тестирования

а причем здесь тестирование?

Если есть большая таблица она в любом случае будет долго изменяться.
Чем больше - тем дольше.
Для этого нужно уходить в тех. работы и сайт отключать.
Ответ написан
Wolfnsex
@Wolfnsex
Если не хочешь быть первым - не вставай в очередь!
Из за миграций бд залочилась, после чего вообще упал MySQL.
Это MySQL, с ним такое бывает.

Причиной была слишком большая таблица с большим кол-во записей, а в миграциях был ADD COLUMN Как быть, как можно подстраховаться в таких случаях, кроме тестирования?
Я не уверен на 100% (ещё не проснулся, что бы слишком трезво соображать), но мне кажется тут есть 2 основных варианта решения проблемы:
1. Не использовать MySQL
2. Использовать репликацию в MySQL

Причиной была слишком большая таблица с большим кол-во записей
Мне кажется, наиболее вероятной проблемой был слишком слабая машина (память, процессор, диск), для такого объёма данных БД, а не слишком большая таблица :)
Ответ написан
@Fortop
Tech/Team lead
Не нужно ничего останавливать.
Есть таблица Т.

Схема простая.
1. Сначала создаём пустую таблицу Т1 с нужной структурой. Т.е с уже добавленным столбцом.
2. Затем копируем данные из Т в Т1.
3. Если запись в Т очень активная, то возможно придётся повторить процесс копирования для данных, что добавились пока мы копировали исходные.
4. Когда период копирования станет небольшим отключить запись данных в Т.
5. Сделать финальную синхронизацию.
6. Переименовать Т в Т_OLD.
А T1 переименовать в T
7. Включить запись в Т
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы