Домой / Руководства / PostgreSQL

PostgreSQL на VPS: Установка, настройка, резервное копирование

Установка PostgreSQL по умолчанию настроена для рабочей станции 1990-х годов. На 2-8 ГБ VPS несколько настроек меняют все — вот короткая версия, с реальными номерами.

1.Установка

apt update && apt install -y postgresql postgresql-contrib
systemctl enable --now postgresql
sudo -u postgres psql -c "SELECT version();"

Корабли Ubuntu PostgreSQL 16 24.04. Эта версия достаточно современная для всего, что вы можете запустить.

2 Создание базы данных и пользователя

sudo -u postgres psql <<'SQL'
CREATE USER app WITH PASSWORD 'strong-password';
CREATE DATABASE appdb OWNER app;
SQL
psql "postgresql://app:strong-password@localhost/appdb" -c "SELECT 1;"

Никогда не используйте суперпользователь postgres в приложении. Один пользователь на приложение, одна база данных на проект.

3. Настройка для вашей RAM

Редактировать /etc/postgresql/16/main/postgresql.conf и установить значения, основанные на размере сервера:

настройка2 ГБ VPS4 ГБ VPS8 ГБ VPS
Shared buffers512 Мб.1 Гб2 ГБ
Эффективный cache size1 Гб2.5 ГБ5 ГБ
Work mem16 Мб.32 Мбайт48 Мб.
Обслуживание work mem128 Мбайт256 Мбайт512 Мб.
max соединения50100150
systemctl restart postgresql
sudo -u postgres psql -c "SHOW shared_buffers;"

Если ваше приложение открывает сотни подключений, поставьте PgBouncer впереди, а не поднимайте max connections — каждое соединение стоит памяти.

4. Ежедневные свалки с ротацией

cat > /usr/local/bin/pg-dump-all <<'EOF'
#!/bin/sh
set -e
DIR=/var/backups/postgres
mkdir -p "$DIR"
sudo -u postgres pg_dumpall --globals-only > "$DIR/globals.sql"
for db in $(sudo -u postgres psql -Atc "SELECT datname FROM pg_database WHERE datistemplate = false"); do
  sudo -u postgres pg_dump -Fc "$db" > "$DIR/$db.dump"
done
find "$DIR" -type f -mtime +7 -delete
EOF
chmod +x /usr/local/bin/pg-dump-all

Добавить в cron crontab -e:

30 3 * * * /usr/local/bin/pg-dump-all

Сбросы - это последовательные снимки; копии файлов в реальном каталоге данных - нет. Затем отгрузите свалки за пределы площадки - наш путеводитель охватывает эту часть.

5. Восстановить свалку

sudo -u postgres createdb appdb_restore
sudo -u postgres pg_restore -d appdb_restore /var/backups/postgres/appdb.dump

Быстрые ответы

Можно ли открыть PostgreSQL в интернете?

Лучше нет. Держите его на локальном хосте и дайте приложению общаться с ним напрямую или используйте туннель SSH. Если вы должны разоблачить его, допустите только свой IP-адрес в брандмауэре и требуйте TLS.

Какой план мне нужен для PostgreSQL?

2 ГБ оперативной памяти отлично подходит для разработки и небольших приложений, 4 ГБ удобно для производственного веб-сайта, а 8 ГБ обрабатывает занятую базу данных с кэшированием. Хранение NVMe имеет большее значение, чем дополнительные ядра.

Как проверить, какие запросы медленные?

Включите расширение pg stat statements и сортируйте по времени. Обычно он показывает один или два недостающих индекса, которые объясняют большую часть нагрузки.

Удобная производственная база данных начинается с Buran-2, €13/мо.

связанный