پرش به محتوا

PostgreSQL روی FreeBSD با pkg

یک نسخه‌ی مشخص PostgreSQL را از pkg نصب کنید، با rc.conf مقداردهی و اجرا کنید، دسترسی شبکه را محدود کنید و آن را روی ZFS بهینه کنید.

FreeBSD 15سطح: مقدماتیبه‌روزرسانی: ۱۷ آبان ۱۴۰۵

۱. نصب

در FreeBSD هر نسخه‌ی اصلی PostgreSQL بسته‌ی جداگانه دارد. نسخه را آگاهانه انتخاب کنید:

shell
pkg search -x '^postgresql[0-9]+-server'
pkg install -y postgresql17-server postgresql17-contrib

۲. مقداردهی و اجرا

shell
sysrc postgresql_enable=YES
service postgresql initdb
service postgresql start
service postgresql status

داده‌ها در /var/db/postgres/data17 هستند و کاربر سیستمی postgres است.

۳. روی ZFS (اختیاری ولی توصیه‌شده)

اگر سرور ZFS دارد، پیش از initdb یک dataset اختصاصی با recordsize کوچک بسازید:

shell
zfs create -o recordsize=16k -o compression=lz4 -o atime=off -o mountpoint=/var/db/postgres zroot/postgres
chown postgres:postgres /var/db/postgres

۴. کاربر و پایگاه داده

shell
su -l postgres -c "psql" <<'SQL'
CREATE ROLE app LOGIN PASSWORD 'change-me';
CREATE DATABASE appdb OWNER app;
SQL

۵. دسترسی شبکه

/var/db/postgres/data17/postgresql.conf:

listen_addresses = 'localhost,192.168.10.30'
password_encryption = scram-sha-256

/var/db/postgres/data17/pg_hba.conf:

host  appdb  app  192.168.10.0/24  scram-sha-256
shell
service postgresql restart

با فعال بودن PF، پورت را فقط برای شبکه‌ی داخلی باز کنید. در /etc/pf.conf:

pass in on vtnet0 proto tcp from 192.168.10.0/24 to any port 5432
shell
pfctl -nf /etc/pf.conf && pfctl -f /etc/pf.conf

۶. بکاپ

shell
mkdir -p /var/backups/pg && chown postgres /var/backups/pg
echo '30 2 * * * postgres /usr/local/bin/pg_dump -Fc appdb > /var/backups/pg/appdb-$(date +\%F).dump' >> /etc/crontab

ارتقای نسخه‌ی اصلی

بسته‌ی postgresql17-server هیچ‌وقت خودکار به ۱۸ ارتقا پیدا نمی‌کند. برای ارتقا باید با pg_dumpall بکاپ بگیرید، بسته‌ی جدید را نصب کنید، initdb بزنید و داده را بازیابی کنید (یا از pg_upgrade استفاده کنید).