Как стать автором
Обновить

Обновление базы данных и zero-downtime deployment

Время на прочтение4 мин
Количество просмотров9.4K
Всего голосов 12: ↑11 и ↓1+10
Комментарии6

Комментарии 6

Добавление нового поля также как и добавление любого другого объекта базы данных — обратно-совместимое изменение и не требует никаких дополнительных шагов в плане реализации zero-downtime deployment.
Не факт, если поле имеет нетривиальное значение по умолчанию.
Если вы имеете в виду, что его значение рассчитывается по данным из других полей, то согласен, это будет еще одним частным случаем для миграций описанных в статье. Позже добавлю апдейт.
А есть ли готовые утилиты, в идеале open source и бесплатные для коммерческого использования, которые могут помочь?

Да, можно посмотреть на утилиту pt-online-schema-change. Она позволяет выполнять ALTER TABLE и другие массивные изменения схемы на лету, это достигается, например, за счёт создания временной таблицы и временных триггеров, которые реплицируют все изменения исходной таблицы во временную. Потом происходит атомарное переименование таблиц. Утилита выполняет всё колдовство сама, на входе только несложные параметры и запрос ALTER TABLE. Посмотрите документацию.

Если в базе несколько терабайт данных то простое добавление или удаление колонки далеко не zero-downtime, база может секунды, минуты и даже больше быть недоступной для записи или даже чтения пока эти операции не завершатся. Ожидал от статьи чего-то интересного, а по факту банальщина. Разочарован.
НЛО прилетело и опубликовало эту надпись здесь
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории