Как обновить postgresql ubuntu
Новые мажорные версии PostgreSQL выходят довольно часто. Разработчики добавляют новый функционал с каждой такой версией. А старые версии уже становятся неподдерживаемыми. В этой заметке я расскажу как перейти на более новую версию сервера PostgreSQL на примере ОС Ubuntu. В частности переходить будем с 14-й на 15-ю версию.
Это изменённая версия моей статьи по переходу с 13-й версии на 14-ю. Ничего не поменялось за исключением цифр 🙂
Итак, пусть на сервере установлена 13-я версия PostgreSQL и нам по каким-либо причинам нужно обновиться до 14-й версии. Делаем это так.
Сначала создаём дамп всех наших баз. Делается это всё из-под пользователя postgres.
sudo su postgres
Теперь обновляем систему, если не сделали это заранее
sudo apt update
и устанавливаем свежий PostgreSQL
sudo apt install postgresql-15 postgresql-server-dev-15
В системе теперь работают два кластера, один старый на 5432 порту, и новый — на порту 5433. Останавливаем их
sudo systemctl stop postgresql.service
Совершаем собственно обновление из-под postgres.
sudo su postgres
/usr/lib/postgresql/15/bin/pg_upgrade \
—old-datadir=/var/lib/postgresql/14/main \
—new-datadir=/var/lib/postgresql/15/main \
—old-bindir=/usr/lib/postgresql/14/bin \
—new-bindir=/usr/lib/postgresql/15/bin \
—old-options ‘-c config_file=/etc/postgresql/14/main/postgresql.conf’ \
—new-options ‘-c config_file=/etc/postgresql/15/main/postgresql.conf’
Правим конфигурационные файлы. Меняем порты. Старая (14-я в нашем случае) будет работать на 5433 порту, а новая (15-я у нас) на 5432 порту.
sudo vim /etc/postgresql/15/main/postgresql.conf
# меняем port на 5432
sudo vim /etc/postgresql/14/main/postgresql.conf
# меняем port на 5433
Если нужно (но если предыдущая версия была правильно настроено, то не нужно), правим файл pg_hba.conf
sudo vim /etc/postgresql/15/main/pg_hba.conf
Запускаем сервер PostgreSQL.
sudo systemctl start postgresql.service
Убеждаемся, что всё работает правильно. Например, заходим в базу в командной строке. Проверяем работоспособность серверов, которые используют PostgreSQL (например, сайты, написанные на Django). Если всё нормально, удаляем старый сервер
sudo apt remove postgresql-14 postgresql-server-dev-14
Удаляем старые конфигурационные файлы.
sudo rm -rf /etc/postgresql/14/
sudo su postgres
sudo systemctl restart postgresql.service
Разработчики рекомендуют выполнить ещё такую команду
/usr/lib/postgresql/15/bin/vacuumdb —all —analyze-in-stages
На этом всё. Теперь в нашей системе PostgreSQL стоит самой последней версии.
Обновление PostgreSQL на CentOS

