Обновление Postgres on Production до последней основной версии [закрыто]
Я планирую обновить свой Postgres с версии
10.2
до последней основной версии (
14
)
Я могу сделать это локально, сначала создав дамп из текущего запущенного Postgres:
docker exec -u postgres <pg10-containerid> pg_dumpall > dump.sql
Откройте новый контейнер Postgresql (14). А затем восстановите дамп на новый Postgres:
docker exec -i -u postgres <pg14-containerid> psql -d postgres < olddump.sql
Это работает хорошо, и мои приложения (которые подключены к новому Postgres, также работают хорошо). Но, похоже, я не могу следовать тому же подходу к производству, поскольку мне нужно было бы сделать это, все еще получая данные. У нас есть ограниченное пространство на обоих (первичном и репликационном) серверах, чтобы принять весь дамп.
Поскольку у нас есть сервер репликации, мы планируем:
- Поднять новый Postgres14 на сервер репликации
- Подождите, пока основной сервер синхронизирует все данные с сервером репликации.
- Переключите сервер репликации на первичный сервер
- Обновите теперь новый сервер репликации до Postgres14.
- После повторной репликации снова переключите их.
Мы считаем, что это сведет время простоя к минимуму. Видите ли вы какие-либо недостатки в подходе или можете предложить лучшие подходы?