Моя база данных составляет более 600 ГБ, и мой текущий том составляет всего 1 ТБ, поэтому, вероятно, ограничивает мои параметры.
Мои конфигурационные файлы:
/etc/postgresql/9.6/main
Моя база данных находится здесь:
/mnt/1TB/postgresql/9.6/main
Изменить - Это руководство работало для меня. Единственное дополнение, которое мне нужно было сделать, это загрузить libicu55 вручную и установить его, и я должен был предоставить разрешение postgres 1777 для моей/tmp/папки. Я также сохранил папку данных на другом диске, поэтому мне пришлось использовать команду:
pg_upgradecluster -m upgrade 10 main /mnt/1TB/postgresql/10
https://gist.github.com/delameko/bd3aa2a54a15c50c723f0eef8f583a44
Сделайте резервную копию. Убедитесь, что ваша база данных не обновляется.
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
уже достаточно быстрое.
На основании:
pg_upgradecluster
или pg_upgradecluster
?Это руководство отлично подходит для обновления с 9.6 до 11 и с 10 до 11.
Почти вышло из коробки. Я на 17.10 хитрый. Хотя вы можете поместить это в файл .deb, это не сработает - Postgres обновляет только выпуски LTS, если они нарушают выпуск LTS. Поэтому поставьте Zesty в этот деб, и вы хорошо пойдете.