Управление множеством кластеров и версий PostgreSQL на Ubuntu 24.04

В предыдущих статьях мы рассмотрели как устанавливать и базово настраивать две версии PostgreSQL (17-ю версию и 18-ю версию).

В данной статье мы углубимся в дебри настройки PostgreSQL и рассмотрим такие темы:

  1. Установка нескольких версий PostgreSQL на одном сервере
  2. Запуск нескольких кластеров PostgreSQL (одной версии)
  3. Управление кластерами (изменение настроек, переименование, удаление)

Итак, поехали…

Исходные данные: Ubuntu 24.04 (noble)
Задача 1: Установить и запустить несколько версий PostgreSQL на одном сервере (будем устанавливать 17-ю и 18-ю версии).
Задача 2: Создать и запустить несколько кластеров (с разными именами) на одном сервере и одной версии PostgreSQL (будем запускать 2 кластера 18-ой версии).
Задача 3: Изменить некоторые настройки одного из кластеров, переименовать этот кластер и в конце удалить его не задев другие кластера.

Для полного понимания всех манипуляций Вы должны владеть базовыми знаниями по установке PostgreSQL (статья про 18-ю версию), а так же владеть знаниями по расширенной настройке создания кластеров PostgreSQL (описано в статье по 17-ой версии)

В исходном состоянии у нас есть сервер с базовой Ubuntu 24.04 (noble), никаких версий PostgreSQL на нем не установлено.

Задача 1: Установить и запустить несколько версий PostgreSQL на одном сервере (будем устанавливать 17-ю и 18-ю версии).

1. Устанавливаем пакет postgresql-common из репозитория дистрибутива ОС:

apt-get update
apt-get install -y postgresql-common

2. Устанавливаем репозиторий apt.postgresql.org

Для автоматической установки и настройки репозиторий apt.postgresql.org нам нужно запустить готовый скрипт из пакета postgresql-common

/usr/share/postgresql-common/pgdg/apt.postgresql.org.sh

На наш запуск он задаст нам вопрос, действительно ли мы хотим установить APT репозиторий apt.postgresql.org в нашу систему. Жмем Enter и все будет установлено.

3. Установка PostgreSQL 17 и 18:

И тут нам нужно обсудить некоторые особенности создания кластеров.

Во первых все созданные кластера запускаются со стандартными настройками, нас интересует пока только порт для входящих соединений, по умолчанию он 5432. Если данный порт уже занят, то есть на нем уже принимает соединения какой-то кластер, то новый кластер с этим же портом мы просто не сможем запустить. Конечно ситуации бывают разные, в нашем случае мы будем устанавливать пакеты сразу для 2-х версий PostgreSQL и в этом случае будет создан кластер только для самой новой версии. Для более старой версии кластер не будет создан автоматически.

Давайте вначале определимся на каких портах мы будем запускать разные версии PostgreSQL чтобы не запутаться в дальнейшем.

5432 — стандартный порт, давайте вообще не будем его использовать.

Возьмем для 17-й версии порты из диапазона 5442 — 5449

Возьмем для 18-й версии порты из диапазона 5452 — 5459

Первый кластер 18-й версии будет работать на порту 5452

При установке пакета postgresql-18 будет создан и сразу запущен кластер 18-й версии на стандартном порту, но нам этого не хочется. Давайте не будем запускать кластер сразу после установки. Пусть он создастся, но не запускается.

Чтобы отключить автозапуск вновь созданных кластеров создадим файл /etc/postgresql-common/createcluster.d/start.conf в котором поменяем параметр start_conf с auto на manual

mkdir /etc/postgresql-common/createcluster.d
echo "start_conf = 'manual'" > /etc/postgresql-common/createcluster.d/start.conf

Теперь новые кластера не будут автоматически запускаться после создания (а так же после загрузки ОС, этот момент очень важен и про него не стоит забывать) и у нас будет возможность скорректировать порт для входящих соединений.

