| PG_VERIFYBACKUP(1) | PostgreSQL 18.6 Documentation | PG_VERIFYBACKUP(1) |
نام (NAME)
pg_verifybackup - بررسی صحت و یکپارچگی نسخه پشتیبان پایه از یک کلاستر PostgreSQL
خلاصه دستور (SYNOPSIS)
pg_verifybackup [option...]
توضیحات (DESCRIPTION)
ابزار 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 تولید میکند کار کند.
گزینهها (OPTIONS)
pg_verifybackup آرگومانهای خط فرمان زیر را میپذیرد:
-e
--exit-on-error
-F format
--format=format
p
plain
t
tar
-i path
--ignore=path
-m path
--manifest-path=path
-n
--no-parse-wal
-P
--progress
این گزینه را نمیتوان همراه با گزینه --quiet به کار برد.
-q
--quiet
-s
--skip-checksums
-w path
--wal-directory=path
گزینههای دیگری نیز در دسترس هستند:
-V
--version
-?
--help
مثالها (EXAMPLES)
برای تهیه یک نسخه پشتیبان پایه از سرور در 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
همچنین ببینید (SEE ALSO)
| 2026 | PostgreSQL 18.6 |