Обновяване на предпочитанията за бисквитки

Актуализиране на 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, инсталирани на вашето устройство.
Нормално е да имате само един, както в примера:
20250625_kKWMd0PM
Виждаме версията (12) и името на кластера, порта, както и неговия статус - online.
Това означава, че можем да пристъпим към създаването на пълен дамп на данните на СУБД.

Създаване на пълен дамп на PostgreSQL

За да създадете пълен дамп на базите данни, потребителите, правата и схемите на текущата СУБД PostgreSQL, трябва да използвате утилитната програма pg_dumpall от името на потребителя postgres от домашната директория на потребителя:
cd /var/lib/postgresql
sudo -u postgres pg_dumpall > all_databases.sql
Създаването на пълен дамп може да отнеме известно време, в зависимост от обема на вашите бази данни. В резултат ще получите файл all_databases.sql, който ще ви предпази в случай на проблеми.
20250625_glsOk0XT
Можете да възстановите този дамп с помощта на командата, намираща се в същата директория:
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 -Получаем успешен отговор:
20250625_vCdfus94
Пристъпваме към актуализиране на списъка с пакети и самата инсталация на 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:
20250625_jTjNWVib
Но това не винаги е така. Много често в Ubuntu може да получите грешка perl: warning: Setting locale failed. Дори ако локализациите вече са настроени:
20250625_21MAj9oj
Това се случва поради променливата LC_CTYPE. Посочваме й правилната стойност и стартираме pg_upgradecluster отново:
export LC_CTYPE="en_US.UTF-8Процесът на актуализация стартира успешно:
20250625_ufwgeRew
Проверяваме списъка с PostgreSQL кластери в нашата система:
pg_lsclustersИ виждаме, че старият клъстер версия 12 има статус down и нов порт, а на негово място работи нов, версия 14:
20250625_0aZXhkoH
Можете да проверите текущата версия на PostgreSQL с командата:
sudo -u postgres psql -c "SELECT version();"Получаваме пълна информация за версията на СУБД:
20250625_mMctQuUN
След като се убедихме в работоспособността на новата версия на PostgreSQL, можем да изтрием кластъра на версия 12, както ни подсказа pg_upgradecluster по-рано, ако е необходимо:
pg_dropcluster 12 mainВ резултат на сървъра остава актуалната версия на PostgreSQL 14 с всички бази данни и потребители:
20250625_luEOs48r
Актуализирането на PostgreSQL 12 до версия 14 в Ubuntu 20.04 е лесна задача благодарение на инструмента за автоматично актуализиране pg_upgradecluster. Следвайки това ръководство, само с няколко команди ще можете да актуализирате СУБД самостоятелно. Ако имате затруднения с актуализирането на PostgreSQL на нашите VPS и специализирани сървъри, винаги можете да се обърнете към нас за техническа поддръжка в онлайн чата или чрез системата за тикети.