PG_VERIFYBACKUP(1) PostgreSQL 18.6 Documentation PG_VERIFYBACKUP(1)

pg_verifybackup - بررسی صحت و یکپارچگی نسخه پشتیبان پایه از یک کلاستر PostgreSQL

pg_verifybackup [option...]

ابزار pg_verifybackup برای بررسی صحت و یکپارچگی نسخه پشتیبان تهیه شده از یک کلاستر پایگاه‌داده به کمک pg_basebackup در مقایسه با فایل backup_manifest تولید شده توسط سرور در زمان پشتیبان‌گیری به کار می‌رود. نسخه پشتیبان ممکن است در قالب «plain» یا «tar» ذخیره شده باشد؛ این شامل نسخه‌های پشتیبان در قالب tar که با هر الگوریتم پشتیبانی‌شده توسط pg_basebackup فشرده شده‌اند نیز می‌شود. با این حال، در حال حاضر، اعتبارسنجی WAL تنها برای نسخه‌های پشتیبان با قالب plain پشتیبانی می‌شود. بنابراین، اگر نسخه پشتیبان در قالب tar ذخیره شده باشد، باید از گزینه -n, --no-parse-wal استفاده شود.

توجه به این نکته حائز اهمیت است که اعتبارسنجی انجام‌شده توسط pg_verifybackup شامل تمام بررسی‌هایی که یک سرور در حال اجرا هنگام تلاش برای استفاده از نسخه پشتیبان انجام می‌دهد نیست و نمی‌تواند باشد. حتی در صورت استفاده از این ابزار، همچنان باید بازیابی‌های آزمایشی را انجام دهید و مطمئن شوید که پایگاه‌های داده حاصل مطابق انتظار کار می‌کنند و حاوی داده‌های صحیح هستند. با این حال، pg_verifybackup می‌تواند بسیاری از مشکلاتی را که معمولاً به دلیل نقص در رسانه‌های ذخیره‌سازی یا خطای کاربر رخ می‌دهند، شناسایی کند.

اعتبارسنجی نسخه پشتیبان در چهار مرحله انجام می‌پذیرد. ابتدا، pg_verifybackup فایل backup_manifest را می‌خواند. اگر این فایل وجود نداشته باشد، قابل خواندن نباشد، ساختار نامعتبری داشته باشد، شناسه سیستم (system identifier) آن با pg_control موجود در دایرکتوری پشتیبان مطابقت نداشته باشد، یا اعتبارسنجی آن در برابر چکسام (checksum) داخلی خودش با شکست مواجه شود، pg_verifybackup با یک خطای مهلک متوقف خواهد شد.

در مرحله دوم، pg_verifybackup تلاش می‌کند تا بررسی کند فایل‌های داده‌ای که در حال حاضر روی دیسک ذخیره شده‌اند، دقیقاً همان فایل‌هایی باشند که سرور قصد ارسال آن‌ها را داشته است، البته با چند استثنا که در ادامه شرح داده شده‌اند. فایل‌های اضافی و ناموجود، به جز مواردی معدود، شناسایی خواهند شد. این مرحله وجود یا عدم وجود، یا هرگونه تغییر در postgresql.auto.conf، standby.signal و recovery.signal را نادیده می‌گیرد، زیرا انتظار می‌رود که این فایل‌ها ممکن است به عنوان بخشی از فرایند پشتیبان‌گیری ایجاد یا دستکاری شده باشند. همچنین در مورد وجود فایل backup_manifest در دایرکتوری مقصد یا هر چیزی درون pg_wal اعتراضی نخواهد کرد، حتی اگر این فایل‌ها در مانیفست پشتیبان فهرست نشده باشند. تنها فایل‌ها بررسی می‌شوند؛ وجود یا عدم وجود دایرکتوری‌ها بررسی نمی‌شود مگر به‌طور غیرمستقیم: اگر دایرکتوری مفقود باشد، تمام فایل‌هایی که باید درون آن می‌بودند نیز ضرورتاً مفقود خواهند بود.

