pg_resetxlog
pg_resetxlog â оÑиÑÑка жÑÑнала пÑедзапиÑи и дÑÑгой ÑпÑавлÑÑÑей инÑоÑмаÑии клаÑÑеÑа Postgres Pro
СинÑакÑиÑ
pg_resetxlog [-c xid,xid] [-f] [-n] [-o oid] [-x xid] [-e xid_epoch] [-m mxid,mxid] [-O mxoff] [-l xlogfile] {[-D] каÑалог_даннÑÑ
}
ÐпиÑание
pg_resetxlog оÑиÑÐ°ÐµÑ Ð¶ÑÑнал пÑедзапиÑи (WAL) и Ð¼Ð¾Ð¶ÐµÑ ÑбÑоÑиÑÑ Ð½ÐµÐºÐ¾ÑоÑÑÑ Ð´ÑÑгÑÑ ÑпÑавлÑÑÑÑÑ Ð¸Ð½ÑоÑмаÑиÑ, Ñ
ÑанÑÑÑÑÑÑ Ð² Ñайле pg_control. ÐÐ°Ð½Ð½Ð°Ñ ÑÑнкÑÐ¸Ñ Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð²Ð¾ÑÑÑебована пÑи повÑеждении ÑÑиÑ
Ñайлов. ÐÑполÑзоваÑÑ ÐµÑ Ð½Ñжно ÑолÑко как кÑайнÑÑ Ð¼ÐµÑÑ, когда запÑÑк ÑеÑвеÑа оказÑваеÑÑÑ Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶ÐµÐ½ из-за ÑÑого повÑеждениÑ.
ÐоÑле вÑÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ ÑÑой ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ Ð·Ð°Ð¿ÑÑк ÑеÑвеÑа, ÑкоÑее вÑего, бÑÐ´ÐµÑ Ð²Ð¾Ð·Ð¼Ð¾Ð¶ÐµÐ½, однако ÑÑÐ¾Ð¸Ñ ÑÑиÑÑваÑÑ, ÑÑо база даннÑÑ
Ð¼Ð¾Ð¶ÐµÑ ÑодеÑжаÑÑ Ð½ÐµÑоглаÑованнÑе даннÑе из-за ÑÑанзакÑий, заÑикÑиÑованнÑÑ
ÑаÑÑиÑно. ÐÑ Ð´Ð¾Ð»Ð¶Ð½Ñ Ð½ÐµÐ¼ÐµÐ´Ð»ÐµÐ½Ð½Ð¾ вÑгÑÑзиÑÑ Ð´Ð°Ð½Ð½Ñе, вÑполниÑÑ initdb, а заÑем воÑÑÑановиÑÑ Ð´Ð°Ð½Ð½Ñе. ÐоÑле ÑÑого пÑовеÑÑÑе ÑелоÑÑноÑÑÑ Ð±Ð°Ð·Ñ Ð¸ внеÑиÑе необÑ
одимÑе коÑÑекÑивÑ.
ÐÑÑ ÑÑилиÑÑ Ð¼Ð¾Ð¶ÐµÑ Ð·Ð°Ð¿ÑÑкаÑÑ ÑолÑко полÑзоваÑелÑ, ÑÑÑановивÑий ÑеÑвеÑ, Ñак как ей нÑÐ¶Ð½Ñ Ð¿Ñава запиÑи/ÑÑÐµÐ½Ð¸Ñ Ð² каÑалоге Ñ
ÑÐ°Ð½ÐµÐ½Ð¸Ñ Ð´Ð°Ð½Ð½ÑÑ
клаÑÑеÑа. Ð ÑелÑÑ
безопаÑноÑÑи каÑалог необÑ
одимо ÑказÑваÑÑ Ð² командной ÑÑÑоке. pg_resetxlog не поддеÑÐ¶Ð¸Ð²Ð°ÐµÑ Ð¿ÐµÑеменнÑÑ Ð¾ÐºÑÑÐ¶ÐµÐ½Ð¸Ñ PGDATA.
ÐÑли pg_resetxlog вÑÐ²Ð¾Ð´Ð¸Ñ ÑообÑение о невозможноÑÑи опÑеделиÑÑ Ð´Ð°Ð½Ð½Ñе из pg_control, Ñо ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ Ð¼Ð¾Ð¶Ð½Ð¾ запÑÑÑиÑÑ Ð¿ÑинÑдиÑелÑно, Ñказав -f. Ð ÑÑом ÑлÑÑае бÑдÑÑ Ð¸ÑполÑÐ·Ð¾Ð²Ð°Ð½Ñ Ð½Ð°Ð¸Ð±Ð¾Ð»ÐµÐµ веÑоÑÑнÑе знаÑениÑ. ÐÐ»Ñ Ð±Ð¾Ð»ÑÑинÑÑва полей ÑÑо ноÑмалÑно, но Ð´Ð»Ñ Ð½ÐµÐºÐ¾ÑоÑÑÑ
Ð¼Ð¾Ð¶ÐµÑ Ð¿Ð¾ÑÑебоваÑÑÑÑ Ñвное Ñказание: ÑледÑÑÑее знаÑение OID, ÑледÑÑÑее знаÑение ID ÑÑанзакÑии и вÑемени, ID мÑлÑÑиÑÑанзакÑии и ÑмеÑение, наÑалÑнÑй адÑÐµÑ WAL. ÐÑи знаÑÐµÐ½Ð¸Ñ Ð¼Ð¾Ð¶Ð½Ð¾ ÑказаÑÑ Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ Ð¾Ð¿Ð¸ÑаннÑÑ
далее паÑамеÑÑов. ÐÑли иÑ
невозможно опÑеделиÑÑ, Ñо Ñлаг f позволÑÐµÑ ÑÑо обойÑи, однако доÑÑовеÑноÑÑÑ Ð´Ð°Ð½Ð½ÑÑ
воÑÑÑановленной Ð±Ð°Ð·Ñ Ð¾ÑÑанеÑÑÑ Ð¿Ð¾Ð´ Ñомнением: незамедлиÑелÑÐ½Ð°Ñ Ð²ÑгÑÑзка Ñ Ð¿Ð¾ÑледÑÑÑим воÑÑÑановлением даннÑÑ
кÑайне необÑ
одимÑ. Ðе вÑполнÑйÑе никакиÑ
опеÑаÑий модиÑикаÑии до ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ð´Ð°Ð¼Ð¿Ð° даннÑÑ
, Ñак как ÑÑо Ð¼Ð¾Ð¶ÐµÑ Ð¿ÑивеÑÑи к еÑÑ Ð±Ð¾Ð»ÐµÐµ пеÑалÑнÑм поÑледÑÑвиÑм.
ЧÑÐ¾Ð±Ñ ÑказаÑÑ Ð·Ð½Ð°ÑÐµÐ½Ð¸Ñ ÑледÑÑÑиÑ
OID, ID ÑÑанзакÑии, вÑемени ÑÑанзакÑии, ID мÑлÑÑиÑÑанзакÑии, ÑмеÑÐµÐ½Ð¸Ñ Ð¼ÑлÑÑиÑÑанзакÑии, ID ÑÑаÑейÑей и новейÑей ÑÑанзакÑий, Ð´Ð»Ñ ÐºÐ¾ÑоÑÑÑ
можно полÑÑиÑÑ Ð²ÑÐµÐ¼Ñ ÑикÑаÑии, и наÑалÑного адÑеÑа WAL, иÑполÑзÑÑÑÑÑ ÑооÑвеÑÑÑвенно паÑамеÑÑÑ -o, -x, -e, -m, -O, -c и -l. ÐÑо ÑÑебÑеÑÑÑ, когда pg_resetxlog не Ð¼Ð¾Ð¶ÐµÑ ÑамоÑÑоÑÑелÑно опÑеделиÑÑ Ð¿Ð¾Ð´Ñ
одÑÑие знаÑениÑ, пÑоÑиÑав Ñайл pg_control. ÐезопаÑнÑе знаÑÐµÐ½Ð¸Ñ Ð¼Ð¾Ð¶Ð½Ð¾ полÑÑиÑÑ ÑледÑÑÑим обÑазом:
ЧÑÐ¾Ð±Ñ Ð¾Ð¿ÑеделиÑÑ ÑледÑÑÑее безопаÑное знаÑение иденÑиÑикаÑоÑа ÑÑанзакÑии (
-x), Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼Ð¾ в каÑалогеpg_clogнайÑи Ñайл, Ð¸Ð¼Ñ ÐºÐ¾ÑоÑого пÑедÑÑавлÑÐµÑ Ð½Ð°Ð¸Ð±Ð¾Ð»ÑÑее ÑиÑловое знаÑение, добавиÑÑ Ðº Ð½ÐµÐ¼Ñ Ð¾Ð´Ð¸Ð½ и заÑем ÑмножиÑÑ Ð½Ð° 1048576. Ðмена Ñайлов пÑедÑÑÐ°Ð²Ð»ÐµÐ½Ñ Ð² ÑеÑÑнадÑаÑеÑиÑном ÑоÑмаÑе, и знаÑение паÑамеÑÑа пÑоÑе ÑказÑваÑÑ Ð² нÑм же. ÐапÑимеÑ, еÑли вpg_clogнайден Ñайл0011, бÑÐ´ÐµÑ ÐºÐ¾ÑÑекÑнÑм знаÑение-x 0x1200000(пÑÑÑ Ð·Ð°Ð¼ÑкаÑÑÐ¸Ñ Ð½Ñлей пÑедÑÑавлÑÑÑ ÑÑебÑемÑй множиÑелÑ).ÐезопаÑное знаÑение ÑледÑÑÑего иденÑиÑикаÑоÑа мÑлÑÑиÑÑанзакÑии (пеÑвÑй аÑгÑÐ¼ÐµÐ½Ñ Ð¿Ð°ÑамеÑÑа
-m) можно вÑÑиÑлиÑÑ, Ð½Ð°Ð¹Ð´Ñ Ð½Ð°Ð¸Ð±Ð¾Ð»ÑÑее ÑиÑловое знаÑение ÑÑеди имÑн Ñайлов, ÑаÑположеннÑÑ Ð² каÑалогеpg_multixact/offsets. Ð Ð½Ð°Ð¹Ð´ÐµÐ½Ð½Ð¾Ð¼Ñ Ð·Ð½Ð°ÑÐµÐ½Ð¸Ñ Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼Ð¾ пÑибавиÑÑ Ð¾Ð´Ð¸Ð½, заÑем ÑмножиÑÑ Ð½Ð° 65536. ÐÐ»Ñ Ð²ÑÑиÑÐ»ÐµÐ½Ð¸Ñ Ð¶Ðµ наиболее ÑÑаÑÑего ID мÑлÑÑиÑÑанзакÑии (вÑоÑой аÑгÑÐ¼ÐµÐ½Ñ Ð¿Ð°ÑамеÑÑа-m), Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼Ð¾ найÑи наименÑÑее ÑиÑловое знаÑение ÑÑеди ÑÐµÑ Ð¶Ðµ Ñайлов, и ÑмножиÑÑ ÐµÐ³Ð¾ на 65536. Ðак бÑло опиÑано Ñанее, имена пÑедÑÑÐ°Ð²Ð»ÐµÐ½Ñ Ð² ÑеÑÑнадÑаÑеÑиÑном ÑоÑмаÑе, поÑÑÐ¾Ð¼Ñ Ð·Ð½Ð°ÑÐµÐ½Ð¸Ñ Ð°ÑгÑменÑов лÑÑÑе ÑказÑваÑÑ Ð² нÑм же, пÑипиÑав ÑеÑÑÑе замÑкаÑÑÐ¸Ñ Ð½ÑлÑ.ЧÑÐ¾Ð±Ñ Ð¾Ð¿ÑеделиÑÑ Ð±ÐµÐ·Ð¾Ð¿Ð°Ñное знаÑение ÑледÑÑÑего ÑмеÑÐµÐ½Ð¸Ñ (
-O), Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼Ð¾ найÑи наиболÑÑее ÑиÑловое знаÑение в имени Ñайла в каÑалогеpg_multixact/members, пÑибавиÑÑ Ð¾Ð´Ð¸Ð½, а заÑем ÑмножиÑÑ Ð½Ð° 52352. Ðмена Ñайлов Ñакже пÑедÑÑÐ°Ð²Ð»ÐµÐ½Ñ Ð² ÑеÑÑнадÑаÑеÑиÑном ÑоÑмаÑе, однако не ÑÑÑеÑÑвÑÐµÑ Ð¾Ð´Ð½Ð¾Ð·Ð½Ð°Ñного ÑеÑÐµÐ½Ð¸Ñ Ð² добавлении замÑкаÑÑÐ¸Ñ Ð½Ñлей, аналогиÑно Ñанее опиÑаннÑм.ÐезопаÑное знаÑение иденÑиÑикаÑоÑа ÑÑаÑейÑей ÑÑанзакÑии, Ð´Ð»Ñ ÐºÐ¾ÑоÑой можно полÑÑиÑÑ Ð²ÑÐµÐ¼Ñ ÑикÑаÑии (пеÑÐ²Ð°Ñ ÑаÑÑÑ
-c), можно опÑеделиÑÑ, Ð½Ð°Ð¹Ð´Ñ Ð½Ð°Ð¸Ð¼ÐµÐ½ÑÑее в ÑиÑловом виде Ð¸Ð¼Ñ Ñайла в каÑалогеpg_commit_tsвнÑÑÑи каÑалога даннÑÑ . ÐезопаÑное знаÑение иденÑиÑикаÑоÑа новейÑей ÑÑанзакÑии, Ð´Ð»Ñ ÐºÐ¾ÑоÑой можно полÑÑиÑÑ Ð²ÑÐµÐ¼Ñ ÑикÑаÑии (вÑоÑÐ°Ñ ÑаÑÑÑ-c), можно опÑеделиÑÑ, найдÑ, напÑоÑив, наиболÑÑее в ÑиÑловом виде Ð¸Ð¼Ñ Ñайла в Ñом же каÑалоге. ЧиÑла в Ð¸Ð¼ÐµÐ½Ð°Ñ ÑÑÐ¸Ñ Ñайлов, как и пÑедÑдÑÑÐ¸Ñ , пÑедÑÑÐ°Ð²Ð»ÐµÐ½Ñ Ð² ÑеÑÑнадÑаÑеÑиÑном ÑоÑмаÑе.ÐаÑалÑнÑй адÑÐµÑ Ð¶ÑÑнала WAL (
-l) должен пÑевÑÑаÑÑ Ð½Ð°Ð¸Ð±Ð¾Ð»ÑÑее знаÑение ÑегменÑа в имени Ñайла, ÑаÑположенного в каÑалогеpg_xlog. Ðмена Ñакже пÑедÑÑÐ°Ð²Ð»ÐµÐ½Ñ Ð² ÑеÑÑнадÑаÑеÑиÑном ÑоÑмаÑе и ÑоÑÑоÑÑ Ð¸Ð· ÑÑÑÑ ÑаÑÑей. ÐеÑÐ²Ð°Ñ Ð¸Ð· Ð½Ð¸Ñ â «ID вÑеменного инÑеÑвала» (обÑÑно оÑÑавлÑÑÑ Ð½ÐµÐ¸Ð·Ð¼ÐµÐ½Ð½Ñм). ÐапÑимеÑ, еÑли00000001000000320000004Aâ наиболÑÑее знаÑение вpg_xlog, Ñо можно иÑполÑзоваÑÑ-l 00000001000000320000004Bили болÑÑе.ÐÑимеÑание
pg_resetxlogиÑÐµÑ ÑÑеди Ñайлов каÑалогаpg_xlog, и по ÑмолÑÐ°Ð½Ð¸Ñ Ð²ÑбиÑÐ°ÐµÑ Ð·Ð½Ð°Ñение Ð´Ð»Ñ Ñлага-l, идÑÑее ÑледÑÑÑим поÑле найденного. ÐоÑÑекÑиÑовка знаÑÐµÐ½Ð¸Ñ Ð¿Ð°ÑамеÑÑа-lÑÑебÑеÑÑÑ Ð»Ð¸ÑÑ Ð² ÑиÑÑаÑии, когда извеÑÑно о ÑÑÑеÑÑвовании дÑÑÐ³Ð¸Ñ ÑегменÑов WAL, оÑÑÑÑÑÑвÑÑÑÐ¸Ñ Ð½Ð° Ð¼Ð¾Ð¼ÐµÐ½Ñ Ð² каÑалогеpg_xlog, напÑимеÑ, из аÑÑ Ð¸Ð²Ð½Ð¾Ð³Ð¾ Ñайла, или пÑи полной поÑеÑе даннÑÑ Ð²pg_xlog.Ðе ÑÑÑеÑÑвÑÐµÑ Ð¾ÑноÑиÑелÑно пÑоÑÑого ÑпоÑоба вÑÑиÑÐ»ÐµÐ½Ð¸Ñ ÑледÑÑÑего за наиболÑÑим из ÑÑÑеÑÑвÑÑÑÐ¸Ñ Ð·Ð½Ð°Ñением OID, однако ÑÑо некÑиÑиÑно.
ÐÐ¿Ð¾Ñ Ð° иденÑиÑикаÑоÑов ÑÑанзакÑии не Ñ ÑаниÑÑÑ Ð² базе даннÑÑ Ð½Ð¸Ð³Ð´Ðµ, кÑоме полÑ, ÑÑÑанавливаемого командой
pg_resetxlog, поÑÑÐ¾Ð¼Ñ Ð¿Ð¾ÐºÐ° ÑаÑÑмаÑÑиваеÑÑÑ Ñама база, допÑÑÑимÑм бÑÐ´ÐµÑ Ð»Ñбое знаÑение. ÐÑо знаÑение, возможно, понадобиÑÑÑ ÑкоÑÑекÑиÑоваÑÑ Ð´Ð»Ñ Ð¾Ð±ÐµÑпеÑÐµÐ½Ð¸Ñ Ð¿ÑавилÑной ÑабоÑÑ ÑиÑÑÐµÐ¼Ñ ÑепликаÑии, напÑимеÑ, Slony-I и Skytools. Ð ÑÑом ÑлÑÑае Ð¿Ð¾Ð´Ñ Ð¾Ð´ÑÑее знаÑение ÑледÑÐµÑ Ð¿Ð¾Ð»ÑÑиÑÑ Ð¸Ð· ÑоÑÑоÑÐ½Ð¸Ñ Ð½Ð¸Ð¶ÐµÐ»ÐµÐ¶Ð°Ñей ÑеплиÑиÑованной Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ .
С Ñлагом -n (Ð½ÐµÑ Ð¾Ð¿ÐµÑаÑии) команда pg_resetxlog оÑобÑÐ°Ð¶Ð°ÐµÑ Ð¸Ð·Ð²Ð»ÐµÑÑннÑе из pg_control даннÑе, а Ñакже знаÑениÑ, коÑоÑÑе можно измениÑÑ. Режим полезен Ð´Ð»Ñ Ð¾Ñладки и ÑеÑÑиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð¿ÑедÑÑоÑÑей опеÑаÑии без ÑеалÑного пÑÐ¸Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ð¹.
Флаги -V и --version вÑводÑÑ Ð²ÐµÑÑÐ¸Ñ pg_resetxlog и пÑеÑÑваÑÑ Ð´Ð°Ð»ÑнейÑее вÑполнение. ÐлÑÑи -? и --help вÑводÑÑ ÑпÑÐ°Ð²ÐºÑ Ð¿Ð¾ поддеÑживаемÑм аÑгÑменÑам.
ÐамеÑаниÑ
ÐÐ¾Ð¼Ð°Ð½Ð´Ñ Ð½ÐµÐ»ÑÐ·Ñ Ð²ÑполнÑÑÑ Ð½Ð° ÑабоÑаÑÑем ÑеÑвеÑе. pg_resetxlog оÑÐºÐ»Ð¾Ð½Ð¸Ñ Ð²Ñполнение пÑи обнаÑÑженном блокиÑÑÑÑем Ñайле в каÑалоге Ñ
ÑÐ°Ð½ÐµÐ½Ð¸Ñ Ð´Ð°Ð½Ð½ÑÑ
. Ðногда пÑи аваÑии ÑеÑвеÑа блокиÑÑÑÑий Ñайл Ð¼Ð¾Ð¶ÐµÑ Ð¾ÑÑаÑÑÑÑ Ð² ÑиÑÑеме. Ð ÑÑом ÑлÑÑае необÑ
одимо ÑамоÑÑоÑÑелÑно ÑдалиÑÑ ÐµÐ³Ð¾, ÑÑÐ¾Ð±Ñ Ð´Ð°ÑÑ Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ÑÑÑ pg_resetxlog оÑÑабоÑаÑÑ. ÐеÑед вÑполнением опеÑаÑии Ð´Ð²Ð°Ð¶Ð´Ñ ÑбедиÑеÑÑ, ÑÑо ÑеÑÐ²ÐµÑ Ð¾ÑÑановлен.
pg_resetxlog ÑабоÑÐ°ÐµÑ ÑолÑко Ñ ÑеÑвеÑами Ñой же оÑновной веÑÑии.