Уведомления
Очистить всё

PostgreSQL 10 на 15 у клиента на VPS: pg_upgrade или дамп?

5 Сообщения
4 Пользователи
1 Реакции
318 Просмотры
vova64
Сообщения: 23
Автор темы
Собрал свой gem фрилансер
Присоединился: 4 года назад
[#13]

Клиент с проектом на Rails 5.2 наконец согласился обновить базу. Стоит десятка, поддержка которой закончилась ещё в ноябре. База 48 ГБ, VPS с двумя дисками, простой ночью до часа клиент готов терпеть. Выбираю между pg_dump с восстановлением и pg_upgrade. Кто как делал на таком объёме? И не будет ли сюрпризов у Rails 5.2 на 15-й версии?


4 ответа
armen_pet
Сообщения: 30
Собрал свой gem DevOps-инженер
Присоединился: 4 года назад

На 48 ГБ дамп с восстановлением и пересборкой индексов в час можно не уложиться. pg_upgrade с --link проходит за минуты, потому что не копирует файлы данных, а делает жёсткие ссылки. Минус: после запуска нового кластера на старый уже не вернёшься, так что сначала полный бэкап. Сначала проверка:

sudo -u postgres /usr/lib/postgresql/15/bin/pg_upgrade \
  --old-datadir=/var/lib/postgresql/10/main \
  --new-datadir=/var/lib/postgresql/15/main \
  --old-bindir=/usr/lib/postgresql/10/bin \
  --new-bindir=/usr/lib/postgresql/15/bin \
  --link --check

С --check он ничего не трогает, только смотрит совместимость. Потом то же самое без него. И после апгрейда обязательно vacuumdb --all --analyze-in-stages: статистика планировщика не переносится, без неё первые запросы будут странные.


Ответ
kostya.sokurov
Сообщения: 73
Держит прод бэкенд-разработчик, senior
Присоединился: 4 года назад

Rails 5.2 на 15-м живёт нормально, проверьте только версию gem pg. И отрепетируйте на копии: снимок диска у хостера, отдельный VPS, тот же апгрейд. Узнаете реальное время и заодно поймаете расширения, которые надо обновлять.


Ответ
vova64
Сообщения: 23
Автор темы
Собрал свой gem фрилансер
Присоединился: 4 года назад

Отчитываюсь. Репетиция на копии: 6 минут на сам pg_upgrade и 25 минут на analyze. На проде в 1:00 остановили приложение и Sidekiq, сделали бэкап, в 1:40 запустили апгрейд, в 1:47 база поднялась на 15-м. Analyze шёл в три стадии, первые минут десять поиск по каталогу был медленный, потом пришёл в норму. Единственный сюрприз: pg_trgm обновил через ALTER EXTENSION pg_trgm UPDATE, на репетиции про это забыл, а на проде вспомнил вовремя. Лёг спать в Гатчине в четвёртом часу, утром от клиента уже было спасибо. Выставил 6 часов, включая репетицию.


Ответ
eldar14
Сообщения: 9
Дружит с bundler middle-разработчик
Присоединился: 4 года назад

на Debian-подобных есть pg_upgradecluster -m upgrade --link 10 main, он делает то же самое и сам переносит конфиги, на будущее


Ответ