بکاپ گرفتن از PostgreSQL با pg_dump و pg_dumpall
pg_dump بکاپ سازگار و بدون قفل از یک دیتابیس PostgreSQL میگیرد. فرمت custom فشرده است و با pg_restore امکان بازگرداندن انتخابی دارد. برای کاربران و نقشها باید pg_dumpall --globals-only را هم بزنید.
۱اتصال بدون رمز در خط فرمان با pgpass
فایل ~/.pgpass با قالب host:port:database:user:password رمز را از خط فرمان دور نگه میدارد. دسترسی فایل باید 600 باشد وگرنه PostgreSQL آن را نادیده میگیرد.
echo "localhost:5432:*:backup:YOUR_STRONG_PASSWORD" >> ~/.pgpass
chmod 600 ~/.pgpass۲بکاپ فرمت custom (پیشنهادی)
این فرمت فشرده است و امکان ریستور انتخابی جدولها و ریستور موازی را میدهد.
pg_dump -h localhost -U backup -Fc appdb -f appdb_$(date +%F).dump۳بکاپ متنی SQL
فایل قابل خواندن و ویرایش است و با psql ریستور میشود. برای انتقال بین نسخهها مناسب است.
pg_dump -h localhost -U backup appdb | gzip > appdb_$(date +%F).sql.gz۴بکاپ موازی برای دیتابیس بزرگ
فرمت directory با چند رشتهٔ موازی (-j) بکاپ را چند برابر سریعتر میکند.
pg_dump -h localhost -U backup -Fd -j 4 appdb -f /var/backups/pg/appdb_dir۵بکاپ کاربران و نقشها
pg_dump نقشها (roles) را شامل نمیشود. برای انتقال کامل به سرور دیگر آنها را جدا بگیرید.
pg_dumpall -h localhost -U postgres --globals-only > globals.sql۶بکاپ فقط یک جدول یا یک schema
برای وقتی که فقط بخشی از داده را میخواهید.
pg_dump -U backup -t public.orders appdb > orders.sql
pg_dump -U backup -n reporting appdb > reporting_schema.sql۷بررسی محتوای بکاپ
با pg_restore -l بدون اجرا فهرست اجزای بکاپ را ببینید تا از سالم بودن فایل مطمئن شوید.
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 ممکن است تا پایان بکاپ منتظر بمانند.