Актуализиране на PostgreSQL 12 до версия 14 на Ubuntu 20.04
25 Jun 2025, 17:19:59
Ще разгледаме процеса на актуализиране на СУБД PostgreSQL 12, която в Ubuntu 20.04 се доставя в официалния репозиторий, до PostgreSQL 14 по прост и удобен начин, със запазване на всички бази данни. PostgreSQL 14 е по-безопасна и производителна версия, която поддържа паралелни вложени цикли (nested loop joins) и multirange типове. Получила редица съществени оптимизации и подобрения: по-ефективен паралелен избор на данни, подобрено планиране на паралелни заявки, оптимизирано сортиране, повишена производителност на ARRAY, JSON, агрегатни функции и много други.Подготовка за обновяване
Всички команди, посочени в статията, се изпълняват на сървъра под потребител root.Убедим се, че PostgreSQL 12 е стартиран и работи с помощта на командата:
pg_lsclusters
Командата ще покаже списък с кластери (сървъри) PostgreSQL, инсталирани на вашето устройство.Нормално е да имате само един, както в примера:

Виждаме версията (12) и името на кластера, порта, както и неговия статус - online.
Това означава, че можем да пристъпим към създаването на пълен дамп на данните на СУБД.
Създаване на пълен дамп на PostgreSQL
За да създадете пълен дамп на базите данни, потребителите, правата и схемите на текущата СУБД PostgreSQL, трябва да използвате утилитната програма pg_dumpall от името на потребителя postgres от домашната директория на потребителя:cd /var/lib/postgresql
sudo -u postgres pg_dumpall > all_databases.sql
Създаването на пълен дамп може да отнеме известно време, в зависимост от обема на вашите бази данни. В резултат ще получите файл all_databases.sql, който ще ви предпази в случай на проблеми.
Можете да възстановите този дамп с помощта на командата, намираща се в същата директория:
sudo -u postgres psql -f all_databases.sql
- -u postgres - потребител, от чието име се изпълнява командата;
- -f all_databases.sql - пътят до файла с дампа (в примера файлът all_databases.sql се намира в директорията, от която се стартира командата).
Инсталиране на PostgreSQL 14
По подразбиране в Ubuntu 20.04 няма репозиторий PostgreSQL. Да го добавим.За начало ще инсталираме необходимия софтуер:
apt install -y wget gnupg2 lsb-release
Добавяме самия репозиторий PostgreSQL:echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" | tee /etc/apt/sources.list.d/pgdg.list
Добавяме GPG ключ на репозитория:wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | apt-key add -
Получаем успешен отговор:
Пристъпваме към актуализиране на списъка с пакети и самата инсталация на PostgreSQL 14:
apt update
apt install postgresql-14 postgresql-server-dev-14
След инсталирането можем да проверим списъка с кластери в нашата система и да не видим промени там, но това е нормално.Актуализация PostgreSQL 12 до PostgreSQL 14
Ще използваме утилитa pg_upgradecluster, която напълно автоматизира процеса на актуализация на PostgreSQL. Тази утилитa копира данните от старата версия на PostgreSQL, актуализира конфигурациите, стартира нов клъстер PostgreSQL 14 на порта на стария, като при това спира стария. В резултат на нейната работа трябва да получите нова версия на СУБД, която напълно ще замести старата, без никакви загуби.Спрете работата на PostgreSQL:
systemctl stop postgresql
Стартирайте утилита за автоматично обновяване:pg_upgradecluster 12 main
Получаем дълъг извод, информиращ за работата на утилитката и в края информация за успешното стартиране на нов кластер PostgreSQL 14:
Но това не винаги е така. Много често в Ubuntu може да получите грешка perl: warning: Setting locale failed. Дори ако локализациите вече са настроени:

Това се случва поради променливата LC_CTYPE. Посочваме й правилната стойност и стартираме pg_upgradecluster отново:
export LC_CTYPE="en_US.UTF-8
Процесът на актуализация стартира успешно:
Проверяваме списъка с PostgreSQL кластери в нашата система:
pg_lsclusters
И виждаме, че старият клъстер версия 12 има статус down и нов порт, а на негово място работи нов, версия 14:
Можете да проверите текущата версия на PostgreSQL с командата:
sudo -u postgres psql -c "SELECT version();"
Получаваме пълна информация за версията на СУБД:
След като се убедихме в работоспособността на новата версия на PostgreSQL, можем да изтрием кластъра на версия 12, както ни подсказа pg_upgradecluster по-рано, ако е необходимо:
pg_dropcluster 12 main
В резултат на сървъра остава актуалната версия на PostgreSQL 14 с всички бази данни и потребители:
Актуализирането на PostgreSQL 12 до версия 14 в Ubuntu 20.04 е лесна задача благодарение на инструмента за автоматично актуализиране pg_upgradecluster. Следвайки това ръководство, само с няколко команди ще можете да актуализирате СУБД самостоятелно. Ако имате затруднения с актуализирането на PostgreSQL на нашите VPS и специализирани сървъри, винаги можете да се обърнете към нас за техническа поддръжка в онлайн чата или чрез системата за тикети.