Теперь можно установить 2 пакета: postgresql-17 и postgresql-18

apt-get install -y postgresql-17 postgresql-18

В процессе установки у нас будет создан кластер 18-й версии, но он не будет запущен сразу.
Кластер 17-й версии не будет создан вообще. Это довольно удобно, хотя и накладывает на нас дополнительные телодвижения.

Давайте проверим мои слова и посмотрим созданные кластера:

pg_lsclusters -s

Вывод:

Ver Cluster Port Status      Owner    Data directory              Log file
18  main    5432 down,manual postgres /var/lib/postgresql/18/main /var/log/postgresql/postgresql-18-main.log

Все верно, кластер 18-й версии создан, но не запущен как мы и сказали (создав файл /etc/postgresql-common/createcluster.d/start.conf), кластера 17-й версии нет.

Для начала посмотрим настройки текущего (и единственного пока) кластера (нас интересует настройка port):

pg_conftool 18 main postgresql.conf show port

Вывод:

port = 5432

Видим, что port = 5432, а нам нужно поменять ее на 5452 (распределение портов мы описали выше).

Выполняем:

pg_conftool 18 main postgresql.conf set port 5452

Проверяем смену порта:

pg_conftool 18 main postgresql.conf show port

Вывод:

port = 5452

Мы видим, что порт поменялся.

Сразу хочу пояснить почему я использую утилиту pg_conftool, а не лезу в редактирование настроек кластера руками — потому, что это наиболее правильный вариант для новичков. Если Вы уже профи и знаете где находятся файлы конфигурации кластера, какая у них иерархия и как правильно их менять, то Вы можете редактировать их руками.

На самом деле утилита pg_conftool поменяла настройку port в файле /etc/postgresql/18/main/postgresql.conf и тут нет никакой магии. Но согласитесь так проще менять настройки, чем лазить в файл конфигурации?

Теперь кода мы поменяли порт мы можем запустить кластер 18-й версии.

Запускаем:

pg_ctlcluster 18 main start

Проверяем работу кластера разными утилитами:

# pg_lsclusters -s

Ver Cluster Port Status        Owner    Data directory              Log file
18  main    5452 online,manual postgres /var/lib/postgresql/18/main /var/log/postgresql/postgresql-18-main.log

# pg_ctlcluster 18 main status

pg_ctl: server is running (PID: 101461)
/usr/lib/postgresql/18/bin/postgres "-D" "/var/lib/postgresql/18/main" "-c" "config_file=/etc/postgresql/18/main/postgresql.conf"

# systemctl status [email protected][email protected] - PostgreSQL Cluster 18-main
     Loaded: loaded (/usr/lib/systemd/system/[email protected]; disabled; preset: enabled)
     Active: active (running) since Tue 2025-10-07 09:51:56 MSK; 2min 17s ago
    Process: 101456 ExecStart=/usr/bin/pg_ctlcluster --skip-systemctl-redirect 18-main start (code=exited, status=0/SUCCESS)
   Main PID: 101461 (postgres)
      Tasks: 9 (limit: 2197)
     Memory: 25.1M (peak: 32.6M)
        CPU: 245ms
     CGroup: /system.slice/system-postgresql.slice/[email protected]
             ├─101461 /usr/lib/postgresql/18/bin/postgres -D /var/lib/postgresql/18/main -c config_file=/etc/postgresql/18/main/postgresql.conf
             ├─101462 "postgres: 18/main: io worker 0"
             ├─101463 "postgres: 18/main: io worker 1"
             ├─101464 "postgres: 18/main: io worker 2"
             ├─101465 "postgres: 18/main: checkpointer "
             ├─101466 "postgres: 18/main: background writer "
             ├─101468 "postgres: 18/main: walwriter "
             ├─101469 "postgres: 18/main: autovacuum launcher "
             └─101470 "postgres: 18/main: logical replication launcher "

# ps -ef | grep [p]ostgres

