بکاپ گرفتن از PostgreSQL با pg_dump و pg_dumpall

pg_dump بکاپ سازگار و بدون قفل از یک دیتابیس PostgreSQL می‌گیرد. فرمت custom فشرده است و با pg_restore امکان بازگرداندن انتخابی دارد. برای کاربران و نقش‌ها باید pg_dumpall --globals-only را هم بزنید.

دیتابیس و بکاپمقدماتی8 دقیقه

۱اتصال بدون رمز در خط فرمان با pgpass

فایل ~/.pgpass با قالب host:port:database:user:password رمز را از خط فرمان دور نگه می‌دارد. دسترسی فایل باید 600 باشد وگرنه PostgreSQL آن را نادیده می‌گیرد.

bash
echo "localhost:5432:*:backup:YOUR_STRONG_PASSWORD" >> ~/.pgpass
chmod 600 ~/.pgpass

۲بکاپ فرمت custom (پیشنهادی)

این فرمت فشرده است و امکان ریستور انتخابی جدول‌ها و ریستور موازی را می‌دهد.

bash
pg_dump -h localhost -U backup -Fc appdb -f appdb_$(date +%F).dump

۳بکاپ متنی SQL

فایل قابل خواندن و ویرایش است و با psql ریستور می‌شود. برای انتقال بین نسخه‌ها مناسب است.

bash
pg_dump -h localhost -U backup appdb | gzip > appdb_$(date +%F).sql.gz

۴بکاپ موازی برای دیتابیس بزرگ

فرمت directory با چند رشتهٔ موازی (-j) بکاپ را چند برابر سریع‌تر می‌کند.

bash
pg_dump -h localhost -U backup -Fd -j 4 appdb -f /var/backups/pg/appdb_dir

۵بکاپ کاربران و نقش‌ها

pg_dump نقش‌ها (roles) را شامل نمی‌شود. برای انتقال کامل به سرور دیگر آن‌ها را جدا بگیرید.

bash
pg_dumpall -h localhost -U postgres --globals-only > globals.sql

۶بکاپ فقط یک جدول یا یک schema

برای وقتی که فقط بخشی از داده را می‌خواهید.

bash
pg_dump -U backup -t public.orders appdb > orders.sql
pg_dump -U backup -n reporting appdb > reporting_schema.sql

۷بررسی محتوای بکاپ

با pg_restore -l بدون اجرا فهرست اجزای بکاپ را ببینید تا از سالم بودن فایل مطمئن شوید.

bash
pg_restore -l appdb_2026-09-29.dump | head -20

پرسش‌های پرتکرار دربارهٔ بکاپ گرفتن از PostgreSQL با pg_dump و pg_dumpall

تفاوت -Fc و -Fp چیست؟

-Fc فرمت custom فشرده و مخصوص pg_restore است. -Fp متن ساده SQL است که با psql اجرا می‌شود و قابل ویرایش است ولی ریستور انتخابی و موازی ندارد.

آیا pg_dump سایت را قفل می‌کند؟

خیر؛ از snapshot سازگار (MVCC) استفاده می‌کند و خواندن و نوشتن ادامه دارد. فقط دستورهای ALTER TABLE ممکن است تا پایان بکاپ منتظر بمانند.