Sobes.tech
Middle
19

Как делать major upgrade PostgreSQL с версии 11 до 16 на живом продакшне с минимальным downtime?

Companies where asked
умеко

Answer from AI

sobes.tech AI

Для major upgrade PostgreSQL с версии 11 до 16 на живом продакшне с минимальным downtime обычно используют стратегию с репликацией и переключением:

  1. Подготовка нового сервера с PostgreSQL 16. Устанавливаете новую версию на отдельном сервере или контейнере.
  2. Настройка репликации. Создаёте реплику с версии 11 на новую версию 16 с помощью pg_upgrade не получится напрямую, поэтому используйте логическую репликацию или инструменты типа pglogical.
  3. Синхронизация данных. Репликация переносит данные и изменения в реальном времени.
  4. Тестирование. Проверяете работоспособность приложения с новой базой.
  5. Переключение. В момент минимальной нагрузки переключаете приложение на новую базу.
  6. Откат. Если что-то пошло не так, можно быстро вернуться к старой базе.

Другой вариант — использовать 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 и иметь план отката.