postgres  101461       1  0 09:51 ?        00:00:00 /usr/lib/postgresql/18/bin/postgres -D /var/lib/postgresql/18/main -c config_file=/etc/postgresql/18/main/postgresql.conf
postgres  101462  101461  0 09:51 ?        00:00:00 postgres: 18/main: io worker 0
postgres  101463  101461  0 09:51 ?        00:00:00 postgres: 18/main: io worker 1
postgres  101464  101461  0 09:51 ?        00:00:00 postgres: 18/main: io worker 2
postgres  101465  101461  0 09:51 ?        00:00:00 postgres: 18/main: checkpointer 
postgres  101466  101461  0 09:51 ?        00:00:00 postgres: 18/main: background writer 
postgres  101468  101461  0 09:51 ?        00:00:00 postgres: 18/main: walwriter 
postgres  101469  101461  0 09:51 ?        00:00:00 postgres: 18/main: autovacuum launcher 
postgres  101470  101461  0 09:51 ?        00:00:00 postgres: 18/main: logical replication launcher

# netstat -ltupn | grep [p]ostgres

tcp        0      0 127.0.0.1:5452          0.0.0.0:*               LISTEN      101461/postgres     
tcp6       0      0 ::1:5452                :::*                    LISTEN      101461/postgres

# su - postgres -c 'psql -p 5452 -c "SELECT version();"'
                                                              version                                                              
-----------------------------------------------------------------------------------------------------------------------------------
 PostgreSQL 18.0 (Ubuntu 18.0-1.pgdg24.04+3) on x86_64-pc-linux-gnu, compiled by gcc (Ubuntu 13.3.0-6ubuntu2~24.04) 13.3.0, 64-bit
(1 row)

Как Вы видите — кластер 18-й версии с именем main (а это имя первого кластера по умолчанию) работает и принимает соединения на порту 5452 (это видно в выводе netstat и успешном подключении через psql).

Сразу хочу обратить внимание, что наш кластер запускается в ручном режиме, это видно в выводе утилиты pg_lsclusters (столбец Status выводит online,manual).

Давайте поменяем на автоматический запуск кластера, ведь при перезагрузке сервера нам хотелось бы чтобы кластер запускался сразу сам.

К сожалению утилиты которая бы меняла вариант запуска кластера нет, нужно менять руками в файл конфигурации.

Для кластера 18-й версии с именем main это будет файл /etc/postgresql/18/main/start.conf

Заменим в этом файле строку начинающуюся со слова manual на auto (используем для этого sed):

sed -i 's/^manual/auto/g' /etc/postgresql/18/main/start.conf

Теперь пришло время создать кластер 17-й версии, для этого воспользуемся утилитой pg_createcluster.

У утилиты pg_createcluster есть масса опций для управления процессом создания кластера, мы используем некоторые ее настройки для кастомизации создаваемого кластера.

Общий синтаксис утилиты такой:

pg_createcluster [options] <version> <cluster name> [-- <initdb options>]

Создадим новый кластер со следующими параметрами:
версия postgres: 17
имя кластера: main
порт: 5442
автоматическим стартом при загрузке ОС: да (по умолчанию да, но создав выше файл /etc/postgresql-common/createcluster.d/start.conf с типом запуска manual мы поменяли эту настройку на нет по умолчанию)
автоматически запустить кластер после создания: да (по умолчанию нет)
дополнительные параметры initdb: включим в кластере ведение и проверку контрольных сумм, тк для 17-й версии по умолчанию это отключено

pg_createcluster -p 5442 --start-conf=auto --start 17 main -- --data-checksums

Вывод работы будет таким:

Creating new PostgreSQL cluster 17/main ...
/usr/lib/postgresql/17/bin/initdb -D /var/lib/postgresql/17/main --auth-local peer --auth-host scram-sha-256 --no-instructions --data-checksums
The files belonging to this database system will be owned by user "postgres".
This user must also own the server process.

