Pull to refresh

Comments 13

Самое интересное при работе PG в docker - это переход на новую версию PG.
Причем если образ postgres:latest, то контейнер может и сам обновится, и далее все "сломается". Что дальше делать с данными ?
Переход на новую версию на хост системы подробно описан в документации, а тут ?

Из всех утюгов звучало не использовать тег latest.

Нормальные люди всегда могут из бекапа поднять.

Переход сводится к тому, чтобы:
1. выключить пг
2. обновить пакеты
3. включить пг

С докером это проще:
1. спулить образ с новой версией (бд ещё работает, а мы уже обновления скачали)
2. остановить контейнер со старой пг
3. запустить контейнер с новой и внутренний процесс обновления пройдёт
4. Можно сразу запустить старый пг, если что-то пошло не так (данные из бекапа или снапшота)

Ну а ещё можно интересные штуки делать:

1. после выключения контейнера сделать снапшот тома с данными меньше чем за секунду
2. восстановление из снапшота меньше чем за секунду
3. естественная дедупликаия данных
4. в случае успешного обновления удаление снапшота

3. запустить контейнер с новой и внутренний процесс обновления пройдёт

А вы пробовали ? Внутренний процесс PG - это pg_upgrade в котором нужно 2 версии PG, текущая и новая. В случае c контейнером в нем нет старой версии.

Поднять тз бекапа можно, но то иногда оооочень долго.

Запстить из бекапа снапшотом заняло несколько секунд, очень быстро.

Попробовал, в контейнере есть и старая и новая версии. Пруф.

Ну это отдельный контейнер апгрейда, согласен они решают проблему. Только в статье об этом ничего нет, с этим и связан был изначальный вопрос

используйте для обновления докерный pg_upgrade и не используйте образы postgres:latest - используйте postgres:N , где N - номер версии. Например postgres:14

Да, это решение. Но

  1. В статье про это ничего нет, имхо это важно

  2. Это не официальный образ

Смотрел, смотрел, но смысла статьи так и не понял. А, если только реклама себя любимых.

Куча ключевых слов, вы что, не заметили? Некоторые даже курсивом. В них и смысл.

Когда ждать статью, ставим Docker в Docker?:)

%USERPROFILE%> docker pull postgres
no matching manifest for windows/amd64 in the manifest list entries

Так просто, что даже сэкономило мне место на диске. Спасибо!

Статья написана из обрывков(фрагментов). Но как туториал/гайд расценивать нельзя, т.к. не возможно прийти к поставленной цели через пошаговое, представленное тут, руководство.

Sign up to leave a comment.