Антон
угу, и половина вьюх слетит
Антон
миграции для того и нужны, чтоб изменения бд и кода применялись одновременно
Ruslan
не все миграции совместимы с обновлением кода.
например, в схеме, когда у вас head/tail базы (в проде используется одна из и с каждым релизом они меняются местами) самый сложный вариант миграции
это изменение формата поля ... так вот он делался в 5 шагов. то есть в 5 релизов
чтобы было forward & backward compatibility
Ilia
Ruslan
я лучше потом в личку воспроизведу, если не горит. сейчас чутка занят
Ilia
Антон
возможно, я не встречался пока с какими-то случаями, но если миграции транзакционны, и имеют полноценны down (да, это не всегда возможно, или очень трудозатратно), то достаточно одной бд, если же дауна нет, то две бд, и переключение в зависимости от версии релиза
Alex
Ruslan
ну нет, это слишком строгое ограничение.
Aleksandr
это не ограничение, а определение
Антон
если бы они не помогали обеспечивать косистентность версии бд с версией кода - я бы их не испольовал)
Alex
Делайте в два шага, что я еще могу сказать.
Антон
зачем в два?)
Alex
На больших базах выполнение миграций это жесть по времени.
Alex
зачем в два?)
Потому что если делать в один шаг то придется полный цикл миграций накатить
Антон
ну миграции тоже разные бывают
Alex
Например, добавить поле и удалить еще какое то.
Alex
Все это долго. Если раскатить это на несколько шагов то это позволит достичь меньшего даунтайма.
Alex
И научить код работать с двумя полями одновременно
Alex
Сложные миграции должны накатываться без простоя имхо. Либо простой должен быть гарантированно небольшим.
Alex
Иначе прод будет простаивать пару часов
Антон
собственно, дженкинс заливает код в папку нового релиза, делает копию бд, накатывает миграции и мы переключаемся на новый релиз, зачем мне дайнтайм?
Alex
Стоп стоп стоп
Alex
что происходит со старой версией базы?
Alex
туда в реалтайме могут новые данные приходить
Alex
вы просто теряете часть данных
Aleksandr
класс, вы предлагаете все делать по букве?
нет, ты просто путаешь конкретный кейс с определением. миграция - это миграция базы, а конкретный твой кейс - миграция помогает при деплое достичь консистентности кода и базы.
Alex
представьте что вы зашли на авито, добавили объявление а потом обнаружили что его там и не было никогда.
Alex
Так как с переключением базы вы не допускаете потерь данных?
Антон
ок, вместо копии используем репликацию
Alex
постгрес вроде позволяет в транзакции накатывать обновление схемы данных
Ruslan
Alex
То что сейчас есть? а что есть? то что у вас есть то на вас и накладывает ограничения.
Alex
Вроде в постгрессе можно накатывать обновление схемы в транзакции. Следовательно достаточно сделать так чтобы старый код мог работать с новой схемой пока новый код не будет запущен во всех инстансах
Alex
А следовательно лучше делать миграции базы в два шага.
Alex
Возможно кто то более опытный что подскажет? хотя мне кажется это больше для канала по базам данных.
Антон
ну да, моя база не содержит такого кол-ва данных, чтоб миграции выполнялись дольше пары секунд
Alex
Тогда у вас и проблемы нет
Alex
я говорю про базы где даунтайм может достигать хоть полчаса.
Alex
Впрочем даже 10 минут имхо перебор, если сайт не заточен на конкретную временную зону.
Roman
Anton
Антон
где я говорил, что это аргумент к использованию докера?
Anton
там выше обсуждали докеризацию бд и смысл этого
Антон
я просто возразил на то, что бд может изменяться чаще, и все
Стас Щетинников
> Anton
я просто возразил на то, что бд может изменяться чаще, и все
Просто тут надо понимать, что докер про ЧАСТО ИЗМЕНЯЕМЫЙ КОД сервисов, а не про часто изменяемые данные. Поэтому сколько там раз миграции применяются - не столь важно.
Антон
применение миграций - это часть деплоя, все же)
Denis Kalanov
Небольшой обзор докладов на предстоящей конференции "Linux Piter #2":
https://habrahabr.ru/company/emc/blog/311614/
Максим
Ребят, можете помочь с докером? Уже совсем с ног сбился :( Все время после перезагрузки поднимается интерфейс docker0. Причем контейнеров докеровских никаких нет, все удалены. Но интерфейс поднимается, на пинги отвечает, апач на нем работает. Где можно найти этот неуловимый конейнер?
Alexander
docker ps что показывает?
Максим
пусто
Максим
В том то и суть. И от пользователя, и от рута
Alexander
netsta -ntlp
Max
И docker ps -a пустой?
Максим
Да
Alexander
в хост системе есть апачь?
Максим
есть
Alexander
опусти его и не дудет отвечать
Alexander
или listen сделай на конкретный ip
Alexander
netstat -ntlp | grep 80
Максим
убил апач, отвечать перестал
Alexander
Думаю будет что типа
tcp6 0 0 :::80 :::* LISTEN 3810/apache2
Максим
Интерфейс только не пойму откуда берется
Alexander
демон докера его подинмает
Максим
а откуда? Я уже ведь всей контейнеры удалил
Alexander
https://docs.docker.com/engine/userguide/networking/default_network/custom-docker0/#customize-the-docker0-bridge
Alexander
глубже не копал
Максим
Удалил мост. После перезагрузки та же лавочка
Evgenii
а чем мост мешает?
Ruslan
господа. у меня тут интерсная ситуация. я поднял набор контейнеров docker-compose-ом, они друг друга видят , подсетка стандартная 172.18.255.255
поднял рядом еще два но уже просто докером, подсетка 172.17.255.255 ( не 172.18 ! )
эти два друг друга видят и по именами и по ip (приложения отвечают по http)
но из первой группы вторая группа не видна и наоборот причем даже ping не ходит
обе группы видны с хоста
Ruslan
вопрос
Ruslan
чозах
Anonymous
Вопрос то в чем?
Sergey
network_mode Надо указать, если нужно чтобы они все друг друга видели, то есть либо при запуске композером прописать network_mode=bridge, либо тем что руками поднимал указать тот нетворк который создал композер
Ruslan
как переконфигурировать сетку в принципе понятно .. как для всех групп, так и персонально. тут вопрос в другом. почему подсетки не умеют друг к другу ходить ... без дополнительных приседаний
Anonymous
потому что нет маршрутизации?
Ruslan
это ответ?
Gem
это ответ?
Нужен маршрутизатор или arp proxy - но его нельзя советовать