The database cluster will be initialized with locale "en_US.UTF-8".
The default database encoding has accordingly been set to "UTF8".
The default text search configuration will be set to "english".

Data page checksums are enabled.

fixing permissions on existing directory /var/lib/postgresql/17/main ... ok
creating subdirectories ... ok
selecting dynamic shared memory implementation ... posix
selecting default "max_connections" ... 100
selecting default "shared_buffers" ... 128MB
selecting default time zone ... Europe/Moscow
creating configuration files ... ok
running bootstrap script ... ok
performing post-bootstrap initialization ... ok
syncing data to disk ... ok
Ver Cluster Port Status Owner    Data directory              Log file
17  main    5442 online postgres /var/lib/postgresql/17/main /var/log/postgresql/postgresql-17-main.log

Как ы видим, все что мы указали было использовано при создании кластера.

Проверим еще раз список кластеров:

pg_lsclusters -s

Вывод:

Ver Cluster Port Status      Owner    Data directory              Log file
17  main    5442 online,auto postgres /var/lib/postgresql/17/main /var/log/postgresql/postgresql-17-main.log
18  main    5452 online,auto postgres /var/lib/postgresql/18/main /var/log/postgresql/postgresql-18-main.log

Проверим порты, подключимся к новому кластеру и посмотрим версию и проверим что контрольные суммы действительно включены:

# netstat -ltupn | grep [p]ostgres

tcp        0      0 127.0.0.1:5452          0.0.0.0:*               LISTEN      1192/postgres       
tcp        0      0 127.0.0.1:5442          0.0.0.0:*               LISTEN      1401/postgres       
tcp6       0      0 ::1:5442                :::*                    LISTEN      1401/postgres       
tcp6       0      0 ::1:5452                :::*                    LISTEN      1192/postgres

# su - postgres -c 'psql -p 5442 -c "SELECT version();"'

                                                              version                                                              
-----------------------------------------------------------------------------------------------------------------------------------
 PostgreSQL 17.6 (Ubuntu 17.6-2.pgdg24.04+1) on x86_64-pc-linux-gnu, compiled by gcc (Ubuntu 13.3.0-6ubuntu2~24.04) 13.3.0, 64-bit
(1 row)

su - postgres -c 'psql -p 5442 -c "SHOW data_checksums;"'

 data_checksums 
----------------
 on
(1 row)

Все корректно. Мы молодцы, с Задачей 1 мы справились и запустили 2 кластера с разными версиями PostgreSQL и на разных портах.

Задача 2: Создать и запустить несколько кластеров (с разными именами) на одном сервере и одной версии PostgreSQL (будем запускать 2 кластера 18-ой версии).

Давайте теперь создадим еще один кластер, но уже 18-й версии.

Будем использовать все ту же утилиту pg_createcluster со следующими параметрами:
версия postgres: 18
имя кластера: dev
порт: 5453
автоматическим стартом при загрузке ОС: да (по умолчанию да, но создав выше файл /etc/postgresql-common/createcluster.d/start.conf с типом запуска manual мы поменяли эту настройку на нет по умолчанию)
автоматически запустить кластер после создания: да (по умолчанию нет)
дополнительные параметры initdb: укажем необходимую нам кодировку баз в кластере (—encoding=UTF-8 —lc-collate=en_US.UTF-8 —lc-ctype=en_US.UTF-8), ведение контрольных сумм в 18-й версии уже включено по умолчанию и нам уже не требуется использовать доп. параметр для initdb

locale-gen ru_RU
locale-gen ru_RU.UTF-8
update-locale
pg_createcluster -p 5453 --start-conf=auto --start 18 dev -- --encoding=UTF-8 --lc-collate=ru_RU.UTF-8 --lc-ctype=ru_RU.UTF-8

Вывод работы будет таким:

