Ответ 1
Пошаговое руководство
-
Сделайте резервную копию. Убедитесь, что ваша база данных не обновляется.
pg_dumpall > outputfile
-
Установите Postgres 10. Следуйте инструкциям на этой странице: https://www.postgresql.org/download/linux/ubuntu/
Затем запустите
sudo apt-get install postgresql-10
. Более новая версия будет установлена параллельно с более ранней версией. -
Запустите
pg_lsclusters
:Ver Cluster Port Status Owner Data directory Log file 9.6 main 5432 online postgres /var/lib/postgresql/9.6/main /var/log/postgresql/postgresql-9.6-main.log 10 main 5433 online postgres /var/lib/postgresql/10/main /var/log/postgresql/postgresql-10-main.log
Уже есть
main
кластер на 10 (поскольку он создается по умолчанию при установке пакета). Это сделано для того, чтобы новая установка работала из коробки без необходимости сначала создавать кластер, но, конечно, она конфликтует, когда вы пытаетесь обновить9.6/main
когда также существует10/main
. Рекомендуемая процедура - удалить кластер 10 с помощьюpg_dropcluster
а затемpg_upgradecluster
обновление с помощьюpg_upgradecluster
. -
Остановите кластер 10 и отбросьте его:
sudo pg_dropcluster 10 main --stop
-
Остановите все процессы и сервисы записи в базу данных. Остановить базу данных:
sudo systemctl stop postgresql
-
Обновите кластер 9.6:
sudo pg_upgradecluster -m upgrade 9.6 main
-
Запустите PostgreSQL снова
sudo systemctl start postgresql
-
Запустите
pg_lsclusters
. Теперь ваш кластер 9.6 должен быть "выключен", а кластер 10 должен быть подключен к5432
:Ver Cluster Port Status Owner Data directory Log file 9.6 main 5433 down postgres /var/lib/postgresql/9.6/main /var/log/postgresql/postgresql-9.6-main.log 10 main 5432 online postgres /var/lib/postgresql/10/main /var/log/postgresql/postgresql-10-main.log
-
Сначала убедитесь, что все работает нормально. После этого удалите кластер 9.6:
sudo pg_dropcluster 9.6 main --stop
Некоторые заметки о pg_upgradecluster
Это руководство прекрасно работает для обновления с 9,5 до 10,1. При обновлении со старой версии рассмотрите возможность пропустить -m upgrade
на шаге № 6:
sudo pg_upgradecluster 9.6 main
Если у вас действительно большой кластер, вы можете использовать pg_upgradecluster
с pg_upgradecluster
--link
, чтобы обновление было на месте. Однако это опасно - вы можете потерять кластер в случае сбоя. Только не используйте эту опцию, если в этом нет необходимости, поскольку -m upgrade
уже достаточно быстрое.
На основании:
- Документы: Обновление кластера PostgreSQL
- Суть №1: деламеко /upgrade-postgres-9.5-to-9.6.md
- Суть # 2: johanndt/upgrade-postgres-9.3-to-9.5.md
- Что произойдет, если я
pg_upgradecluster
илиpg_upgradecluster
? - Страница руководства по Ubuntu для pg_upgradecluster
Обновить
Это руководство отлично подходит для обновления с 9.6 до 11 и с 10 до 11.