Гайды

PostgreSQL 17: установка и настройка на Ubuntu и Windows

Официальный репозиторий на Ubuntu 24.04, установщик на Windows, postgresql.conf и pg_hba.conf, удалённый доступ, мониторинг и бэкапы.

~14 мин чтения

PostgreSQL 17: установка и настройка

Важно: PostgreSQL 17 — актуальная мажорная версия с заметными улучшениями производительности и мониторинга: лучше работает JSON_TABLE, команда COPY ускорена для длинных строк (до ~2× на больших строках), в pg_basebackup появилось инкрементальное резервное копирование, а потребление памяти при VACUUM на тяжёлых таблицах может снижаться заметнее.


Установка на Ubuntu 24.04 LTS (официальный репозиторий PGDG)

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

1. Репозиторий и ключи

bash
sudo apt update
sudo apt install -y curl ca-certificates
curl -fsSL https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo gpg --dearmor -o /usr/share/keyrings/postgresql-archive-keyring.gpg
echo "deb [signed-by=/usr/share/keyrings/postgresql-archive-keyring.gpg] http://apt.postgresql.org/pub/repos/apt/ noble-pgdg main" | sudo tee /etc/apt/sources.list.d/pgdg.list
sudo apt update

2. Установка сервера и клиента

bash
sudo apt install -y postgresql-17 postgresql-client-17

3. Проверка сервиса

bash
sudo systemctl status postgresql

Если сервис не активен:

bash
sudo systemctl enable --now postgresql

Установка на Windows

  1. Откройте postgresql.org/download/windowsDownloadWindows → установщик под вашу разрядность (обычно x86-64).
  2. Запустите .exe и разрешите изменения в системе.
  3. Installation directory — по умолчанию C:\Program Files\PostgreSQL\17.
  4. Data directory — каталог данных (можно оставить по умолчанию).
  5. Password — надёжный пароль суперпользователя postgres (запомните его; это критично для админ-доступа).
  6. Port5432, если свободен; иначе выберите другой и запомните его для приложений.
  7. Locale — по умолчанию или нужная локаль.
  8. Завершите мастер. Stack Builder можно отключить, если дополнительные компоненты не нужны.

Файлы конфигурации: postgresql.conf и pg_hba.conf

На Linux типичный путь: /etc/postgresql/17/main/. На Windows — в каталоге данных, который вы указали при установке.

ФайлНазначение
postgresql.confПорт, память, логирование, WAL, autovacuum и т.д.
pg_hba.confКто и откуда может подключаться и какой метод аутентификации

Полезные параметры в postgresql.conf на старте:

  • listen_addresses — по умолчанию часто только localhost; для удалённых подключений нужен '*' (только вместе с фаерволом и осознанными правилами в pg_hba.conf).
  • port — обычно 5432.
  • shared_buffers — кэш страниц (часто 15–25% RAM как отправная точка для dedicated-сервера; дальше — по профилю OLTP/DW).
  • max_connections — лимит одновременных подключений; на высоконагруженных системах почти всегда сочетают с пулером (pgBouncer), иначе вы упираетесь в накладные расходы на тысячи коннектов.

Пример фрагмента pg_hba.conf (иллюстративно; под вашу сеть сужайте маски):

text
local   all             postgres                                peer
local   all             all                                     peer
host    all             all             127.0.0.1/32            scram-sha-256

Для доступа извне предпочтительнее SCRAM-SHA-256 вместо устаревшего md5, если клиенты поддерживают. Открывать 0.0.0.0/0 без VPN/бастиона — плохая практика; лучше whitelist по IP или приватная сеть.


Удалённый доступ и аутентификация (Linux)

По умолчанию PostgreSQL на Linux часто использует peer для локальных сокетов — это удобно для админа, но для удалённых клиентов нужны явные правила.

1. postgresql.conf

bash
sudo nano /etc/postgresql/17/main/postgresql.conf

Если действительно нужны подключения не только с localhost:

conf
listen_addresses = '*'

2. pg_hba.conf

bash
sudo nano /etc/postgresql/17/main/pg_hba.conf

Добавьте в конец правило для вашей подсети, например офис или VPC:

conf
host    all             all             10.0.0.0/8              scram-sha-256

Для быстрого теста (не для продакшена) иногда встречают 0.0.0.0/0 — делайте это только временно и с жёстким фаерволом.

3. Фаервол

Пример ufw:

bash
sudo ufw allow 5432/tcp
sudo ufw reload

4. Применение

bash
sudo systemctl restart postgresql

Мониторинг и тюнинг

  • Медленные запросы — в postgresql.conf:
conf
log_min_duration_statement = 200

Логирует запросы дольше 200 мс (порог подберите под проект; на шумных системах начните выше).

  • pg_stat_statements — расширение для агрегированной статистики по нормализованным текстам запросов. Требует строку в shared_preload_libraries и CREATE EXTENSION pg_stat_statements; в нужной базе.

  • Внешние дашборды — Prometheus + Grafana, Percona PMM и аналоги для трендов и алертов.

  • Генераторы конфиговpgtune, PGConfigurator: хорошая отправная точка, затем валидация на стенде под реальную нагрузку и железо.


Резервное копирование и репликация

Логический дамп (pg_dump)

Кроссплатформенно, удобно для отдельных баз и миграций:

bash
pg_dump -U postgres -d mydb -F c -b -v -f mydb.dump

Восстановление через pg_restore. Для больших объёмов учитывайте время простоя или используйте параллельные режимы там, где это уместно.

Физический бэкап (pg_basebackup)

Быстрый снимок кластера, основа для реплик и PITR вместе с архивацией WAL:

bash
pg_basebackup -U postgres -D /backup/base/ -Fp -Xs -P

В PostgreSQL 17 обратите внимание на возможности инкрементальных бэкапов в pg_basebackup — это снижает объём передаваемых данных между полными снимками. В проде часто автоматизируют через pgBackRest и политики RPO/RTO.

Репликация master → replica (потоковая)

На мастере в postgresql.conf:

conf
wal_level = replica
max_wal_senders = 10

В pg_hba.conf разрешите репликацию с IP реплики (пример):

conf
host    replication     postgres        10.0.0.5/32             scram-sha-256

На реплике — остановите инстанс при необходимости, подготовьте каталог данных и выполните базовый бэкап:

bash
pg_basebackup -h <IP_мастера> -D /var/lib/postgresql/17/main/ -U postgres -v -P --wal-method=stream

Создайте файл standby.signal в каталоге данных и укажите в postgresql.auto.conf или postgresql.conf параметр primary_conninfo на мастер. Детали зависят от layout каталогов и версии — сверяйтесь с официальной документацией по высокой доступности.


Частые ошибки

СимптомЧто проверить
FATAL: no pg_hba.conf entry for hostСтрока в pg_hba.conf для вашего IP/подсети и метод auth; затем reload/restart.
Не стартует после правки postgresql.confСинтаксис и лог: journalctl -u postgresql или файл лога в /var/log/postgresql/.
too many clients alreadymax_connections, пул соединений (pgBouncer), утечки коннектов в приложении.

Итог

  1. На Ubuntu — репозиторий PGDG, пакеты postgresql-17, проверка systemctl.
  2. На Windows — инсталлятор, пароль postgres, порт и data directory.
  3. Безопасный удалённый доступ — listen_addresses, pg_hba.conf, SCRAM, фаервол и минимизация поверхности атаки.
  4. Мониторинг и бэкапы — логи, pg_stat_statements, дампы и/или физические бэкапы под ваши RPO/RTO.

Дальше логично перейти к гайду по индексам и партиционированию в этом же разделе Learn.