Creating new PostgreSQL cluster 18/dev ...
/usr/lib/postgresql/18/bin/initdb -D /var/lib/postgresql/18/dev --auth-local peer --auth-host scram-sha-256 --no-instructions --encoding=UTF-8 --lc-collate=ru_RU.UTF-8 --lc-ctype=ru_RU.UTF-8
The files belonging to this database system will be owned by user "postgres".
This user must also own the server process.

The database cluster will be initialized with this locale configuration:
  locale provider:   libc
  LC_COLLATE:  ru_RU.UTF-8
  LC_CTYPE:    ru_RU.UTF-8
  LC_MESSAGES: en_US.UTF-8
  LC_MONETARY: en_US.UTF-8
  LC_NUMERIC:  en_US.UTF-8
  LC_TIME:     en_US.UTF-8
The default text search configuration will be set to "russian".

Data page checksums are enabled.

fixing permissions on existing directory /var/lib/postgresql/18/dev ... ok
creating subdirectories ... ok
selecting dynamic shared memory implementation ... posix
selecting default "max_connections" ... 100
selecting default "shared_buffers" ... 128MB
selecting default time zone ... Europe/Moscow
creating configuration files ... ok
running bootstrap script ... ok
performing post-bootstrap initialization ... ok
syncing data to disk ... ok
Ver Cluster Port Status Owner    Data directory             Log file
18  dev     5453 online postgres /var/lib/postgresql/18/dev /var/log/postgresql/postgresql-18-dev.log

Как ы видим, все что мы указали было использовано при создании кластера.

Проверим еще раз список кластеров:

pg_lsclusters -s

Вывод:

Ver Cluster Port Status      Owner    Data directory              Log file
17  main    5442 online,auto postgres /var/lib/postgresql/17/main /var/log/postgresql/postgresql-17-main.log
18  dev     5453 online,auto postgres /var/lib/postgresql/18/dev  /var/log/postgresql/postgresql-18-dev.log
18  main    5452 online,auto postgres /var/lib/postgresql/18/main /var/log/postgresql/postgresql-18-main.log

Теперь у нас есть 3 кластера.

Проверим порты, подключимся к новому кластеру и посмотрим версию и проверим что контрольные суммы действительно включены и кодировки существующих БД:

# netstat -ltupn | grep [p]ostgres

tcp        0      0 127.0.0.1:5452          0.0.0.0:*               LISTEN      1192/postgres       
tcp        0      0 127.0.0.1:5453          0.0.0.0:*               LISTEN      12240/postgres      
tcp        0      0 127.0.0.1:5442          0.0.0.0:*               LISTEN      1401/postgres       
tcp6       0      0 ::1:5442                :::*                    LISTEN      1401/postgres       
tcp6       0      0 ::1:5453                :::*                    LISTEN      12240/postgres      
tcp6       0      0 ::1:5452                :::*                    LISTEN      1192/postgres

# su - postgres -c 'psql -p 5453 -c "SELECT version();"'

                                                              version                                                              
-----------------------------------------------------------------------------------------------------------------------------------
 PostgreSQL 18.0 (Ubuntu 18.0-1.pgdg24.04+3) on x86_64-pc-linux-gnu, compiled by gcc (Ubuntu 13.3.0-6ubuntu2~24.04) 13.3.0, 64-bit
(1 row)

su - postgres -c 'psql -p 5453 -c "SHOW data_checksums;"'

 data_checksums 
----------------
 on
(1 row)

# su - postgres -c 'psql -p 5453 -c "SELECT datname, datcollate, datctype FROM pg_database;"'
  datname  | datcollate  |  datctype   
-----------+-------------+-------------
 postgres  | ru_RU.UTF-8 | ru_RU.UTF-8
 template1 | ru_RU.UTF-8 | ru_RU.UTF-8
 template0 | ru_RU.UTF-8 | ru_RU.UTF-8
(3 rows)

Все корректно. Мы молодцы, с Задачей 2 мы справились и запустили 2-ой кластер с PostgreSQL v18 на другом порту.

Задача 3: Изменить некоторые настройки одного из кластеров, переименовать этот кластер и в конце удалить его не задев другие кластера.