Опубликовано: 28.09.2022
- Создание резервных копий.
- Установка и запуск PostgreSQL новой версии (она будет работать параллельно со старой).
- Запуск pg_upgrade для проверки возможности обновления.
- Запуск pg_upgrade для выполнения обновления.
- Проверка работоспособности СУБД.
- Настройка новой версии в качестве основного экземпляра сервера баз данных.
Предполагается, что у нас уже установлена одна СУБД, которую мы и будем обновлять.
Прежде чем начать
1. Операция по обновлению PostgreSQL, потенциально, опасна. Поэтому стоит позаботиться о создании резервной копии.
Подробнее процесс описан в инструкции Резервное копирование PostgreSQL.
Также, если мы работает на виртуальной машине, можно создать снапшот.
2. Заранее посмотрим список расширений, которые мы используем в текущем PostgreSQL (это делается из консоли psql):
su — postgres -c «psql»
Мы можем увидеть что-то на подобие:
Name | Version | Schema | Description
—————+———+————+—————————————
btree_gin | 1.3 | public | support for indexing common datatypes
btree_gist | 1.5 | public | support for indexing common datatypes
В данной таблице представлен список установленных расширений postgresql. Вам нужно будет установить те же расширения для новой версии СУБД. Также обратите внимание, что некоторые расширения могут быть установлены для конкретной базы. Нужно по очереди подключиться к каждой базе:
И запросить список расширений:
После окончания работы, выходим из оболочки psql:
Установка и запуск PostgreSQL 13
В нашей инструкции мы планируем обновление до версии 13. Установим нужный нам пакет.
Для этого необходимо установить репозиторий.
Так как в нашей системе уже установлен PostgreSQL, скорее всего, репозиторий уже настроен, но мы все же, рассмотрим его установку.
yum install https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
* в данном примере мы установим репозиторий для CentOS 7 с архитектурой x86_64 (EL-7-x86_64). Полный список вариантов можно посмотреть по на странице репозитория PostgreSQL.
.
Error: Nothing to do
. значит репозиторий уже настроен. Идем дальше.
yum install postgresql13 postgresql13-server postgresql13-contrib
- postgresql13 — клиент.
- postgresql13-server — сервер.
- postgresql13-contrib — набор дополнительных утилит и расширений для postgresql.
Инициализируем базу для нового postgresql:
Откроем конфигурационный файл для postgresql 13:
Как минимум, нам нужно поменять порт, на котором должен запуститься наш сервер:
* порт по умолчанию 5432 и, скорее всего, на нем работает наш сервер версии 11, который мы будем обновлять. Поэтому мы поменяли порт, например, на 5433.
Стоит сравнить настройки для файлов postgresql.conf и pg_hba.conf. Некоторые настройки, которые явно менялись для текущей версии СУБД, стоит перенести в конфигурационные файлы нового postgresql.
Запускаем сервис для установленного PostgreSQL:
systemctl start postgresql-13
Стоит сразу проверить, запустилась ли служба и слушает ли сервис на нужном порту (мы настроили 5433):
systemctl status postgresql-13
ss -tunlp | grep :5433
Подключиться к новой версии СУБД можно командой:
su — postgres -c «PGPORT=5433 psql»
Сбор данных и запуск проверки на возможность обновления
И так, на текущий момент у нас запущены две версии postgresql (в нашем примере 11 и 13). Так как СУБД позволяет системному администратору тонко настроить расположение путей до рабочих данных и конфигов, выполним запросы, которые позволят однозначно определить их локацию.
Для текущей версии:
su — postgres -c «psql»
=# SELECT current_setting(‘data_directory’), current_setting(‘config_file’);
su — postgres -c «PGPORT=5433 psql»
=# SELECT current_setting(‘data_directory’), current_setting(‘config_file’);
Фиксируем полученные ответы. Они нам понадобятся для теста конфигурации.
Останавливаем службу postgresql для новой версии:
systemctl stop postgresql-13
Выполняем тест — в моем случае получилась такая команда:
su — postgres -c » \
/usr/pgsql-13/bin/pg_upgrade \
—old-datadir=/var/lib/pgsql/11/data \
—new-datadir=/var/lib/pgsql/13/data \
—old-bindir=/usr/pgsql-11/bin \
—new-bindir=/usr/pgsql-13/bin \
—old-options ‘-c config_file=/var/lib/pgsql/11/data/postgresql.conf’ \
—new-options ‘-c config_file=/var/lib/pgsql/13/data/postgresql.conf’ \
—check \
«
* еще раз стоит отметить, что пути зависят от версий postgresql и индивидуальных настроек.
Если все хорошо, то мы увидим:
Performing Consistency Checks on Old Live Server
————————————————
Checking cluster versions ok
Checking database user is the install user ok
Checking database connection settings ok
Checking for prepared transactions ok
Checking for system-defined composite types in user tables ok
Checking for reg* data types in user tables ok
Checking for contrib/isn with bigint-passing mismatch ok
Checking for tables WITH OIDS ok
Checking for invalid «sql_identifier» user columns ok
Checking for presence of required libraries ok
Checking database user is the install user ok
Checking for prepared transactions ok
Checking for new cluster tablespace directories ok
*Clusters are compatible*
Мы готовы обновить СУБД.
Обновление PostgreSQL
Остается выполнить само обновление.
Сначала нужно остановить текущий экземпляр СУБД:
systemctl stop postgresql-11
Для обновления используем такую же команду, как при проверке, за исключением опции check:
su — postgres -c » \
/usr/pgsql-13/bin/pg_upgrade \
—old-datadir=/var/lib/pgsql/11/data \
—new-datadir=/var/lib/pgsql/13/data \
—old-bindir=/usr/pgsql-11/bin \
—new-bindir=/usr/pgsql-13/bin \
—old-options ‘-c config_file=/var/lib/pgsql/11/data/postgresql.conf’ \
—new-options ‘-c config_file=/var/lib/pgsql/13/data/postgresql.conf’ \
«
Если размер базы большой, и места на сервере не хватит для создания полной копии, мы можем добавить опцию —link. Она создает символьные ссылки вместо полноценных копий данных.
После ее работы мы должны увидеть:
Upgrade Complete
—————-
Optimizer statistics are not transferred by pg_upgrade so,
once you start the new server, consider running:
./analyze_new_cluster.sh
Running this script will delete the old cluster’s data files:
./delete_old_cluster.sh
В данном тексте предлагается перенести статистику оптимизатора на новый сервер. В двух словах, данная статистика позволяет делать большие запросы быстрее. Также, в сообщении предлагается удалить данные старого сервера.
Стартуем новый сервер:
systemctl start postgresql-13
Переносим статистику командой:
su — postgres -c «PGPORT=5433 /var/lib/pgsql/analyze_new_cluster.sh»
Тест сервера и завершение настройки
Напоследок, проверим, что наш сервер выполняет запросы и настроим ему порт по умолчанию.
Зайдем в командную оболочку нового сервера:
su — postgres -c «PGPORT=5433 psql»
На свое усмотрение, сделаем несколько запросов, чтобы убедиться в базовой работоспособности СУБД. Если запросы прошли, выходим из оболочки:
Открываем конфигурационный файл:
Меняем порт, на котором должен слушать сервер:
* ранее мы использовали порт 5433.
systemctl restart postgresql-13
Проверяем работу приложений, которые используют СУБД.
Если тесты прошли успешно и мы не использовали опцию —link при обновлении, то можно удалить данные старого кластера:
su — postgres -c «/var/lib/pgsql/delete_old_cluster.sh»
Обновление PostgreSQL можно считать, полностью, завершенным.
Возможные проблемы
В данном разделе рассмотрим проблемы, с которыми можно столкнуться при обновлении PostgreSQL.
Checking for presence of required libraries
Появляется при проверке на возможность сделать обновление. Ошибка также сопровождается текстом:
Your installation references loadable libraries that are missing from the
new installation. You can add these libraries to the new installation,
or remove the functions using them from the old installation. A list of
problem libraries is in the file:
loadable_libraries.txt
Причина: в новой версии PostgreSQL нет нужных библиотек для расширений, используемых в старой.
Решение: смотрим содержимое файла loadable_libraries.txt:
В нем перечислены библиотеки, которые нужно доустановить в новой версии. Установка расширений для postgresql, как правило, выполняется с помощью пакетного менеджера, например:
yum install pgtap_13
Однако, некоторые расширения нужно будет собирать, поэтому решение проблемы имеет индивидуальный характер.
Проблема подключения к СУБД после обновления
После завершения работы утилиты pg_upgrade и запуска службы, мы можем подключиться к СУБД от пользователя postgres, но не можем подключиться по сети или из приложения.
Причина: как правило, проблема в конфигурации pg_hba.
Решение: файл pg_hba.conf регламентирует условия подключения к СУБД — с каких узлов, для каких учетных записей, к каким базам и с помощью какого метода аутентификации. Необходимо привести в соответствие наши файлы. Данный файл находится в том же каталоге, что и основной файл конфигурации, в нашем примере это:
Файл для нового postgresql:
Также необходимо обратить внимание на методы шифрования паролей. Например, в 11 версии по умолчанию используется md5, например:
host all all 127.0.0.1/32 md5
В то время, как в 13 версии уже используется scram-sha-256:
host all all 127.0.0.1/32 scram-sha-256
Таким образом, при миграции данных в новую базу были перенесены и пароли с алгоритмом шифрования md5, а при подключении система пытается использовать scram-sha-256. Полученная таким образом последовательность не соответствует записанной, что приводит к ошибкам аутентификации. Для решения проблемы можно поменять scram-sha-256 на md5 в файле pg_hba.conf.
Читайте также
Возможно, это тоже будет интересным:
Как обновить postgresql ubuntu
В этом разделе рассказывается, как обновить ваш кластер базы данных с одной версии PostgreSQL на другую.
Текущие номера версий PostgreSQL состоят из номеров основной и корректирующей (дополнительной) версии. Например, в номере версии 10.1 число 10 обозначает основную версию, а 1 — дополнительную. Для выпусков PostgreSQL до версии 10.0 номера состояли из трёх чисел (например, 9.5.3). Тогда основная версия образовывалась группой их двух чисел (например, 9.5), а дополнительная задавалась третьим числом (например, 3, что означало, что это третий корректирующий выпуск основной версии 9.5).
В корректирующих выпусках никогда не меняется внутренний формат хранения, и они всегда совместимы с предыдущими и последующими выпусками той же основной версии. Например, версия 10.1 совместима с версией 10.0 и версией 10.6. Подобным образом, например, версия 9.5.3 совместима с 9.5.0, 9.5.1 и 9.5.6. Для обновления версии на совместимую достаточно просто заменить исполняемые файлы при выключенном сервере и затем запустить сервер. Каталог данных при этом не затрагивается, так что обновить корректирующую версию довольно просто.
При обновлении основных версий PostgreSQL внутренний формат данных может меняться, что усложняет процедуру обновления. Традиционный способ переноса данных в новую основную версию — выгрузить данные из старой версии, а затем загрузить их в новую (это не самый быстрый вариант). Выполнить обновление быстрее позволяет pg_upgrade . Также для обновления можно использовать репликацию, как описано ниже.
Изменения основной версии обычно приносят какие-либо видимые пользователю несовместимости, которые могут требовать доработки приложений. Все подобные изменения описываются в замечаниях к выпуску (Приложение E); обращайте особое внимание на раздел «Migration» (Миграция). Хотя вы можете перейти с одной основной версии на другую, пропустив промежуточные версии, обязательно ознакомьтесь с замечаниями к каждому выпуску, в том числе для каждой пропускаемой версии.
Осторожные пользователи обычно тестируют свои клиентские приложения с новой версией, прежде чем переходить на неё полностью; поэтому часто имеет смысл установить рядом старую и новую версии. При тестировании обновления основной версии PostgreSQL изучите следующие области возможных изменений:
Администрирование
Средства и функции, предоставляемые администраторам для наблюдения и управления сервером, часто меняются и совершенствуются в каждой новой версии. SQL
В этой области чаще наблюдается появление новых возможностей команд SQL, чем изменение поведения существующих, если только об этом не говорится в замечаниях к выпуску. API библиотек
Обычно библиотеки типа libpq только расширяют свою функциональность, если об обратном так же не говорится в замечаниях к выпуску. Системные каталоги
Изменения в системных каталогах обычно влияют только на средства управления базами данных. API сервера для кода на C
Сюда относятся изменения в API серверных функций, которые написаны на языке программирования C. Такие изменения затрагивают код, обращающийся к служебным функциям глубоко внутри сервера.
18.6.1. Обновление данных с применением pg_dumpall
Один из вариантов обновления заключается в выгрузке данных из одной основной версии PostgreSQL и загрузке их в другую — для этого необходимо использовать средство логического копирования, например pg_dumpall ; копирование на уровне файловой системы не подходит. (В самом сервере есть проверки, которые не дадут использовать каталог данных от несовместимой версии PostgreSQL , так что если попытаться запустить с существующим каталогом данных неправильную версию сервера, никакого вреда не будет.)
Для создания копии рекомендуется применять программы pg_dump и pg_dumpall от новой версии PostgreSQL , чтобы воспользоваться улучшенными функциями, которые могли в них появиться. Текущие версии этих программ способны читать данные любой версии сервера, начиная с 8.0.
В следующих указаниях предполагается, что сервер установлен в каталоге /usr/local/pgsql , а данные находятся в /usr/local/pgsql/data . Вам нужно подставить свои пути.
При запуске резервного копирования убедитесь в том, что в базе данных не производятся изменения. Изменения не повлияют на целостность полученной копии, но изменённые данные, само собой, в неё не попадут. Если потребуется, измените разрешения в файле /usr/local/pgsql/data/pg_hba.conf (или подобном), чтобы подключиться к серверу могли только вы. За дополнительными сведениями об управлении доступом обратитесь к Главе 20.
Чтобы получить копию всех ваших данных, введите:
pg_dumpall > выходной_файл
Для создания резервной копии вы можете воспользоваться программой pg_dumpall от текущей версии сервера; за подробностями обратитесь к Подразделу 25.1.2. Однако для лучшего результата стоит попробовать pg_dumpall из PostgreSQL 11.22, так как в эту версию вошли исправления ошибок и усовершенствования, по сравнению с предыдущими версиями. Хотя этот совет может показаться абсурдным, ведь новая версия ещё не установлена, ему стоит последовать, если вы планируете установить новую версию рядом со старой. В этом случае вы сможете выполнить установку как обычно, а перенести данные позже. Это также сократит время обновления.
Остановите старый сервер:
pg_ctl stop
В системах, где PostgreSQL запускается при загрузке, должен быть скрипт запуска, с которым можно сделать то же самое. Например, в Red Hat Linux может сработать такой вариант:
/etc/rc.d/init.d/postgresql stop
Подробнее запуск и остановка сервера описаны в Главе 18.
При восстановлении из резервной копии удалите или переименуйте старый каталог, где был установлен сервер, если его имя не привязано к версии. Разумнее будет переименовать каталог, а не удалять его, чтобы его можно было восстановить в случае проблем. Однако учтите, что этот каталог может занимать много места на диске. Переименовать каталог можно, например так:
mv /usr/local/pgsql /usr/local/pgsql.old
(Этот каталог нужно переименовывать (перемещать) как единое целое, чтобы относительные пути в нём не изменились.)
Установите новую версию PostgreSQL как описано в Разделе 16.4.
При необходимости создайте новый кластер баз данных. Помните, что следующие команды нужно выполнять под именем специального пользователя БД (вы уже действуете под этим именем, если производите обновление).
/usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data
Перенесите изменения, внесённые в предыдущие версии pg_hba.conf и postgresql.conf .
Запустите сервер баз данных, так же применяя учётную запись специального пользователя БД:
/usr/local/pgsql/bin/postgres -D /usr/local/pgsql/data
Наконец, восстановите данные из резервной копии, выполнив:
/usr/local/pgsql/bin/psql -d postgres -f выходной_файл
Минимизировать время отключения сервера можно, установив новый сервер в другой каталог и запустив параллельно оба сервера, старый и новый, с разными портами. Затем можно будет перенести данные примерно так:
pg_dumpall -p 5432 | psql -d postgres -p 5433
18.6.2. Обновление данных с применением pg_upgrade
Модуль pg_upgrade позволяет обновить инсталляцию PostgreSQL с одной основной версии на другую непосредственно на месте. Такое обновление может выполняться за считанные минуты, особенно в режиме —link . Для него требуются примерно те же подготовительные действия, что и для варианта с pg_dumpall : запустить/остановить сервер, выполнить initdb . Все эти действия описаны в документации pg_upgrade .
18.6.3. Обновление данных с применением репликации
Методы логической репликации также могут применяться для создания резервного сервера с обновлённой версией PostgreSQL . Это возможно благодаря тому, что логическая репликация поддерживается между разными основными версиями PostgreSQL . Резервный сервер может располагаться как на том же компьютере, так и на другом. Как только синхронизация с главным сервером (где работает старая версия PostgreSQL ) будет завершена, можно сделать главным новый сервер, а старый экземпляр базы данных просто отключить. При таком переключении обновление возможно осуществить, прервав работу сервера всего на несколько секунд.
Этот вариант обновления можно осуществить, используя как встроенные средства логической репликации, так и внешние системы логической репликации, такие как pglogical , Slony , Londiste и Bucardo .
| Пред. | Наверх | След. |
| 18.5. Выключение сервера | Начало | 18.7. Защита от подмены сервера |
HOWTO: Обновление версии PostgreSQL
В данном разделе описана процедура обновления сервера PostgreSQL на новую основную версию (например, с 9.х на 11.х). Вы также можете обновиться на максимально доступную версию на момент выполнения обновления — все они обратно совместимы.
Мы рекомендуем выполнять процедуру обновления сервера квалифицированным сотрудником используя официальную инструкцию: https://postgrespro.ru/docs/postgresql/11/upgrading.
Обновление в пределах основной версии (например, с 11.1 на 11.3) осуществляется без каких либо дополнительных действий.
Существует несколько способов обновления. Здесь будет рассмотрен способ с полным дампом перед восстановлением и затем восстановлением из дампа после обновления. Также процедура будет описана для ОС Debian и ее производных (Ubuntu и т.д.). Для других дистрибутивов и ОС процедура практически точно такая же, но используются другие утилиты, специфичные для конкретного дистрибутива или ОС.
Предполагается, что установка PostgreSql осуществлялась по этой инструкции и в систему добавлены репозитории PostgreSql, предоставляющие доступ к различным версиям PostgreSql и расширениям, а также установка производилась по этой инструкции и был установлен пакет postgresql-9.6, а не метапакет postgresql. Если у вас установлен метапакет, то обновление должно произойти автоматически при обновлении метапакета, но не факт, что оно пройдет корректно. Мы рекомендуем использовать конкретные пакеты (с указанием версии) вместо метапакетов.
Если в процессе обновления не удается успешно выполнить какую-то команду, пожалуйста, не продолжайте выполнять остальные пункты, пока не решите проблему. К сожалению, мы не являемся специалистами по всем проблемам PostgreSql, а также остальных служб, поэтому не всегда сможем дать квалифицированный ответ.
1. Остановите работу всех систем, использующих базу данных. Остановите работу php-fpm или apache2, а также временно отключите задачи в cron и остановите работающие модули usm_*.
2. Проверьте, какие версии PostgreSql и PostGis у вас установлены на данный момент:
sudo -u postgres psql -d userside -A -c "SELECT VERSION()" sudo -u postgres psql -d userside -A -c "SELECT PostGIS_full_version()"
3. Обновите текущие версии, а также, если у вас установлен PostGis 2.4, установите PostGis 2.5 и обновите это расширение в базе данных, затем убедитесь, что расширение в базе данных обновлено:
sudo apt-get update sudo apt-get --only-upgrade install postgresql-9.6 postgresql-9.6-postgis-2.4 -y sudo apt-get install postgresql-9.6-postgis-2.5 -y sudo -u postgres psql -d userside -A -c "ALTER EXTENSION postgis UPDATE" sudo -u postgres psql -d postgres -A -c "ALTER EXTENSION postgis UPDATE" sudo -u postgres psql -d userside -A -c "SELECT PostGIS_full_version()" sudo -u postgres psql -d postgres -A -c "SELECT PostGIS_full_version()"
4. Установите новую версию PostgreSql и PostGis не удаляя старой(!).
sudo apt-get install postgresql-11 postgresql-11-postgis-2.5 -y
5. Выполните запасное резервное копирование всех баз данных сервера (в данном случае будет использоваться последняя версия утилиты pg_dumpall, но база данных будет использоваться все еще прежняя):
sudo -u postgres pg_dumpall > /tmp/dump_9.6_before_update.dump
6. Посмотрите, как выглядят ваши кластеры. Сейчас вы должны видеть две версии, обе в состоянии онлайн:
pg_lsclusters
Вы должны увидеть таблицу:
Ver Cluster Port Status Owner Data directory 9.6 main 5432 online postgres /var/lib/postgresql/9.6/main 11 main 5433 online postgres /var/lib/postgresql/11/main
7. При установке PostgreSql, установщик автоматически создает кластер с конфигурацией и базами данных, чтобы можно было начинать работу с базой данных сразу же. В случае обновления это лишняя операция и кластер для 11 версии нужно удалить. Мы будем его создавать на основе кластера версии 9.6:
sudo pg_dropcluster 11 main --stop
8. Остановите работу службы:
sudo systemctl stop postgresql
9. Сделайте запасное резервное копирование текущих каталогов с файлами базы данных и файлами конфигураций. Будьте осторожны, файлы базы данных могут занимать очень много места, поэтому, возможно, будет лучше выбрать другое место для их размещения. Позже, если обновление пройдет успешно, эти каталоги нужно будет удалить:
sudo cp -r /var/lib/postgresql/9.6/main/ /tmp/pg9.6-lib sudo cp -r /etc/postgresql/9.6/main/ /tmp/pg9.6-etc
10. Запустите процедуру создания нового кластера на основе старого (обновление версии кластера):
sudo pg_upgradecluster -m upgrade 9.6 main
11. Запустите службу:
sudo systemctl start postgresql
12. Посмотрите, как выглядят ваши кластеры:
pg_lsclusters
Теперь вы должны увидеть вот такую таблицу, в которой версия 9.6 находится в состоянии down:
Ver Cluster Port Status Owner Data directory 9.6 main 5433 down postgres /var/lib/postgresql/9.6/main 11 main 5432 online postgres /var/lib/postgresql/11/main
13. Проверьте версии:
sudo -u postgres psql -d userside -A -c "SELECT VERSION()" sudo -u postgres psql -d userside -A -c "SELECT PostGIS_full_version()"
14. Запустите все службы, которые вы остановили в п.1 и проверьте работу USERSIDE и модулей. Убедитесь, что всё работает корректно.
15. После того, как вы убедились, что всё работает корректно, можно удалить временные резервные копии, а также старые пакеты:
sudo pg_dropcluster 9.6 main --stop sudo apt-get purge postgresql-9.6 postgresql-9.6-postgis-2.4 postgresql-9.6-postgis-2.5 -y sudo apt autoremove -y sudo rm -rf /tmp/pg9.6-* /tmp/dump_9.6_before_update.dump
Обновление PostgreSQL завершено.