pg_resetwal
pg_resetwal â оÑиÑÑка жÑÑнала пÑедзапиÑи и дÑÑгой ÑпÑавлÑÑÑей инÑоÑмаÑии клаÑÑеÑа Postgres Pro
СинÑакÑиÑ
pg_resetwal [-f] [-n] [паÑамеÑÑ...] {[-D] каÑалог_даннÑÑ
}
ÐпиÑание
pg_resetwal оÑиÑÐ°ÐµÑ Ð¶ÑÑнал пÑедзапиÑи (WAL) и Ð¼Ð¾Ð¶ÐµÑ ÑбÑоÑиÑÑ Ð½ÐµÐºÐ¾ÑоÑÑÑ Ð´ÑÑгÑÑ ÑпÑавлÑÑÑÑÑ Ð¸Ð½ÑоÑмаÑиÑ, Ñ
ÑанÑÑÑÑÑÑ Ð² Ñайле pg_control. ÐÐ°Ð½Ð½Ð°Ñ ÑÑнкÑÐ¸Ñ Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð²Ð¾ÑÑÑебована пÑи повÑеждении ÑÑиÑ
Ñайлов. ÐÑполÑзоваÑÑ ÐµÑ Ð½Ñжно ÑолÑко как кÑайнÑÑ Ð¼ÐµÑÑ, когда запÑÑк ÑеÑвеÑа оказÑваеÑÑÑ Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶ÐµÐ½ из-за ÑÑого повÑеждениÑ.
ÐоÑле вÑÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ ÑÑой ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ Ð·Ð°Ð¿ÑÑк ÑеÑвеÑа, ÑкоÑее вÑего, бÑÐ´ÐµÑ Ð²Ð¾Ð·Ð¼Ð¾Ð¶ÐµÐ½, однако ÑÑÐ¾Ð¸Ñ ÑÑиÑÑваÑÑ, ÑÑо база даннÑÑ
Ð¼Ð¾Ð¶ÐµÑ ÑодеÑжаÑÑ Ð½ÐµÑоглаÑованнÑе даннÑе из-за ÑÑанзакÑий, заÑикÑиÑованнÑÑ
ÑаÑÑиÑно. ÐÑ Ð´Ð¾Ð»Ð¶Ð½Ñ Ð½ÐµÐ¼ÐµÐ´Ð»ÐµÐ½Ð½Ð¾ вÑгÑÑзиÑÑ Ð´Ð°Ð½Ð½Ñе, вÑполниÑÑ initdb, а заÑем воÑÑÑановиÑÑ Ð´Ð°Ð½Ð½Ñе. ÐоÑле ÑÑого пÑовеÑÑÑе ÑелоÑÑноÑÑÑ Ð±Ð°Ð·Ñ Ð¸ внеÑиÑе необÑ
одимÑе коÑÑекÑивÑ.
ÐÑÑ ÑÑилиÑÑ Ð¼Ð¾Ð¶ÐµÑ Ð·Ð°Ð¿ÑÑкаÑÑ ÑолÑко полÑзоваÑелÑ, ÑÑÑановивÑий ÑеÑвеÑ, Ñак как ей нÑÐ¶Ð½Ñ Ð¿Ñава запиÑи/ÑÑÐµÐ½Ð¸Ñ Ð² каÑалоге Ñ
ÑÐ°Ð½ÐµÐ½Ð¸Ñ Ð´Ð°Ð½Ð½ÑÑ
клаÑÑеÑа. Ð ÑелÑÑ
безопаÑноÑÑи каÑалог необÑ
одимо ÑказÑваÑÑ Ð² командной ÑÑÑоке. pg_resetwal не поддеÑÐ¶Ð¸Ð²Ð°ÐµÑ Ð¿ÐµÑеменнÑÑ Ð¾ÐºÑÑÐ¶ÐµÐ½Ð¸Ñ PGDATA.
ÐÑли pg_resetwal ÑообÑÐ°ÐµÑ Ð¾ невозможноÑÑи опÑеделиÑÑ Ð´Ð°Ð½Ð½Ñе из pg_control, ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ Ð¼Ð¾Ð¶Ð½Ð¾ запÑÑÑиÑÑ Ð¿ÑинÑдиÑелÑно, Ñказав -f. Ð ÑÑом ÑлÑÑае бÑдÑÑ Ð¸ÑполÑÐ·Ð¾Ð²Ð°Ð½Ñ Ð½Ð°Ð¸Ð±Ð¾Ð»ÐµÐµ веÑоÑÑнÑе знаÑениÑ. Ðни Ð´Ð¾Ð»Ð¶Ð½Ñ Ð¿Ð¾Ð´Ñ
одиÑÑ Ð´Ð»Ñ Ð±Ð¾Ð»ÑÑинÑÑва полей, но Ð´Ð»Ñ Ð½ÐµÐºÐ¾ÑоÑÑÑ
Ð¼Ð¾Ð¶ÐµÑ Ð¿Ð¾ÑÑебоваÑÑÑÑ Ð·Ð°Ð´Ð°ÑÑ Ð½ÑжнÑе знаÑÐµÐ½Ð¸Ñ Ñвно: ÑледÑÑÑее знаÑение OID, ID и ÑпоÑ
а ÑледÑÑÑей ÑÑанзакÑии, ID мÑлÑÑиÑÑанзакÑии и ÑмеÑение, наÑалÑнÑй адÑÐµÑ WAL. ÐÑи знаÑÐµÐ½Ð¸Ñ Ð¼Ð¾Ð¶Ð½Ð¾ ÑказаÑÑ Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ Ð¾Ð¿Ð¸ÑаннÑÑ
далее паÑамеÑÑов. ÐÑли иÑ
невозможно опÑеделиÑÑ, Ñо Ñлаг f позволÑÐµÑ ÑÑо обойÑи. Ðднако доÑÑовеÑноÑÑÑ Ð´Ð°Ð½Ð½ÑÑ
воÑÑÑановленной Ð±Ð°Ð·Ñ Ð½Ðµ гаÑанÑиÑÑеÑÑÑ: кÑайне необÑ
одимо незамедлиÑелÑно вÑгÑÑзиÑÑ Ð¸ заÑем воÑÑÑановиÑÑ Ð´Ð°Ð½Ð½Ñе. Ðе вÑполнÑйÑе никакиÑ
опеÑаÑий модиÑикаÑии до ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ð´Ð°Ð¼Ð¿Ð° даннÑÑ
, Ñак как ÑÑо Ð¼Ð¾Ð¶ÐµÑ Ð¿ÑивеÑÑи к еÑÑ Ð±Ð¾Ð»ÐµÐµ пеÑалÑнÑм поÑледÑÑвиÑм.
ÐаÑамеÑÑÑ
-fÐÑинÑдиÑелÑно вÑполнÑÑÑ
pg_resetwal, даже еÑли не ÑдаÑÑÑÑ Ð¿Ð¾Ð»ÑÑиÑÑ Ð¿ÑиемлемÑе даннÑе изpg_control, как опиÑано вÑÑе.-nС Ñлагом
-n(Ð½ÐµÑ Ð¾Ð¿ÐµÑаÑии) командаpg_resetwalоÑобÑÐ°Ð¶Ð°ÐµÑ Ð¸Ð·Ð²Ð»ÐµÑÑннÑе изpg_controlданнÑе, а Ñакже знаÑениÑ, коÑоÑÑе можно измениÑÑ. Режим полезен Ð´Ð»Ñ Ð¾Ñладки и ÑеÑÑиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð¿ÑедÑÑоÑÑей опеÑаÑии без ÑеалÑного пÑÐ¸Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ð¹.-V--versionÐоказаÑÑ Ð²ÐµÑÑиÑ, а заÑем завеÑÑиÑÑÑÑ.
-?--helpÐоказаÑÑ ÑпÑавкÑ, а заÑем завеÑÑиÑÑÑÑ.
СледÑÑÑие паÑамеÑÑÑ Ð½ÐµÐ¾Ð±Ñ
одимÑ, ÑолÑко когда pg_resetwal не Ð¼Ð¾Ð¶ÐµÑ Ð¾Ð¿ÑеделиÑÑ Ð¿Ð¾Ð´Ñ
одÑÑие знаÑениÑ, пÑоÑиÑав pg_control. ÐезопаÑнÑе знаÑÐµÐ½Ð¸Ñ Ð¼Ð¾Ð¶Ð½Ð¾ опÑеделиÑÑ, как опиÑано ниже. ÐÐ»Ñ Ð·Ð½Ð°Ñений, пÑинимаÑÑиÑ
ÑиÑловÑе аÑгÑменÑÑ, можно задаÑÑ ÑеÑÑнадÑаÑеÑиÑнÑе знаÑениÑ, добавив пÑеÑÐ¸ÐºÑ 0x.
-cxid,xidÐÑÑÑнÑÑ Ð·Ð°Ð´Ð°ÑÑ Ð¸Ð´ÐµÐ½ÑиÑикаÑоÑÑ ÑÑаÑейÑей и новейÑей ÑÑанзакÑий, Ð´Ð»Ñ ÐºÐ¾ÑоÑÑÑ Ð¼Ð¾Ð¶Ð½Ð¾ полÑÑиÑÑ Ð²ÑÐµÐ¼Ñ ÑикÑаÑии.
ÐезопаÑное знаÑение иденÑиÑикаÑоÑа ÑÑаÑейÑей ÑÑанзакÑии, Ð´Ð»Ñ ÐºÐ¾ÑоÑой можно полÑÑиÑÑ Ð²ÑÐµÐ¼Ñ ÑикÑаÑии (пеÑвÑй компоненÑ), можно опÑеделиÑÑ, Ð½Ð°Ð¹Ð´Ñ Ð½Ð°Ð¸Ð¼ÐµÐ½ÑÑее в ÑиÑловом виде Ð¸Ð¼Ñ Ñайла в каÑалоге
pg_commit_tsвнÑÑÑи каÑалога даннÑÑ . ÐезопаÑное знаÑение иденÑиÑикаÑоÑа новейÑей ÑÑанзакÑии, Ð´Ð»Ñ ÐºÐ¾ÑоÑой можно полÑÑиÑÑ Ð²ÑÐµÐ¼Ñ ÑикÑаÑии (вÑоÑой компоненÑ), можно опÑеделиÑÑ, найдÑ, напÑоÑив, наиболÑÑее в ÑиÑловом виде Ð¸Ð¼Ñ Ñайла в Ñом же каÑалоге. ЧиÑла в Ð¸Ð¼ÐµÐ½Ð°Ñ ÑÑÐ¸Ñ Ñайлов пÑедÑÑÐ°Ð²Ð»ÐµÐ½Ñ Ð² ÑеÑÑнадÑаÑеÑиÑном ÑоÑмаÑе.-eÑÐ¿Ð¾Ñ Ð°_xidÐÑÑÑнÑÑ Ð·Ð°Ð´Ð°ÑÑ ÑÐ¿Ð¾Ñ Ñ Ð² ID ÑледÑÑÑей ÑÑанзакÑии.
ÐÐ¿Ð¾Ñ Ð° иденÑиÑикаÑоÑов ÑÑанзакÑии не Ñ ÑаниÑÑÑ Ð² базе даннÑÑ Ð½Ð¸Ð³Ð´Ðµ, кÑоме полÑ, ÑÑÑанавливаемого командой
pg_resetwal, поÑÑÐ¾Ð¼Ñ ÐµÑли ÑаÑÑмаÑÑиваÑÑ ÑобÑÑвенно базÑ, допÑÑÑимÑм бÑÐ´ÐµÑ Ð»Ñбое знаÑение. ÐÑо знаÑение, возможно, понадобиÑÑÑ ÑкоÑÑекÑиÑоваÑÑ Ð´Ð»Ñ Ð¾Ð±ÐµÑпеÑÐµÐ½Ð¸Ñ Ð¿ÑавилÑной ÑабоÑÑ ÑиÑÑÐµÐ¼Ñ ÑепликаÑии, напÑимеÑ, Slony-I и Skytools. Ð ÑÑом ÑлÑÑае Ð¿Ð¾Ð´Ñ Ð¾Ð´ÑÑее знаÑение ÑледÑÐµÑ Ð¿Ð¾Ð»ÑÑиÑÑ Ð¸Ð· ÑоÑÑоÑÐ½Ð¸Ñ Ð½Ð¸Ð¶ÐµÐ»ÐµÐ¶Ð°Ñей ÑеплиÑиÑованной Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ .-lwalfileÐÑÑÑнÑÑ Ð·Ð°Ð´Ð°ÑÑ Ð½Ð°ÑалÑнÑй адÑÐµÑ WAL.
ÐаÑалÑнÑй адÑÐµÑ Ð¶ÑÑнала WAL должен пÑевÑÑаÑÑ Ð½Ð°Ð¸Ð±Ð¾Ð»ÑÑее знаÑение ÑегменÑа в имени Ñайла, ÑаÑположенного в каÑалоге
pg_wal. ÐÑи имена Ñоже пÑедÑÑÐ°Ð²Ð»ÐµÐ½Ñ Ð² ÑеÑÑнадÑаÑеÑиÑном ÑоÑмаÑе и ÑоÑÑоÑÑ Ð¸Ð· ÑÑÑÑ ÑаÑÑей. ÐеÑÐ²Ð°Ñ Ð¸Ð· Ð½Ð¸Ñ â «ID линии вÑемени», и ÐµÑ Ð¾Ð±ÑÑно не ÑледÑÐµÑ Ð¼ÐµÐ½ÑÑÑ. ÐапÑимеÑ, еÑли00000001000000320000004Aâ наиболÑÑее знаÑение вpg_wal, нÑжно ÑказаÑÑ-l 00000001000000320000004Bили болÑÑее ÑиÑло.ÐÑимеÑание
pg_resetwalиÑÐµÑ ÑÑеди Ñайлов каÑалогаpg_wal, и по ÑмолÑÐ°Ð½Ð¸Ñ Ð²ÑбиÑÐ°ÐµÑ Ð·Ð½Ð°Ñение Ð´Ð»Ñ Ñлага-l, идÑÑее ÑледÑÑÑим поÑле найденного. Таким обÑазом, вÑÑÑнÑÑ Ð·Ð°Ð´Ð°Ð²Ð°ÑÑ Ð¿Ð°ÑамеÑÑ-lнÑжно лиÑÑ ÐµÑли извеÑÑно о ÑÑÑеÑÑвовании ÑегменÑов WAL, оÑÑÑÑÑÑвÑÑÑÐ¸Ñ Ð² наÑÑоÑÑий Ð¼Ð¾Ð¼ÐµÐ½Ñ Ð² каÑалогеpg_wal(напÑимеÑ, они могÑÑ Ð½Ð°Ñ Ð¾Ð´Ð¸ÑÑÑ Ð² оÑделÑном аÑÑ Ð¸Ð²Ðµ); либо еÑли ÑодеÑжимоеpg_walбÑло полноÑÑÑÑ ÑÑеÑÑно.-mmxid,mxidÐÑÑÑнÑÑ Ð·Ð°Ð´Ð°ÑÑ ID ÑледÑÑÑей и ÑÑаÑейÑей мÑлÑÑиÑÑанзакÑии.
ÐезопаÑное знаÑение ÑледÑÑÑего иденÑиÑикаÑоÑа мÑлÑÑиÑÑанзакÑии (пеÑвÑй компоненÑ) можно вÑÑиÑлиÑÑ, Ð½Ð°Ð¹Ð´Ñ Ð½Ð°Ð¸Ð±Ð¾Ð»ÑÑее ÑиÑловое знаÑение ÑÑеди имÑн Ñайлов, ÑаÑположеннÑÑ Ð² каÑалоге
pg_multixact/offsets. Ð Ð½Ð°Ð¹Ð´ÐµÐ½Ð½Ð¾Ð¼Ñ Ð·Ð½Ð°ÑÐµÐ½Ð¸Ñ Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼Ð¾ пÑибавиÑÑ Ð¾Ð´Ð¸Ð½, заÑем ÑмножиÑÑ Ð½Ð° 65536 (0x10000). ÐÐ»Ñ Ð²ÑÑиÑÐ»ÐµÐ½Ð¸Ñ Ð±ÐµÐ·Ð¾Ð¿Ð°Ñного знаÑÐµÐ½Ð¸Ñ ID ÑÑаÑейÑей мÑлÑÑиÑÑанзакÑии (вÑоÑой компоненÑ-m) Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼Ð¾ найÑи наименÑÑее ÑиÑловое знаÑение ÑÑеди ÑÐµÑ Ð¶Ðµ Ñайлов, и ÑмножиÑÑ ÐµÐ³Ð¾ на 65536. Ðмена Ñайлов пÑедÑÑавлÑÑÑÑÑ Ð² ÑеÑÑнадÑаÑеÑиÑном ÑоÑмаÑе, Ñак ÑÑо знаÑÐµÐ½Ð¸Ñ Ð¿ÑоÑе ÑказÑваÑÑ Ð² нÑм же, добавив в конÑе ÑеÑÑÑе нÑлÑ.-ooidÐÑÑÑнÑÑ Ð·Ð°Ð´Ð°ÑÑ ÑледÑÑÑий OID.
Ðе ÑÑÑеÑÑвÑÐµÑ Ð¾ÑноÑиÑелÑно пÑоÑÑого ÑпоÑоба вÑÑиÑÐ»ÐµÐ½Ð¸Ñ ÑледÑÑÑего за наиболÑÑим из ÑÑÑеÑÑвÑÑÑÐ¸Ñ Ð·Ð½Ð°Ñением OID, однако ÑÑо некÑиÑиÑно.
-OmxoffÐÑÑÑнÑÑ Ð·Ð°Ð´Ð°ÑÑ ÑмеÑение ÑледÑÑÑей мÑлÑÑиÑÑанзакÑии.
ÐезопаÑное знаÑение можно опÑеделиÑÑ, Ð½Ð°Ð¹Ð´Ñ Ð½Ð°Ð¸Ð±Ð¾Ð»ÑÑее ÑиÑловое знаÑение в имени Ñайла в каÑалоге
pg_multixact/members, пÑибавив один и Ñмножив ÑезÑлÑÑÐ°Ñ Ð½Ð° 52352 (0xCC80). Ðмена Ñайлов пÑедÑÑÐ°Ð²Ð»ÐµÐ½Ñ Ð² ÑеÑÑнадÑаÑеÑиÑном ÑоÑмаÑе. ÐÑоÑÑого ÑеÑепÑа Ñ Ð¿Ñибавлением нÑлей в конÑе, как Ð´Ð»Ñ Ð´ÑÑÐ³Ð¸Ñ Ð¿Ð°ÑамеÑÑов, в данном ÑлÑÑае неÑ.-uxidÐÑÑÑнÑÑ Ð·Ð°Ð´Ð°ÑÑ ID ÑÑаÑейÑей незамоÑоженной ÑÑанзакÑии.
ÐезопаÑное знаÑение можно опÑеделиÑÑ, Ð½Ð°Ð¹Ð´Ñ Ð½Ð°Ð¸Ð¼ÐµÐ½ÑÑее ÑиÑловое знаÑение в имени Ñайла в подкаÑалоге
pg_xactкаÑалога даннÑÑ , а заÑем Ñмножив ÑезÑлÑÑÐ°Ñ Ð½Ð° 1048576 (0x100000). ÐамеÑÑÑе, ÑÑо имена Ñайлов пÑедÑÑÐ°Ð²Ð»ÐµÐ½Ñ Ð² ÑеÑÑнадÑаÑеÑиÑном ÑоÑмаÑе. ÐнаÑение ÑÑого паÑамеÑÑа обÑÑно Ñакже пÑоÑе задаваÑÑ Ð² ÑеÑÑнадÑаÑеÑиÑном виде. ÐапÑимеÑ, еÑли0007â наименÑÑее знаÑение вpg_xact, Ð¿Ð¾Ð´Ñ Ð¾Ð´ÑÑим знаÑением бÑдеÑ-u 0x700000(нÑжнÑй множиÑÐµÐ»Ñ Ð´Ð°ÑÑ Ð¿ÑÑÑ Ð¿Ð¾ÑÐ»ÐµÐ´Ð½Ð¸Ñ Ð½Ñлей).-xxidÐÑÑÑнÑÑ Ð·Ð°Ð´Ð°ÑÑ ID ÑледÑÑÑей ÑÑанзакÑии.
ÐезопаÑное знаÑение можно опÑеделиÑÑ, Ð½Ð°Ð¹Ð´Ñ Ð½Ð°Ð¸Ð±Ð¾Ð»ÑÑее ÑиÑловое знаÑение в имени Ñайла в подкаÑалоге
pg_xactкаÑалога даннÑÑ , пÑибавив один и Ñмножив ÑезÑлÑÑÐ°Ñ Ð½Ð° 1048576 (0x100000). ÐамеÑÑÑе, ÑÑо имена Ñайлов пÑедÑÑÐ°Ð²Ð»ÐµÐ½Ñ Ð² ÑеÑÑнадÑаÑеÑиÑном ÑоÑмаÑе. ÐнаÑение ÑÑого паÑамеÑÑа обÑÑно Ñакже пÑоÑе задаваÑÑ Ð² ÑеÑÑнадÑаÑеÑиÑном виде. ÐапÑимеÑ, еÑли0011â наиболÑÑее знаÑение вpg_xact, Ð¿Ð¾Ð´Ñ Ð¾Ð´ÑÑим знаÑением бÑдеÑ-x 0x1200000(нÑжнÑй множиÑÐµÐ»Ñ Ð´Ð°ÑÑ Ð¿ÑÑÑ Ð¿Ð¾ÑÐ»ÐµÐ´Ð½Ð¸Ñ Ð½Ñлей).
ÐамеÑаниÑ
ÐÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ Ð½ÐµÐ»ÑÐ·Ñ Ð²ÑполнÑÑÑ Ð½Ð° ÑабоÑаÑÑем ÑеÑвеÑе. pg_resetwal оÑÐºÐ»Ð¾Ð½Ð¸Ñ Ð²Ñполнение пÑи обнаÑÑженном блокиÑÑÑÑем Ñайле в каÑалоге Ñ
ÑÐ°Ð½ÐµÐ½Ð¸Ñ Ð´Ð°Ð½Ð½ÑÑ
. Ðногда пÑи аваÑии ÑеÑвеÑа блокиÑÑÑÑий Ñайл Ð¼Ð¾Ð¶ÐµÑ Ð¾ÑÑаÑÑÑÑ Ð² ÑиÑÑеме. Ð ÑÑом ÑлÑÑае необÑ
одимо ÑамоÑÑоÑÑелÑно ÑдалиÑÑ ÐµÐ³Ð¾, ÑÑÐ¾Ð±Ñ Ð´Ð°ÑÑ Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ÑÑÑ pg_resetwal оÑÑабоÑаÑÑ. ÐеÑед вÑполнением опеÑаÑии Ð´Ð²Ð°Ð¶Ð´Ñ Ð¿ÑовеÑÑÑе, ÑÑо ÑеÑÐ²ÐµÑ Ð¾ÑÑановлен.
pg_resetwal ÑабоÑÐ°ÐµÑ ÑолÑко Ñ ÑеÑвеÑами Ñой же оÑновной веÑÑии.