PG_CHECKSUMS(1) PostgreSQL 18.6 Documentation PG_CHECKSUMS(1)

pg_checksums - فعال‌سازی، غیرفعال‌سازی یا بررسی چکسام‌های داده در یک کلاستر پایگاه داده PostgreSQL

pg_checksums [option...] [[-D | --pgdata]datadir]

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

هنگام اعتبارسنجی چکسام‌ها، تمام فایل‌های موجود در کلاستر پویش می‌شوند. هنگام فعال‌سازی چکسام‌ها، هر بلوک از فایل‌های رابطه (relation) با چکسام تغییریافته، در جا (in-place) بازنویسی می‌شود. غیرفعال‌سازی چکسام‌ها تنها فایل pg_control را به‌روزرسانی می‌کند.

گزینه‌های خط فرمان زیر در دسترس هستند:

-D directory
--pgdata=directory

دایرکتوری محل ذخیره‌سازی کلاستر پایگاه داده را مشخص می‌کند.

-c
--check

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

-d
--disable

چکسام‌ها را غیرفعال می‌کند.

-e
--enable

چکسام‌ها را فعال می‌کند.

-f filenode
--filenode=filenode

تنها چکسام‌ها را در رابطه‌ای با شناسه فایل‌نود filenode اعتبارسنجی می‌کند.

-N
--no-sync

به‌طور پیش‌فرض، pg_checksums منتظر می‌ماند تا تمام فایل‌ها به‌طور ایمن روی دیسک نوشته شوند. این گزینه باعث می‌شود که pg_checksums بدون انتظار بازگردد، که سریع‌تر است اما به این معنی است که یک کرش بعدی سیستم‌عامل می‌تواند دایرکتوری داده به‌روزرسانی‌شده را خراب باقی بگذارد. به‌طور کلی، این گزینه برای آزمایش مفید است اما نباید در یک محیط عملیاتی استفاده شود. این گزینه هنگام استفاده از --check هیچ تاثیری ندارد.

-P
--progress

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

--sync-method=method

هنگامی که روی fsync تنظیم شده باشد (که حالت پیش‌فرض است)، pg_checksums به‌طور بازگشتی تمام فایل‌های موجود در دایرکتوری داده را باز کرده و همگام‌سازی می‌کند. جستجوی فایل‌ها، پیوندهای نمادین مربوط به دایرکتوری WAL و هر tablespace پیکربندی‌شده را دنبال خواهد کرد.

در لینوکس، می‌توان در عوض از syncfs استفاده کرد تا از سیستم‌عامل خواسته شود کل فایل‌سیستم‌هایی را که شامل دایرکتوری داده، فایل‌های WAL و هر tablespace هستند، همگام‌سازی کند. برای اطلاعات بیشتر درباره نکاتی که هنگام استفاده از syncfs باید به آن‌ها توجه داشت، recovery_init_sync_method را ببینید.

این گزینه هنگامی که از --no-sync استفاده شده باشد، تاثیری ندارد.

-v
--verbose

خروجی پرگو (verbose) را فعال می‌کند. تمام فایل‌های بررسی‌شده را فهرست می‌کند.

-V
--version

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

-?
--help

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

PGDATA

دایرکتوری محل ذخیره‌سازی کلاستر پایگاه داده را مشخص می‌کند؛ می‌تواند با استفاده از گزینه -D نادیده گرفته و جایگزین شود.

PG_COLOR

مشخص می‌کند که آیا در پیام‌های عیب‌یابی از رنگ استفاده شود یا خیر. مقادیر ممکن عبارتند از always، auto و never.

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

هنگام استفاده از پیکربندی همگام‌سازی (replication) با ابزارهایی که کپی مستقیم از بلوک‌های فایل رابطه انجام می‌دهند (برای مثال pg_rewind(1))، در صورتی که عملیات به‌صورت هماهنگ در تمام گره‌ها انجام نشود، فعال‌سازی یا غیرفعال‌سازی چکسام‌ها می‌تواند منجر به خرابی صفحه (page corruption) به شکل چکسام‌های نادرست شود. بنابراین، هنگام فعال‌سازی یا غیرفعال‌سازی چکسام‌ها در یک ساختار replication، توصیه می‌شود تمام کلاسترها پیش از تغییر وضعیت هماهنگ همه آن‌ها متوقف شوند. همچنین از بین بردن تمام سرورهای آماده‌باش (standby)، انجام عملیات روی سرور اصلی (primary) و در نهایت ایجاد مجدد سرورهای standby از ابتدا نیز راهکاری ایمن است.

اگر pg_checksums در حین فعال‌سازی یا غیرفعال‌سازی چکسام‌ها لغو شده یا متوقف شود (kill شود)، پیکربندی چکسام داده کلاستر بدون تغییر باقی می‌ماند و pg_checksums می‌تواند برای انجام همان عملیات مجدداً اجرا شود.

2026 PostgreSQL 18.6