سپس، pg_verifybackup چکسام تمام فایل‌ها را محاسبه کرده، آن‌ها را با مقادیر ثبت‌شده در مانیفست مقایسه می‌کند، و برای هر فایلی که چکسام محاسبه‌شده آن با چکسام ذخیره‌شده در مانیفست تطابق نداشته باشد خطا صادر می‌کند. این مرحله برای فایل‌هایی که در مرحله پیشین خطاساز بوده‌اند اجرا نمی‌شود، زیرا از پیش مشخص شده که مشکل دارند. فایل‌هایی نیز که در مرحله قبل نادیده گرفته شده بودند، در این مرحله نیز نادیده انگاشته می‌شوند.

در نهایت، pg_verifybackup از مانیفست استفاده می‌کند تا بررسی کند که رکوردهای لاگ پیش از نوشتن (write-ahead log) مورد نیاز برای بازیابی نسخه پشتیبان موجود بوده و قابل خواندن و تجزیه (parse) باشند. فایل backup_manifest حاوی اطلاعاتی درباره رکوردهای وقایع‌نگاری مورد نیاز است و pg_verifybackup از این اطلاعات برای فراخوانی pg_waldump جهت تجزیه آن رکوردهای write-ahead log استفاده خواهد کرد. پرچم --quiet به کار برده خواهد شد تا pg_waldump تنها خطاها را گزارش کند و هیچ خروجی دیگری تولید ننماید. در حالی که این سطح از اعتبارسنجی برای شناسایی مشکلات آشکار مانند فایل مفقود یا فایلی که چکسام‌های داخلی آن همخوانی ندارند کافی است، آن‌قدر جامع نیست که بتواند هر مشکل ممکنی را که ممکن است در حین بازیابی رخ دهد تشخیص دهد. به عنوان مثال، باگی در سرور که رکوردهای لاگ پیش از نوشتن با چکسام معتبر اما با اقدامات نامفهوم و بی‌معنی تولید می‌کند، با این روش قابل تشخیص نیست.

توجه داشته باشید که اگر فایل‌های اضافی WAL که برای بازیابی نسخه پشتیبان مورد نیاز نیستند در مسیر موجود باشند، توسط این ابزار بررسی نخواهند شد، هرچند یک فراخوانی جداگانه از pg_waldump می‌تواند برای این منظور استفاده شود. همچنین در نظر داشته باشید که اعتبارسنجی WAL وابسته به نسخه است: شما باید از نسخه‌ای از pg_verifybackup و در نتیجه pg_waldump استفاده کنید که مربوط به همان نسخه پشتیبان در حال بررسی باشد. در مقابل، بررسی‌های یکپارچگی فایل‌های داده باید با هر نسخه‌ای از سرور که فایل backup_manifest تولید می‌کند کار کند.

pg_verifybackup آرگومان‌های خط فرمان زیر را می‌پذیرد:

-e
--exit-on-error

به محض شناسایی اولین مشکل در نسخه پشتیبان از برنامه خارج می‌شود. در صورت مشخص نشدن این گزینه، pg_verifybackup حتی پس از کشف مشکل به بررسی نسخه پشتیبان ادامه داده و همه مشکلات شناسایی‌شده را به عنوان خطا گزارش خواهد کرد.

-F format
--format=format

قالب نسخه پشتیبان را مشخص می‌کند. format می‌تواند یکی از موارد زیر باشد:

p
plain

نسخه پشتیبان شامل فایل‌های ساده (plain) با همان ساختار و چیدمان دایرکتوری داده و tablespaceهای سرور مبدأ است.

t
tar

