پرش به محتوا

PostgreSQL روی Fedora و ارتقای داده بعد از ارتقای Fedora

PostgreSQL را نصب و پایگاه داده را مقداردهی کنید، احراز هویت امن تنظیم کنید و یاد بگیرید بعد از ارتقای نسخه‌ی Fedora چطور داده را به نسخه‌ی جدید PostgreSQL منتقل کنید.

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

۱. نصب و مقداردهی

bash
sudo dnf install -y postgresql-server postgresql-contrib
sudo postgresql-setup --initdb
sudo systemctl enable --now postgresql
psql --version

داده‌ها در /var/lib/pgsql/data هستند.

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

bash
sudo -u postgres psql <<'SQL'
CREATE ROLE app LOGIN PASSWORD 'change-me';
CREATE DATABASE appdb OWNER app;
SQL

۳. احراز هویت

در /var/lib/pgsql/data/pg_hba.conf، قانون اتصال از شبکه را با روش scram-sha-256 اضافه کنید:

# TYPE  DATABASE  USER  ADDRESS           METHOD
host    appdb     app   192.168.10.0/24   scram-sha-256

برای دسترسی از شبکه، در /var/lib/pgsql/data/postgresql.conf این خط را بگذارید:

listen_addresses = 'localhost,192.168.10.25'
bash
sudo systemctl restart postgresql
sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.10.0/24" service name="postgresql" accept'
sudo firewall-cmd --reload
psql -h 192.168.10.25 -U app appdb -c 'select version();'

۴. نکته‌ی مهم: ارتقای Fedora

Fedora هر شش ماه یک نسخه‌ی جدید دارد و گاهی نسخه‌ی اصلی PostgreSQL را هم بالا می‌برد (مثلاً از ۱۶ به ۱۷). فایل‌های داده‌ی نسخه‌ی قدیم با نسخه‌ی جدید سازگار نیستند و سرویس بالا نمی‌آید. اگر بعد از ارتقای Fedora پیام database files are incompatible with server دیدید:

bash
sudo dnf install -y postgresql-upgrade
sudo postgresql-setup --upgrade
sudo systemctl start postgresql
sudo -u postgres vacuumdb --all --analyze-in-stages

postgresql-upgrade باینری‌های نسخه‌ی قبلی را دارد و pg_upgrade را اجرا می‌کند. پیش از ارتقای Fedora حتماً از داده‌ها dump بگیرید:

bash
sudo -u postgres pg_dumpall > /root/pg-before-upgrade.sql

۵. بکاپ روزانه

bash
sudo mkdir -p /var/backups/pg && sudo chown postgres /var/backups/pg
echo '30 2 * * * postgres pg_dump -Fc appdb > /var/backups/pg/appdb-$(date +\%F).dump && find /var/backups/pg -mtime +14 -delete' | sudo tee /etc/cron.d/pg-backup

اگر cron نصب نیست: sudo dnf install -y cronie && sudo systemctl enable --now crond.