На текущий момент у нас есть 3 кластера PostgreSQL, проверим из:

pg_lsclusters -s

Вывод:

Ver Cluster Port Status      Owner    Data directory              Log file
17  main    5442 online,auto postgres /var/lib/postgresql/17/main /var/log/postgresql/postgresql-17-main.log
18  dev     5453 online,auto postgres /var/lib/postgresql/18/dev  /var/log/postgresql/postgresql-18-dev.log
18  main    5452 online,auto postgres /var/lib/postgresql/18/main /var/log/postgresql/postgresql-18-main.log

Давайте поменяем несколько настроек у кластера 18/dev

Выведем текущие настройки кластера из файла конфигурации:

pg_conftool 18 dev postgresql.conf show all

Вывод:

autovacuum_worker_slots = 16
cluster_name = '18/dev'
data_directory = '/var/lib/postgresql/18/dev'
datestyle = 'iso, mdy'
default_text_search_config = 'pg_catalog.russian'
dynamic_shared_memory_type = posix
external_pid_file = '/var/run/postgresql/18-dev.pid'
hba_file = '/etc/postgresql/18/dev/pg_hba.conf'
ident_file = '/etc/postgresql/18/dev/pg_ident.conf'
lc_messages = 'en_US.UTF-8'
lc_monetary = 'en_US.UTF-8'
lc_numeric = 'en_US.UTF-8'
lc_time = 'en_US.UTF-8'
log_line_prefix = '%m [%p] %q%u@%d '
log_timezone = 'Europe/Moscow'
max_connections = 100
max_wal_size = 1GB
min_wal_size = 80MB
port = 5453
shared_buffers = 128MB
ssl = on
ssl_cert_file = '/etc/ssl/certs/ssl-cert-snakeoil.pem'
ssl_key_file = '/etc/ssl/private/ssl-cert-snakeoil.key'
timezone = 'Europe/Moscow'
unix_socket_directories = '/var/run/postgresql'

Давайте включим расширение pg_stat_statements в нашем кластере.

Для этого в файл конфигурации нужно добавить настройку shared_preload_libraries = ‘pg_stat_statements’ и выполнить в нужной БД: CREATE EXTENSION pg_stat_statements;

Выполняем:

pg_conftool 18 dev postgresql.conf set shared_preload_libraries pg_stat_statements

Теперь перезапускаем кластер 18/dev:

pg_ctlcluster 18 dev restart

И устанавливаем в БД postgres расширение pg_stat_statements:

su - postgres -c 'psql -p 5453 -c "CREATE EXTENSION pg_stat_statements;"'

Проверим наличие расширения:

# su - postgres -c 'psql -p 5453 -c "SELECT * FROM pg_extension;"'
  oid  |      extname       | extowner | extnamespace | extrelocatable | extversion | extconfig | extcondition 
-------+--------------------+----------+--------------+----------------+------------+-----------+--------------
 13631 | plpgsql            |       10 |           11 | f              | 1.0        |           | 
 16388 | pg_stat_statements |       10 |         2200 | t              | 1.12       |           | 
(2 rows)

Мы видим, что расширение pg_extension установлено.

Теперь давайте уменьшим work_mem до 2MB. Изначально по умолчанию в новых кластерах work_mem = 4MB

Проверим work_mem до изменения:

# su - postgres -c 'psql -p 5453 -c "SHOW work_mem;"'
 work_mem 
----------
 4MB
(1 row)

Выполняем:

pg_conftool 18 dev postgresql.conf set work_mem 2MB

Теперь перезагрузим конфигурацию кластер 18/dev:

pg_ctlcluster 18 dev reload

Почему в этот раз мы делаем reload, а не restart? А все потому, что параметр work_mem меняется без рестарта кластера, в отличии от shared_preload_libraries

Проверим work_mem после изменения:

# su - postgres -c 'psql -p 5453 -c "SHOW work_mem;"'
 work_mem 
