| PG_DUMPALL(1) | PostgreSQL 18.6 Documentation | PG_DUMPALL(1) |
نام (NAME)
pg_dumpall - استخراج تمام پایگاههای داده یک کلاستر PostgreSQL در یک فایل اسکریپت
خلاصه دستور (SYNOPSIS)
pg_dumpall [connection-option...] [option...]
توضیحات (DESCRIPTION)
دستور pg_dumpall ابزاری برای استخراج و ذخیرهسازی (“dump کردن”) تمامی پایگاههای داده PostgreSQL یک کلاستر در قالب یک فایل اسکریپت است. این فایل اسکریپت شامل دستورهای SQL است که میتواند به عنوان ورودی به psql(1) جهت بازیابی پایگاههای داده داده شود. این ابزار کار خود را با فراخوانی pg_dump(1) برای هر یک از پایگاههای داده موجود در کلاستر انجام میدهد. همچنین pg_dumpall اشیاء سراسری (global objects) مشترک میان تمام پایگاههای داده، از جمله نقشهای پایگاهداده (roles)، فضاهای جدول (tablespaces) و اعطای دسترسیها برای پارامترهای پیکربندی را استخراج میکند. (ابزار pg_dump این اشیاء را ذخیره نمیکند.)
از آنجا که pg_dumpall جدولها را از تمام پایگاههای داده میخواند، به احتمال بسیار زیاد برای تهیه یک نسخه خروجی کامل باید به عنوان کاربر ارشد (superuser) پایگاهداده متصل شوید. همچنین برای اجرای اسکریپت ذخیرهشده به دسترسیهای superuser نیاز خواهید داشت تا اجازه افزودن نقشها و ایجاد پایگاههای داده را داشته باشید.
اسکریپت SQL در خروجی استاندارد نوشته خواهد شد. از گزینه -f/--file یا عملگرهای تغییر مسیر پوسته برای هدایت آن به یک فایل استفاده کنید.
دستور pg_dumpall باید چندین بار به سرور PostgreSQL متصل شود (یک بار به ازای هر پایگاهداده). اگر از احراز هویت با گذرواژه استفاده میکنید، هر بار گذرواژه را درخواست خواهد کرد. در چنین مواردی، داشتن یک فایل ~/.pgpass بسیار سودمند است. برای اطلاعات بیشتر به بخش 32.16 مراجعه کنید.
هشدار (Warning)
بازیابی یک نسخه پشتیبان باعث میشود که سیستم مقصد کدهای دلخواه انتخابشده توسط superuserهای مبدأ را اجرا کند. پشتیبانگیریهای جزئی و بازیابیهای جزئی نیز این مسئله را محدود نمیکنند. اگر به superuserهای مبدأ اعتماد ندارید، عبارات SQL استخراجشده باید پیش از بازیابی به دقت بررسی شوند. توجه داشته باشید که نیازی نیست کلاینتِ اجراکنندهٔ فرایند استخراج و بازیابی به superuserهای مبدأ یا مقصد اعتماد داشته باشد.
گزینهها (OPTIONS)
گزینههای خط فرمان زیر محتوا و قالب خروجی را کنترل میکنند.
-a
--data-only
-c
--clean
-E encoding
--encoding=encoding
-f filename
--file=filename
-g
--globals-only
-O
--no-owner
-r
--roles-only
-s
--schema-only
-S username
--superuser=username
-t
--tablespaces-only
-v
--verbose
-V
--version
-x
--no-privileges
--no-acl
--binary-upgrade
--attribute-inserts
--disable-dollar-quoting
--disable-triggers
در حال حاضر، دستورهای صادرشده برای --disable-triggers باید توسط مدیر سیستم (superuser) اجرا شوند. بنابراین، باید نام یک superuser را با -S مشخص کنید، یا ترجیحاً دقت داشته باشید که اسکریپت حاصل به عنوان یک superuser اجرا شود.
--exclude-database=pattern
--extra-float-digits=ndigits
--filter=filename
این فایل در هر سطر یک الگوی پایگاه داده را با قالب زیر فهرست میکند:
exclude database PATTERN
سطرهایی که با # شروع میشوند توضیح (comment) تلقی شده و نادیده گرفته میشوند. توضیحات میتوانند پس از سطر الگوی شیء نیز قرار گیرند. سطرهای خالی نیز نادیده گرفته میشوند. برای چگونگی انجام نقلقول در الگوها به Patterns مراجعه کنید.
--if-exists
--inserts
--load-via-partition-root
--lock-wait-timeout=timeout
--no-comments
--no-data
--no-policies
--no-publications
--no-role-passwords
--no-schema
--no-security-labels
--no-statistics
--no-subscriptions
--no-sync
--no-table-access-method
--no-tablespaces
--no-toast-compression
--no-unlogged-table-data
--quote-all-identifiers
--restrict-key=restrict_key
این گزینه عمدتاً برای اهداف آزمایشی و سایر سناریوهایی که نیازمند خروجی تکرارپذیر هستند (مانند مقایسه فایلهای دامپ) در نظر گرفته شده است. استفاده از آن برای مصارف عمومی توصیه نمیشود، زیرا یک سرور مخرب با داشتن آگاهی قبلی از کلید ممکن است بتواند کد دلخواهی را تزریق کند که روی ماشینی که psql را با خروجی دامپ اجرا میکند، اجرا شود.
--rows-per-insert=nrows
--statistics
--statistics-only
--sequence-data
--use-set-session-authorization
-?
--help
گزینههای خط فرمان زیر پارامترهای اتصال به پایگاه داده را کنترل میکنند.
-d connstr
--dbname=connstr
این گزینه برای سازگاری با سایر برنامههای کلاینت، --dbname نامیده شده است، اما از آنجا که pg_dumpall باید به چندین پایگاه داده متصل شود، نام پایگاه داده موجود در رشته اتصال نادیده گرفته خواهد شد. از گزینه -l برای تعیین نام پایگاه داده مورد استفاده در اتصال اولیه استفاده کنید؛ اتصالی که اشیاء سراسری را استخراج کرده و مشخص میکند چه پایگاههای داده دیگری باید استخراج شوند.
-h host
--host=host
-l dbname
--database=dbname
-p port
--port=port
-U username
--username=username
-w
--no-password
-W
--password
این گزینه هرگز ضروری نیست، چرا که اگر سرور احراز هویت با گذرواژه را الزام کند، pg_dumpall بهطور خودکار درخواست گذرواژه خواهد داد. با این حال، pg_dumpall یک تلاش برای اتصال را فقط برای پی بردن به اینکه سرور گذرواژه میخواهد تلف خواهد کرد. در برخی موارد، استفاده از -W برای جلوگیری از این تلاش اضافی اتصال ارزشش را دارد.
توجه داشته باشید که درخواست گذرواژه برای هر پایگاه دادهای که قرار است استخراج شود دوباره تکرار خواهد شد. معمولاً تنظیم یک فایل ~/.pgpass بهتر از اتکا به وارد کردن دستی گذرواژه است.
--role=rolename
PGHOST
PGOPTIONS
PGPORT
PGUSER
PG_COLOR
این ابزار نیز، مانند بیشتر ابزارهای دیگر PostgreSQL، از متغیرهای محیطی پشتیبانیشده توسط libpq استفاده میکند (بخش 32.15 را ببینید).
نکات (NOTES)
از آنجا که pg_dumpall به صورت داخلی pg_dump را فراخوانی میکند، برخی پیامهای عیبیابی به pg_dump ارجاع خواهند داد.
گزینهٔ --clean میتواند حتی زمانی که قصد دارید اسکریپت پشتیبان را در یک کلاستر جدید بازیابی کنید نیز مفید باشد. استفاده از --clean به اسکریپت اجازه میدهد پایگاههای دادهٔ توکار postgres و template1 را حذف و دوباره ایجاد کند، که تضمین میکند آن پایگاههای داده همان ویژگیهایی (مانند locale و encoding) را که در کلاستر مبدأ داشتند حفظ خواهند کرد. بدون این گزینه، آن پایگاههای داده ویژگیهای سطح پایگاه دادهٔ موجود و همچنین محتویات از پیش موجود خود را حفظ خواهند کرد.
هنگامی که --statistics مشخص شود، pg_dumpall بیشتر آمارهای بهینهساز را در فایل پشتیبان حاصل خواهد گنجاند. این شامل همهٔ آمارها نمیشود، مانند آمارهایی که صراحتاً با CREATE STATISTICS (CREATE_STATISTICS(7)) ایجاد شدهاند، آمارهای سفارشی اضافهشده توسط یک افزونه، یا آمارهای جمعآوریشده توسط سامانهٔ آمار تجمعی. بنابراین، ممکن است برای اطمینان از عملکرد بهینه، همچنان اجرای ANALYZE روی هر پایگاه داده پس از بازیابی از یک فایل پشتیبان مفید باشد. همچنین میتوانید برای تحلیل همهٔ پایگاههای داده، vacuumdb -a -z را اجرا کنید.
نباید انتظار داشت که اسکریپت پشتیبان کاملاً بدون خطا اجرا شود. بهویژه، از آنجا که اسکریپت برای هر نقش موجود در کلاستر مبدأ دستور CREATE ROLE را صادر میکند، حتماً با خطای “role already exists” برای کاربر ارشد راهانداز (bootstrap superuser) مواجه خواهد شد، مگر اینکه کلاستر مقصد با نام متفاوتی برای کاربر ارشد راهانداز مقداردهی اولیه شده باشد. این خطا بیضرر است و باید نادیده گرفته شود. استفاده از گزینهٔ --clean احتمالاً پیامهای خطای بیضرر دیگری دربارهٔ اشیاء ناموجود تولید میکند، اگرچه میتوانید با افزودن --if-exists آنها را به حداقل برسانید.
دستور pg_dumpall نیازمند این است که تمام دایرکتوریهای tablespace مورد نیاز پیش از بازیابی وجود داشته باشند؛ در غیر این صورت، ایجاد پایگاه داده برای پایگاههای داده در مکانهای غیرپیشفرض با شکست مواجه خواهد شد.
بهطور کلی توصیه میشود هنگام بازیابی یک پایگاه داده از اسکریپت pg_dumpall، از گزینهٔ -X (--no-psqlrc) استفاده کنید تا از یک فرایند بازیابی بینقص اطمینان حاصل شده و از تداخلهای احتمالی با پیکربندیهای غیرپیشفرض psql جلوگیری شود. علاوه بر این، از آنجا که ممکن است اسکریپت pg_dumpall شامل فرادستورهای psql باشد، ممکن است با کلاینتهایی به جز psql ناسازگار باشد.
مثالها (EXAMPLES)
برای پشتیبانگیری از تمام پایگاههای داده:
$ pg_dumpall > db.out
برای بازیابی پایگاه(های) داده از این فایل، میتوانید استفاده کنید از:
$ psql -X -f db.out -d postgres
در اینجا اهمیتی ندارد که به کدام پایگاه داده متصل میشوید، زیرا فایل اسکریپت ایجادشده توسط pg_dumpall شامل دستورات مناسب برای ساخت و اتصال به پایگاههای دادهٔ ذخیرهشده خواهد بود. یک استثنا این است که اگر --clean را مشخص کرده باشید، در ابتدا باید به پایگاه دادهٔ postgres متصل شوید؛ زیرا اسکریپت بلافاصله تلاش خواهد کرد سایر پایگاههای داده را حذف کند، و این عمل برای پایگاه دادهای که هماکنون به آن متصل هستید ناموفق خواهد بود.
همچنین ببینید (SEE ALSO)
برای جزئیات مربوط به شرایط خطای احتمالی، pg_dump(1) را بررسی کنید.
| 2026 | PostgreSQL 18.6 |