Назад | Перейти на главную страницу

Автоматизировать обновление PostgreSQL

Наш ручной рецепт для обновления версии PostgreSQL (пример с 9.6 до 10.1) на данный момент выглядит так:

  1. остановить БД (через systemctl)
  2. запустить БД на другом порту
  3. pg_dumpall, используя другой порт
  4. mv старый каталог данных в другое место
  5. установить новый RPM, удалить старый RPM
  6. запустить БД на другом порту
  7. pg_restore БД
  8. остановить БД, работающую на другом порту, запустить БД на порту по умолчанию.

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

Может, эта процедура слишком сложная, не знаю.

До сих пор мы делали это вручную, но было бы неплохо автоматизировать.

Мы используем Salt для управления конфигурацией. Но это инструмент, основанный на состоянии. Приведенный выше рецепт больше похож на процедурную вещь.

Как это автоматизировать с помощью Salt?

Если есть решение получше (без соли) ... приятно. Пожалуйста, скажите мне.

согласно веб-сайту PostgreSQL, теперь существует утилита под названием pg_upgrade, разработанная специально для помощи во время обновлений.

Вы можете найти больше информации там. Они включают подробный пример использования.

С уважением.

Выглядит хорошо. И да, это простой процедурный последовательный подход, не требующий объектно-ориентированного подхода.

Поместите все свои ручные команды в сценарий оболочки.

#/bin/sh

Должна быть первая строка. Обязательно используйте полный путь для всех команд.

Используйте параметры для неинтерактивного режима, если для команды по умолчанию задан интерактивный.