'\" t .\" Title: pg_resetwal .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets vsnapshot .\" Date: 2026 .\" Manual: PostgreSQL 18.6 Documentation .\" Source: PostgreSQL 18.6 .\" Language: Persian .\" .TH "PG_RESETWAL" "1" "2026" "PostgreSQL 18.6" "مستندات PostgreSQL 18.6" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "نام (NAME)" pg_resetwal \- بازنشانی گزارش پیش‌نویس (WAL) و سایر اطلاعات کنترلی کلاستر پایگاه‌داده PostgreSQL .SH "خلاصه دستور (SYNOPSIS)" .HP \w'\fBpg_resetwal\fR\ 'u \fBpg_resetwal\fR [\fB\-f\fR | \fB\-\-force\fR] [\fB\-n\fR | \fB\-\-dry\-run\fR] [\fIoption\fR...] [\fB\-D\fR | \fB\-\-pgdata\fR]\fIdatadir\fR .SH "توضیحات (DESCRIPTION)" .PP دستور \fBpg_resetwal\fR گزارش‌های پیش‌نویس (WAL) را پاک کرده و به صورت اختیاری برخی دیگر از اطلاعات کنترلی ذخیره‌شده در فایل pg_control را بازنشانی می‌کند\&. این تابع در مواردی که این فایل‌ها خراب شده باشند لازم می‌شود\&. این ابزار تنها باید به عنوان آخرین چاره استفاده شود، زمانی که سرور به دلیل چنین خرابی‌هایی راه‌اندازی نمی‌شود\&. .PP برخی گزینه‌ها، مانند \fB\-\-wal\-segsize\fR (به زیر مراجعه کنید)، می‌توانند برای تغییر برخی تنظیمات سراسری یک کلاستر پایگاه‌داده بدون نیاز به اجرای مجدد \fBinitdb\fR نیز استفاده شوند\&. در صورتی که هیچ‌یک از حالت‌های خطرناک ذکرشده در ادامه استفاده نشود، این کار می‌تواند با ایمنی روی یک کلاستر پایگاه‌داده سالم انجام شود\&. .PP اگر \fBpg_resetwal\fR روی دایرکتوری داده‌ای استفاده شود که سرور در آن به طور پاکیزه خاموش شده و فایل کنترل نیز سالم است، هیچ تاثیری بر محتوای سیستم پایگاه‌داده نخواهد داشت، به جز اینکه فایل‌های WAL بلااستفاده پاکسازی می‌شوند\&. هرگونه استفاده دیگر بالقوه خطرناک است و باید با احتیاط فراوان انجام گیرد\&. \fBpg_resetwal\fR پیش از کار بر روی دایرکتوری داده‌ای که در وضعیت خاموش شدن ناپاکیزه (unclean shutdown) است یا فایل کنترل آن خراب شده، نیازمند مشخص شدن گزینه \fB\-f\fR (اجبار) خواهد بود\&. .PP پس از اجرای این دستور روی یک دایرکتوری داده با WAL خراب یا فایل کنترل آسیب‌دیده، باید بتوان سرور را راه‌اندازی کرد، اما به خاطر داشته باشید که ممکن است پایگاه‌داده به دلیل تراکنش‌های نیمه‌اعمال‌شده (partially\-committed) حاوی داده‌های ناسازگار باشد\&. شما باید بلافاصله از داده‌های خود نسخه پشتیبان (dump) بگیرید، \fBinitdb\fR را اجرا کرده و بازیابی (restore) نمایید\&. پس از بازیابی، ناسازگاری‌ها را بررسی کرده و در صورت نیاز تعمیر کنید\&. .PP اگر \fBpg_resetwal\fR پیام دهد که نمی‌تواند داده‌های معتبری برای pg_control تعیین کند، می‌توانید با تعیین گزینه \fB\-f\fR (اجبار)، آن را مجبور به ادامه در هر صورت کنید\&. در این حالت مقادیر باورپذیر جایگزین داده‌های مفقود خواهند شد\&. می‌توان انتظار داشت بیشتر فیلدها مطابقت داشته باشند، اما ممکن است برای فیلدهای OID بعدی، شناسه و دوره (epoch) تراکنش بعدی، شناسه و آفست چندتراکنشی (multitransaction) بعدی، و فیلدهای مکان شروع WAL به مداخله دستی نیاز باشد\&. این فیلدها را می‌توان با گزینه‌هایی که در ادامه شرح داده شده تنظیم کرد\&. اگر قادر به تعیین مقادیر صحیح برای همه این فیلدها نیستید، همچنان می‌توان از \fB\-f\fR استفاده کرد، اما باید به پایگاه‌داده بازیابی‌شده با سوءظن حتی بیشتری نسبت به حالت عادی نگریست: تهیه یک نسخه پشتیبان و بازیابی فوری ضروری است\&. \fIهیچ\fR عملیات تغییر داده‌ای را پیش از تهیه dump در پایگاه‌داده اجرا نکنید، زیرا هر اقدام این چنینی احتمالاً خرابی را بدتر خواهد کرد\&. .PP این ابزار تنها توسط کاربری که سرور را نصب کرده قابل اجرا است، زیرا به دسترسی خواندن/نوشتن در دایرکتوری داده نیاز دارد\&. .SH "گزینه‌ها (OPTIONS)" .PP \fIdatadir\fR .br \fB\-D \fR\fB\fIdatadir\fR\fR .br \fB\-\-pgdata=\fR\fB\fIdatadir\fR\fR .RS 4 مکان دایرکتوری پایگاه‌داده را مشخص می‌کند\&. به دلایل امنیتی، باید دایرکتوری داده را در خط فرمان مشخص کنید\&. \fBpg_resetwal\fR از متغیر محیطی \fBPGDATA\fR استفاده نمی‌کند\&. .RE .PP \fB\-f\fR .br \fB\-\-force\fR .RS 4 دستور \fBpg_resetwal\fR را مجبور می‌کند حتی در موقعیت‌هایی که طبق توضیحات بالا می‌تواند خطرناک باشد، به کار ادامه دهد\&. به طور مشخص، اگر سرور به صورت پاکیزه خاموش نشده باشد یا اگر \fBpg_resetwal\fR نتواند داده‌های معتبری را برای pg_control تعیین کند، این گزینه برای ادامه کار الزامی است\&. .RE .PP \fB\-n\fR .br \fB\-\-dry\-run\fR .RS 4 گزینه \fB\-n\fR/\fB\-\-dry\-run\fR به \fBpg_resetwal\fR دستور می‌دهد مقادیر بازسازی‌شده از pg_control و مقادیری را که در آستانه تغییر هستند چاپ کند، و سپس بدون تغییر دادن هیچ چیزی خارج شود\&. این در درجه اول یک ابزار اشکال‌زدایی است، اما می‌تواند به عنوان یک بررسی سلامت اولیه پیش از اجازه دادن به \fBpg_resetwal\fR برای اجرای واقعی مفید باشد\&. .RE .PP \fB\-V\fR .br \fB\-\-version\fR .RS 4 نمایش اطلاعات نسخه و سپس خروج\&. .RE .PP \fB\-?\fR .br \fB\-\-help\fR .RS 4 نمایش راهنما و سپس خروج\&. .RE .PP گزینه‌های زیر تنها زمانی مورد نیاز هستند که \fBpg_resetwal\fR قادر به تعیین مقادیر مناسب با خواندن pg_control نباشد\&. مقادیر ایمن را می‌توان طبق توضیحات زیر تعیین کرد\&. برای مقادیری که آرگومان عددی می‌گیرند، مقادیر شانزده‌شانزدهی (hexadecimal) را می‌توان با استفاده از پیشوند 0x مشخص کرد\&. توجه داشته باشید که این دستورالعمل‌ها تنها برای اندازه بلوک استاندارد 8 kB صدق می‌کنند\&. .PP \fB\-c \fR\fB\fIxid\fR\fR\fB,\fR\fB\fIxid\fR\fR .br \fB\-\-commit\-timestamp\-ids=\fR\fB\fIxid\fR\fR\fB,\fR\fB\fIxid\fR\fR .RS 4 قدیمی‌ترین و جدیدترین شناسه‌های تراکنش که زمان ثبت (commit time) آن‌ها قابل بازیابی است را به صورت دستی تنظیم می‌کند\&. .sp یک مقدار ایمن برای قدیمی‌ترین شناسه تراکنشی که زمان ثبت آن قابل بازیابی است (بخش اول) را می‌توان با یافتن کوچک‌ترین نام فایل از نظر عددی در دایرکتوری pg_commit_ts زیر دایرکتوری داده تعیین کرد\&. در مقابل، یک مقدار ایمن برای جدیدترین شناسه تراکنشی که زمان ثبت آن قابل بازیابی است (بخش دوم) را می‌توان با یافتن بزرگ‌ترین نام فایل از نظر عددی در همان دایرکتوری تعیین کرد\&. نام فایل‌ها به صورت شانزده‌شانزدهی هستند\&. .RE .PP \fB\-e \fR\fB\fIxid_epoch\fR\fR .br \fB\-\-epoch=\fR\fB\fIxid_epoch\fR\fR .RS 4 دوره (epoch) شناسه تراکنش بعدی را به صورت دستی تنظیم می‌کند\&. .sp دوره شناسه تراکنش در واقع در هیچ کجای پایگاه‌داده ذخیره نمی‌شود مگر در فیلدی که توسط \fBpg_resetwal\fR تنظیم می‌شود، بنابراین تا جایی که به خود پایگاه‌داده مربوط است هر مقداری کار خواهد کرد\&. ممکن است برای اطمینان از عملکرد صحیح سیستم‌های تکثیر مانند Slony\-I و Skytools نیاز به تنظیم این مقدار داشته باشید \(em اگر چنین است، باید بتوان مقدار مناسب را از وضعیت پایگاه‌داده تکثیرشده پایین‌دستی به دست آورد\&. .RE .PP \fB\-l \fR\fB\fIwalfile\fR\fR .br \fB\-\-next\-wal\-file=\fR\fB\fIwalfile\fR\fR .RS 4 مکان شروع WAL را با تعیین نام فایل بخش بعدی WAL به صورت دستی تنظیم می‌کند\&. .sp نام فایل بخش بعدی WAL باید بزرگ‌تر از هر نام فایل بخش WAL دیگری باشد که در حال حاضر در دایرکتوری pg_wal زیر دایرکتوری داده وجود دارد\&. این نام‌ها نیز به صورت شانزده‌شانزدهی هستند و سه بخش دارند\&. بخش نخست \(lqtimeline ID\(rq (شناسه خط زمانی) است و معمولاً باید دست‌نخورده باقی بماند\&. به عنوان مثال، اگر 00000001000000320000004A بزرگ‌ترین ورودی در pg_wal باشد، از \-l 00000001000000320000004B یا بالاتر استفاده کنید\&. .sp توجه داشته باشید که هنگام استفاده از اندازه‌های غیرپیش‌فرض برای بخش‌های WAL، اعداد موجود در نام فایل‌های WAL با LSNهایی که توسط توابع و نماهای سیستمی گزارش می‌شوند متفاوت هستند\&. این گزینه یک نام فایل WAL دریافت می‌کند، نه یک LSN\&. .if n \{\ .sp .\} .RS 4 .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 \fBنکته\fR .ps -1 .br خود \fBpg_resetwal\fR فایل‌های موجود در pg_wal را بررسی کرده و یک مقدار پیش‌فرض فراتر از آخرین نام فایل موجود را برای تنظیم \fB\-l\fR انتخاب می‌کند\&. بنابراین، تنظیم دستی \fB\-l\fR تنها زمانی مورد نیاز خواهد بود که از فایل‌های بخش WAL که در حال حاضر در pg_wal موجود نیستند، مانند ورودی‌های یک آرشیو آفلاین، آگاه باشید؛ یا اینکه محتویات pg_wal به طور کامل از بین رفته باشد\&..sp .5v .RE .RE .PP \fB\-m \fR\fB\fImxid\fR\fR\fB,\fR\fB\fImxid\fR\fR .br \fB\-\-multixact\-ids=\fR\fB\fImxid\fR\fR\fB,\fR\fB\fImxid\fR\fR .RS 4 تنظیم دستی شناسه چندتراکنشی (multitransaction ID) بعدی و قدیمی‌ترین\&. .sp یک مقدار امن برای شناسه چندتراکنشی بعدی (بخش اول) را می‌توان با جستجوی بزرگ‌ترین نام فایل از نظر عددی در دایرکتوری pg_multixact/offsets در زیر دایرکتوری داده، افزودن یک واحد به آن، و سپس ضرب در 65536 (0x10000) تعیین کرد\&. برعکس، یک مقدار امن برای قدیمی‌ترین شناسه چندتراکنشی (بخش دوم \fB\-m\fR) را می‌توان با پیدا کردن کوچک‌ترین نام فایل از نظر عددی در همان دایرکتوری و ضرب آن در 65536 تعیین کرد\&. نام فایل‌ها به صورت هگزادسیمال هستند، بنابراین ساده‌ترین راه برای انجام این کار، مشخص کردن مقدار گزینه به صورت هگزادسیمال و افزودن چهار صفر به انتهای آن است\&. .RE .PP \fB\-o \fR\fB\fIoid\fR\fR .br \fB\-\-next\-oid=\fR\fB\fIoid\fR\fR .RS 4 تنظیم دستی OID بعدی\&. .sp هیچ راه به همان اندازه ساده‌ای برای تعیین OID بعدی که فراتر از بزرگ‌ترین مقدار در پایگاه‌داده باشد وجود ندارد، اما خوشبختانه دقیق بودن تنظیم next\-OID حیاتی نیست\&. .RE .PP \fB\-O \fR\fB\fImxoff\fR\fR .br \fB\-\-multixact\-offset=\fR\fB\fImxoff\fR\fR .RS 4 تنظیم دستی multitransaction offset بعدی\&. .sp یک مقدار امن را می‌توان با جستجوی بزرگ‌ترین نام فایل از نظر عددی در دایرکتوری pg_multixact/members در زیر دایرکتوری داده، افزودن یک واحد به آن و سپس ضرب در 52352 (0xCC80) تعیین کرد\&. نام فایل‌ها به صورت هگزادسیمال هستند\&. بر خلاف گزینه‌های دیگر، دستورالعمل ساده‌ای مانند افزودن صفر به انتهای مقدار وجود ندارد\&. .RE .PP \fB\-u \fR\fB\fIxid\fR\fR .br \fB\-\-oldest\-transaction\-id=\fR\fB\fIxid\fR\fR .RS 4 تنظیم دستی قدیمی‌ترین transaction ID منجمدنشده (unfrozen)\&. .sp یک مقدار امن را می‌توان با پیدا کردن کوچک‌ترین نام فایل از نظر عددی در دایرکتوری pg_xact در زیر دایرکتوری داده و سپس ضرب آن در 1048576 (0x100000) تعیین کرد\&. توجه داشته باشید که نام فایل‌ها به صورت هگزادسیمال هستند\&. معمولاً ساده‌ترین کار این است که مقدار گزینه نیز به صورت هگزادسیمال مشخص شود\&. برای مثال، اگر 0007 کوچک‌ترین مدخل در pg_xact باشد، مقدار \-u 0x700000 کار خواهد کرد (پنج صفر پایانی ضریب مناسب را فراهم می‌کنند)\&. .RE .PP \fB\-x \fR\fB\fIxid\fR\fR .br \fB\-\-next\-transaction\-id=\fR\fB\fIxid\fR\fR .RS 4 تنظیم دستی transaction ID بعدی\&. .sp یک مقدار امن را می‌توان با پیدا کردن بزرگ‌ترین نام فایل از نظر عددی در دایرکتوری pg_xact در زیر دایرکتوری داده، افزودن یک واحد به آن و سپس ضرب در 1048576 (0x100000) تعیین کرد\&. توجه داشته باشید که نام فایل‌ها به صورت هگزادسیمال هستند\&. معمولاً ساده‌ترین کار این است که مقدار گزینه نیز به صورت هگزادسیمال مشخص شود\&. برای مثال، اگر 0011 بزرگ‌ترین مدخل در pg_xact باشد، مقدار \-x 0x1200000 کار خواهد کرد (پنج صفر پایانی ضریب مناسب را فراهم می‌کنند)\&. .RE .PP \fB\-\-char\-signedness=\fR\fB\fIoption\fR\fR .RS 4 تنظیم دستی وضعیت علامت پیش‌فرض char\&. مقادیر ممکن عبارتند از signed و unsigned\&. .sp برای یک کلاستر پایگاه‌داده که توسط \fBpg_upgrade\fR از یک نسخه PostgreSQL قبل از 18 ارتقا یافته است، مقدار امن، وضعیت علامت پیش‌فرض char در پلتفرمی خواهد بود که کلاستر قبل از آن ارتقا روی آن اجرا می‌شد\&. برای تمام کلاسترهای دیگر، signed مقدار امن خواهد بود\&. با این حال، این گزینه منحصراً برای استفاده همراه با \fBpg_upgrade\fR است و معمولاً نباید به صورت دستی استفاده شود\&. .RE .PP \fB\-\-wal\-segsize=\fR\fB\fIwal_segment_size\fR\fR .RS 4 تنظیم اندازه جدید سگمنت WAL، بر حسب مگابایت\&. این مقدار باید توانی از 2 بین 1 و 1024 (مگابایت) باشد\&. برای اطلاعات بیشتر، همین گزینه را در \fBinitdb\fR(1) ببینید\&. .sp این گزینه می‌تواند همچنین برای تغییر اندازه سگمنت WAL یک کلاستر پایگاه‌داده موجود، به منظور جلوگیری از نیاز به اجرای مجدد \fBinitdb\fR استفاده شود\&. .if n \{\ .sp .\} .RS 4 .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 \fBنکته\fR .ps -1 .br در حالی که \fBpg_resetwal\fR نشانی آغازین WAL را فراتر از آخرین فایل سگمنت موجود WAL تنظیم خواهد کرد، برخی تغییرات اندازه سگمنت می‌توانند باعث استفاده مجدد از نام‌های فایل‌های قبلی WAL شوند\&. توصیه می‌شود در صورتی که همپوشانی نام فایل‌های WAL باعث ایجاد مشکل در راهبرد بایگانی شما می‌شود، از \fB\-l\fR همراه با این گزینه برای تنظیم دستی نشانی آغازین WAL استفاده کنید\&. .sp .5v .RE .RE.SH "محیط (ENVIRONMENT)" .PP \fBPG_COLOR\fR .RS 4 مشخص می‌کند که آیا در پیام‌های عیب‌یابی از رنگ استفاده شود یا خیر\&. مقادیر ممکن عبارتند از always، auto و never\&. .RE .SH "نکات (NOTES)" .PP این دستور نباید هنگامی که سرور در حال اجرا است استفاده شود\&. \fBpg_resetwal\fR در صورتی که یک فایل قفل سرور را در دایرکتوری داده پیدا کند، از راه‌اندازی خودداری خواهد کرد\&. اگر سرور دچار فروپاشی (crash) شده باشد ممکن است یک فایل قفل بر جای مانده باشد؛ در این حالت می‌توانید فایل قفل را حذف کنید تا به \fBpg_resetwal\fR اجازهٔ اجرا داده شود\&. اما پیش از انجام این کار، کاملاً مطمئن شوید که هیچ فرایند سروری هنوز فعال نیست\&. .PP \fBpg_resetwal\fR تنها با سرورهایی از همان نسخهٔ اصلی (major version) کار می‌کند\&. .SH "همچنین ببینید (SEE ALSO)" \fBpg_controldata\fR(1)