----------
 2MB
(1 row)

Отлично!

Теперь давайте аккуратно переименуем кластер 18/dev в 18/production

Для этого есть отдельная утилита — pg_renamecluster

Синтаксис у нее простой:

pg_renamecluster [OPTIONS] <version> <old cluster name> <new cluster name>

Переименовываем наш кластер:

pg_renamecluster 18 dev production

Вывод работы утилиты:

Stopping cluster 18 dev ...
Starting cluster 18 production ...

Все довольно лаконично — остановили, переименовали и запустили.

Проверим список кластеров:

pg_lsclusters -s

Вывод:

Ver Cluster    Port Status      Owner    Data directory                    Log file
17  main       5442 online,auto postgres /var/lib/postgresql/17/main       /var/log/postgresql/postgresql-17-main.log
18  main       5452 online,auto postgres /var/lib/postgresql/18/main       /var/log/postgresql/postgresql-18-main.log
18  production 5453 online,auto postgres /var/lib/postgresql/18/production /var/log/postgresql/postgresql-18-production.log

Как мы видим — кластер был переименован. Был переименован каталог с файлами данных кластера, переименован каталог с файлами конфигурации и даже лог-файл так же стал носить другое имя.

Мы можем проверить конфигурацию кластера 18/production и убедиться что от старого имени dev там ничего не осталось.

pg_conftool 18 production postgresql.conf show all

Вывод:

autovacuum_worker_slots = 16
cluster_name = '18/production'
data_directory = '/var/lib/postgresql/18/production'
datestyle = 'iso, mdy'
default_text_search_config = 'pg_catalog.russian'
dynamic_shared_memory_type = posix
external_pid_file = '/var/run/postgresql/18-production.pid'
hba_file = '/etc/postgresql/18/production/pg_hba.conf'
ident_file = '/etc/postgresql/18/production/pg_ident.conf'
lc_messages = 'en_US.UTF-8'
lc_monetary = 'en_US.UTF-8'
lc_numeric = 'en_US.UTF-8'
lc_time = 'en_US.UTF-8'
log_line_prefix = '%m [%p] %q%u@%d '
log_timezone = 'Europe/Moscow'
max_connections = 100
max_wal_size = 1GB
min_wal_size = 80MB
port = 5453
shared_buffers = 128MB
shared_preload_libraries = pg_stat_statements
ssl = on
ssl_cert_file = '/etc/ssl/certs/ssl-cert-snakeoil.pem'
ssl_key_file = '/etc/ssl/private/ssl-cert-snakeoil.key'
timezone = 'Europe/Moscow'
unix_socket_directories = '/var/run/postgresql'
work_mem = 2MB

А теперь давайте аккуратно удалим наш кластер 18/production

Для удаления кластеров есть отдельная утилита — pg_dropcluster

Синтаксис у нее простой:

pg_dropcluster [--stop] <version> <cluster>

БУДЬТЕ ОСТОРОЖНЫ! Утилита pg_dropcluster не спросит никакого подтверждения, она безжалостно остановит и удалит весь кластер со всеми данными и настройками.

Итак, останавливаем и удаляем.

pg_dropcluster --stop 18 production

Проверим список кластеров:

pg_lsclusters -s

Вывод:

Ver Cluster Port Status      Owner    Data directory              Log file
17  main    5442 online,auto postgres /var/lib/postgresql/17/main /var/log/postgresql/postgresql-17-main.log
18  main    5452 online,auto postgres /var/lib/postgresql/18/main /var/log/postgresql/postgresql-18-main.log

Кластер 18/production вместе с его данными был удален.

На этом статья завершена. До скорых встреч, пока!

Если у Вас возникли вопросы или Вы хотите, чтобы я помог Вам, то Вы всегда можете связаться со мной разными доступными способами.


Подписаться
Уведомить о
guest

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.

0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии
0
Оставьте комментарий! Напишите, что думаете по поводу статьи.x