نسخه پشتیبان شامل فایل‌های tar است که ممکن است فشرده‌سازی شده باشند. یک نسخه پشتیبان معتبر شامل دایرکتوری داده اصلی در فایلی به نام base.tar، فایل‌های WAL در pg_wal.tar و فایل‌های tar جداگانه برای هر tablespace است که بر اساس OID مربوط به tablespace نام‌گذاری شده‌اند. در صورتی که نسخه پشتیبان فشرده شده باشد، پسوند فشرده‌سازی مربوطه به انتهای نام هر فایل افزوده می‌شود.

-i path
--ignore=path

هنگام مقایسه فهرست فایل‌های داده موجود در نسخه پشتیبان با موارد فهرست‌شده در فایل backup_manifest، فایل یا دایرکتوری مشخص‌شده را که باید به صورت نام مسیر نسبی بیان شود نادیده می‌گیرد. اگر یک دایرکتوری مشخص شود، این گزینه بر تمام زیردرخت منشعب از آن مکان تأثیر می‌گذارد. در صورت مطابقت نام مسیر نسبی با مسیر تعیین‌شده، پیام‌های خطا در مورد فایل‌های اضافی، فایل‌های مفقود، تفاوت در اندازه فایل یا عدم تطابق چکسام نادیده گرفته خواهند شد. این گزینه می‌تواند چندین بار مشخص شود.

-m path
--manifest-path=path

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

-n
--no-parse-wal

برای تجزیه داده‌های write-ahead log که برای بازیابی از این نسخه پشتیبان نیاز خواهند بود، تلاشی نمی‌کند.

-P
--progress

گزارش پیشرفت را فعال می‌کند. فعال کردن این گزینه در حین اعتبارسنجی چکسام‌ها یک گزارش پیشرفت ارائه می‌دهد.

این گزینه را نمی‌توان همراه با گزینه --quiet به کار برد.

-q
--quiet

هنگامی که یک نسخه پشتیبان با موفقیت تأیید شد، هیچ پیامی را چاپ نمی‌کند.

-s
--skip-checksums

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

-w path
--wal-directory=path

تلاش می‌کند تا فایل‌های WAL ذخیره‌شده در دایرکتوری مشخص‌شده را به جای دایرکتوری pg_wal تجزیه نماید. این قابلیت در صورتی که نسخه پشتیبان در مکانی مجزا از آرشیو WAL نگهداری شود مفید است.

گزینه‌های دیگری نیز در دسترس هستند:

-V
--version

نسخه pg_verifybackup را چاپ کرده و خارج می‌شود.

-?
--help

راهنمایی درباره آرگومان‌های خط فرمان pg_verifybackup را نمایش داده و خارج می‌شود.

برای تهیه یک نسخه پشتیبان پایه از سرور در mydbserver و بررسی صحت و یکپارچگی نسخه پشتیبان:

$ pg_basebackup -h mydbserver -D /usr/local/pgsql/data
$ pg_verifybackup /usr/local/pgsql/data

برای تهیه یک نسخه پشتیبان پایه از سرور در mydbserver، انتقال مانیفست به مکانی خارج از دایرکتوری پشتیبان و سپس بررسی نسخه پشتیبان:

$ pg_basebackup -h mydbserver -D /usr/local/pgsql/backup1234
$ mv /usr/local/pgsql/backup1234/backup_manifest /my/secure/location/backup_manifest.1234
$ pg_verifybackup -m /my/secure/location/backup_manifest.1234 /usr/local/pgsql/backup1234

برای بررسی یک نسخه پشتیبان در حالی که فایلی که به صورت دستی به دایرکتوری پشتیبان اضافه شده است نادیده گرفته می‌شود و همچنین بررسی چکسام انجام نمی‌گیرد:

$ pg_basebackup -h mydbserver -D /usr/local/pgsql/data
$ edit /usr/local/pgsql/data/note.to.self
$ pg_verifybackup --ignore=note.to.self --skip-checksums /usr/local/pgsql/data

pg_basebackup(1)

2026 PostgreSQL 18.6