Middle
17
Как делать major upgrade PostgreSQL с версии 11 до 16 на живом продакшне с минимальным downtime?
Компании, где спрашивали
умеко
Ответ от нейросети
sobes.tech AI
Для major upgrade PostgreSQL с версии 11 до 16 на живом продакшне с минимальным downtime обычно используют стратегию с репликацией и переключением:
- Подготовка нового сервера с PostgreSQL 16. Устанавливаете новую версию на отдельном сервере или контейнере.
- Настройка репликации. Создаёте реплику с версии 11 на новую версию 16 с помощью
pg_upgradeне получится напрямую, поэтому используйте логическую репликацию или инструменты типаpglogical. - Синхронизация данных. Репликация переносит данные и изменения в реальном времени.
- Тестирование. Проверяете работоспособность приложения с новой базой.
- Переключение. В момент минимальной нагрузки переключаете приложение на новую базу.
- Откат. Если что-то пошло не так, можно быстро вернуться к старой базе.
Другой вариант — использовать pg_dump/pg_restore, но это требует длительного downtime.
Примерный план с логической репликацией:
# На старом сервере (Postgres 11):
CREATE PUBLICATION my_pub FOR ALL TABLES;
# На новом сервере (Postgres 16):
CREATE SUBSCRIPTION my_sub CONNECTION 'host=old_host dbname=old_db user=replica_user password=secret' PUBLICATION my_pub;
После полной синхронизации и проверки переключаете приложение на новый сервер.
Важно тщательно протестировать процесс на staging и иметь план отката.