﻿# Обновление standalone PostgreSQL 12 и ниже до версии 18

> [HTML Version](upgrading-postgresql-standalone-10-to-15.html)

При обновлении PostgreSQL до основной версии используется утилита \[OBJECT\]. Она позволяет обновлять данные, хранящиеся в файлах данных PostgreSQL, до более поздней версии PostgreSQL.

Обновление standalone PostgreSQL состоит из нескольких этапов:

1. [Резервное копирование базы данных.](#database-backup)

2. [Установка PostgreSQL 18.](#install-postgresql15)

3. [Обновление данных в каталоге базы данных](#updating-data).

4. [Обновление конфигурации.](#updating-configuration)

5. [Проверка после установки.](#check-after-installing)

## Шаг 1. Резервное копирование базы данных

Перед выполнением любых действий, связанных с обновлением, создайте резервную копию данных и конфигурации PostgreSQL. О том, как это сделать, читайте в статье [«Резервное копирование и восстановление баз данных»](database-backup-and-recovery.md).

````
начало внимание

````
Если на сервере PostgreSQL имеются сторонние базы данных, их резервные копии также необходимо создать.

````
конец внимание

````
Резервное копирование базы данных PostgreSQL без использования утилиты elma365-backupper

Вы можете создать резервную копию базы данных \[OBJECT\] с помощью утилиты \[OBJECT\]:



````
sudo -u postgres pg\_dump elma365 -Fc > path/to/elma365.bak 
````

## ````
Шаг 2. Установка PostgreSQL 18

С помощью пакетного менеджера вашей операционной системы установите PostgreSQL 18 на сервер, в котором установлена версия 12 или ниже:

````
sudo apt install postgresql-18

## ````
Шаг 3. Обновление данных в каталоге базы данных

1. Остановите PostgreSQL, чтобы его данные оставались недоступными во время обновления. В примере версия 12 обновляется на 18:

````
sudo systemctl stop postgresql@12 postgresql@18

2. ````
Убедитесь, что кластеры PostgreSQL 12 или ниже и PostgreSQL 18 остановлены:

````
pg\_lsclusters

3. ````
На сервере выполните проверку на предмет совместимости конфигураций баз данных:

````
sudo -iu postgres /usr/lib/postgresql/18/bin/pg\_upgrade \\  
\-o "-c config\_file=/etc/postgresql/12/main/postgresql.conf" \\  
\-O "-c config\_file=/etc/postgresql/18/main/postgresql.conf" \\  
\--old-datadir=/var/lib/postgresql/12/main/ \\  
\--new-datadir=/var/lib/postgresql/18/main/ \\  
\--old-bindir=/usr/lib/postgresql/12/bin \\  
\--new-bindir=/usr/lib/postgresql/18/bin --check

````
где:

- \[OBJECT\] и \[OBJECT\] — пути к бинарным файлам PostgreSQL версий 12 и 18;

- \[OBJECT\] и \[OBJECT\] — пути к каталогам данных.

4. На сервере выполните перенос данных из PostgreSQL 12 или ниже в PostgreSQL 18:

````
sudo -iu postgres /usr/lib/postgresql/18/bin/pg\_upgrade \\  
\-o "-c config\_file=/etc/postgresql/12/main/postgresql.conf" \\  
\-O "-c config\_file=/etc/postgresql/18/main/postgresql.conf" \\  
\--old-datadir=/var/lib/postgresql/12/main/ \\  
\--new-datadir=/var/lib/postgresql/18/main/ \\  
\--old-bindir=/usr/lib/postgresql/12/bin \\  
\--new-bindir=/usr/lib/postgresql/18/bin

````
где:

- \[OBJECT\] и \[OBJECT\] — пути к бинарным файлам PostgreSQL версий 12 и 18;

- \[OBJECT\] и \[OBJECT\] — пути к каталогам данных.

## Шаг 4. Обновление конфигурации

1. Обновите настройки конфигурации PostgreSQL 18 в соответствии с используемой конфигурацией PostgreSQL 12 или ниже:

````
sudo nano /etc/postgresql/18/main/postgresql.conf  
sudo nano /etc/postgresql/18/main/pg\_hba.con

2. ````
Запустите PostgreSQL 18:

````
sudo systemctl start postgresql@18

## ````
Шаг 5. Проверка после установки

1. Проверьте состояние базы данных PostgreSQL:

````
sudo systemctl status postgresql

2. ````
Убедитесь, что PostgreSQL-сервер готов принимать подключения от клиентов:

````
sudo pg\_isready
````