18.5. ÐÑÑнал пÑедзапиÑи #
Ðа дополниÑелÑной инÑоÑмаÑией о наÑÑÑойке ÑÑÐ¸Ñ Ð¿Ð°ÑамеÑÑов обÑаÑиÑеÑÑ Ðº РазделÑ 28.5.
18.5.1. ÐаÑамеÑÑÑ #
wal_level(enum) #ÐаÑамеÑÑ
wal_levelопÑеделÑеÑ, как много инÑоÑмаÑии запиÑÑваеÑÑÑ Ð² WAL. Со знаÑениемreplica(по ÑмолÑаниÑ) в жÑÑнал запиÑÑваÑÑÑÑ Ð´Ð°Ð½Ð½Ñе, Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼Ñе Ð´Ð»Ñ Ð¿Ð¾Ð´Ð´ÐµÑжки аÑÑ Ð¸Ð²Ð¸ÑÐ¾Ð²Ð°Ð½Ð¸Ñ WAL и ÑепликаÑии, вклÑÑÐ°Ñ Ð·Ð°Ð¿ÑоÑÑ ÑолÑко на ÑÑение на ведомом ÑеÑвеÑе. ÐаÑианÑminimalоÑÑавлÑÐµÑ ÑолÑко инÑоÑмаÑиÑ, Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼ÑÑ Ð´Ð»Ñ Ð²Ð¾ÑÑÑÐ°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð¿Ð¾Ñле ÑÐ±Ð¾Ñ Ð¸Ð»Ð¸ аваÑийного оÑклÑÑениÑ. ÐаконеÑ,logicalдобавлÑÐµÑ Ð¸Ð½ÑоÑмаÑиÑ, ÑÑебÑÑÑÑÑÑÑ Ð´Ð»Ñ Ð¿Ð¾Ð´Ð´ÐµÑжки логиÑеÑкого декодиÑованиÑ. ÐаждÑй поÑледÑÑÑий ÑÑÐ¾Ð²ÐµÐ½Ñ Ð²ÐºÐ»ÑÑÐ°ÐµÑ Ð¸Ð½ÑоÑмаÑиÑ, запиÑÑваемÑÑ Ð½Ð° вÑÐµÑ ÑÑовнÑÑ Ð½Ð¸Ð¶Ðµ. ÐадаÑÑ ÑÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð¼Ð¾Ð¶Ð½Ð¾ ÑолÑко пÑи запÑÑке ÑеÑвеÑа.Ðа ÑÑовне
minimalгенеÑиÑÑеÑÑÑ Ð¼Ð¸Ð½Ð¸Ð¼Ð°Ð»ÑнÑй обÑÑм WAL. РжÑÑнал не запиÑÑваеÑÑÑ Ð¸Ð½ÑоÑмаÑÐ¸Ñ Ð¾ пÑоизводимÑÑ Ð´Ð¾ конÑа ÑÑанзакÑии опеÑаÑиÑÑ Ñ Ð¿Ð¾ÑÑоÑннÑми оÑноÑениÑми, ÑозданнÑми или пеÑезапиÑаннÑми в данной ÑÑанзакÑии. ÐÑо позволÑÐµÑ Ð·Ð½Ð°ÑиÑелÑно ÑÑкоÑиÑÑ Ñакие опеÑаÑии (Ñм. ÐодÑаздел 14.4.7). Ð¢Ð°ÐºÐ°Ñ Ð¾Ð¿ÑимизаÑÐ¸Ñ Ð²ÐºÐ»ÑÑаеÑÑÑ Ð¿Ð¾Ñле ÑледÑÑÑÐ¸Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´:ALTER ... SET TABLESPACECLUSTERCREATE TABLEREFRESH MATERIALIZED VIEW(безCONCURRENTLY)REINDEXTRUNCATEÐднако минималÑнÑй жÑÑнал не бÑÐ´ÐµÑ ÑодеÑжаÑÑ Ð´Ð¾ÑÑаÑоÑно инÑоÑмаÑии Ð´Ð»Ñ Ð²Ð¾ÑÑÑÐ°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð½Ð° Ð¼Ð¾Ð¼ÐµÐ½Ñ Ð²Ñемени, поÑÑÐ¾Ð¼Ñ Ð´Ð»Ñ Ð²ÐºÐ»ÑÑÐµÐ½Ð¸Ñ Ð½ÐµÐ¿ÑеÑÑвной аÑÑ Ð¸Ð²Ð°Ñии (archive_mode) и поÑоковой двоиÑной ÑепликаÑии Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼Ð¾ иÑполÑзоваÑÑ ÑÑÐ¾Ð²ÐµÐ½Ñ Ð½Ðµ ниже
replica. ФакÑиÑеÑки ÑеÑÐ²ÐµÑ Ð´Ð°Ð¶Ðµ не запÑÑÑиÑÑÑ Ð² ÑÑом Ñежиме, еÑли знаÑениеmax_wal_sendersоÑлиÑно Ð¾Ñ Ð½ÑлÑ. ÐамеÑÑÑе, ÑÑо в ÑлÑÑае Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð·Ð½Ð°ÑениÑwal_levelнаminimalÑделаннÑе Ñанее базовÑе копии ÑÑановÑÑÑÑ Ð½ÐµÐ¿ÑигоднÑми Ð´Ð»Ñ Ð²Ð¾ÑÑÑÐ°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð½Ð° Ð¼Ð¾Ð¼ÐµÐ½Ñ Ð²Ñемени и Ð´Ð»Ñ ÑезеÑвнÑÑ ÑеÑвеÑов.Ðа ÑÑовне
logicalв жÑÑнал запиÑÑваеÑÑÑ Ñа же инÑоÑмаÑиÑ, ÑÑо и на ÑÑовнеreplica, плÑÑ Ð¸Ð½ÑоÑмаÑиÑ, Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼Ð°Ñ Ð´Ð»Ñ Ð¸Ð·Ð²Ð»ÐµÑÐµÐ½Ð¸Ñ Ð¸Ð· жÑÑнала набоÑов логиÑеÑÐºÐ¸Ñ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ð¹. ÐовÑÑение ÑÑÐ¾Ð²Ð½Ñ Ð´Ð¾logicalпÑÐ¸Ð²Ð¾Ð´Ð¸Ñ Ðº знаÑиÑелÑÐ½Ð¾Ð¼Ñ ÑвелиÑÐµÐ½Ð¸Ñ Ð¾Ð±ÑÑма WAL, оÑобенно еÑли многие ÑаблиÑÑ Ð¸Ð¼ÐµÑÑ Ñ Ð°ÑакÑеÑиÑÑикÑREPLICA IDENTITY FULLи вÑполнÑеÑÑÑ Ð¼Ð½Ð¾Ð¶ÐµÑÑво командUPDATEиDELETE.РвÑпÑÑÐºÐ°Ñ Ð´Ð¾ 9.6 Ð´Ð»Ñ ÑÑого паÑамеÑÑа допÑÑкалиÑÑ Ð·Ð½Ð°ÑениÑ
archiveиhot_standby. ÐÑи знаÑÐµÐ½Ð¸Ñ Ð¿Ð¾-пÑÐµÐ¶Ð½ÐµÐ¼Ñ Ð¿ÑинимаÑÑÑÑ, но ÑепеÑÑ Ð¾ÑобÑажаÑÑÑÑ Ð² знаÑениеreplica.fsync(boolean) #ÐÑли ÑÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ ÑÑÑановлен, ÑеÑÐ²ÐµÑ Postgres Pro ÑÑаÑаеÑÑÑ Ð´Ð¾Ð±Ð¸ÑÑÑÑ, ÑÑÐ¾Ð±Ñ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð±Ñли запиÑÐ°Ð½Ñ Ð½Ð° диÑк ÑизиÑеÑки, вÑполнÑÑ ÑиÑÑемнÑе вÑзовÑ
fsync()или дÑÑгими подобнÑми меÑодами (Ñм. wal_sync_method). ÐÑо даÑÑ Ð³Ð°ÑанÑиÑ, ÑÑо клаÑÑÐµÑ Ð±Ð°Ð· даннÑÑ ÑÐ¼Ð¾Ð¶ÐµÑ Ð²ÐµÑнÑÑÑÑÑ Ð² ÑоглаÑованное ÑоÑÑоÑние поÑле ÑÐ±Ð¾Ñ Ð¾Ð±Ð¾ÑÑÐ´Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¸Ð»Ð¸ опеÑаÑионной ÑиÑÑемÑ.ХоÑÑ Ð¾ÑклÑÑение
fsyncÑаÑÑо даÑÑ Ð²ÑигÑÑÑ Ð² ÑкоÑоÑÑи, ÑÑо Ð¼Ð¾Ð¶ÐµÑ Ð¿ÑивеÑÑи к неиÑпÑавимой поÑÑе даннÑÑ Ð² ÑлÑÑае оÑклÑÑÐµÐ½Ð¸Ñ Ð¿Ð¸ÑÐ°Ð½Ð¸Ñ Ð¸Ð»Ð¸ ÑÐ±Ð¾Ñ ÑиÑÑемÑ. ÐоÑÑÐ¾Ð¼Ñ Ð¾ÑклÑÑаÑÑfsyncÑекомендÑеÑÑÑ, ÑолÑко еÑли Ð²Ñ Ð»ÐµÐ³ÐºÐ¾ ÑможеÑе воÑÑÑановиÑÑ Ð²ÑÑ Ð±Ð°Ð·Ñ Ð¸Ð· внеÑнего иÑÑоÑника.РкаÑеÑÑве пÑимеÑов, когда оÑклÑÑение
fsyncнеопаÑно, можно пÑивеÑÑи наÑалÑное наполнение нового клаÑÑеÑа даннÑми из копии, обÑабоÑÐºÑ Ð¼Ð°ÑÑива даннÑÑ , поÑле коÑоÑой Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ Ð¼Ð¾Ð¶Ð½Ð¾ ÑдалиÑÑ Ð¸ ÑоздаÑÑ Ð·Ð°Ð½Ð¾Ð²Ð¾, либо ÑкÑплÑаÑаÑÐ¸Ñ ÐºÐ¾Ð¿Ð¸Ð¸ Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ ÑолÑко Ð´Ð»Ñ ÑÑениÑ, коÑоÑÐ°Ñ ÑегÑлÑÑно пеÑеÑоздаÑÑÑÑ Ð¸ не иÑполÑзÑеÑÑÑ Ð´Ð»Ñ Ð¾ÑÑабоÑки оÑказа. ÐаÑеÑÑвенное обоÑÑдование Ñамо по Ñебе не ÑвлÑеÑÑÑ Ð´Ð¾ÑÑаÑоÑной пÑиÑиной Ð´Ð»Ñ Ð¾ÑклÑÑениÑfsync.ÐÑи Ñмене знаÑениÑ
fsyncÑ off на on Ð´Ð»Ñ Ð½Ð°Ð´Ñжного воÑÑÑÐ°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ñакже Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼Ð¾ ÑбÑоÑиÑÑ Ð²Ñе изменÑннÑе бÑÑеÑÑ Ð¸Ð· ÑдÑа в надÑжное Ñ ÑанилиÑе. ÐÑо можно ÑделаÑÑ, когда ÑеÑÐ²ÐµÑ Ð¾ÑÑановлен или когда ÑежимfsyncвклÑÑÑн, Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñinitdb --sync-only, либо вÑполниÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñsync, ÑазмонÑиÑоваÑÑ ÑайловÑÑ ÑиÑÑÐµÐ¼Ñ Ð¸Ð»Ð¸ пеÑезагÑÑзиÑÑ ÑеÑвеÑ.Ðо Ð¼Ð½Ð¾Ð³Ð¸Ñ ÑлÑÑаÑÑ Ð¾ÑклÑÑение synchronous_commit Ð´Ð»Ñ Ð½ÐµÐºÑиÑиÑнÑÑ ÑÑанзакÑий Ð¼Ð¾Ð¶ÐµÑ Ð´Ð°ÑÑ Ð±Ð¾Ð»ÑÑий вÑигÑÑÑ Ð² ÑкоÑоÑÑи, Ñем оÑклÑÑение
fsync, пÑи ÑÑом не добавлÑÑ ÑиÑки повÑÐµÐ¶Ð´ÐµÐ½Ð¸Ñ Ð´Ð°Ð½Ð½ÑÑ .ÐаÑамеÑÑ
fsyncможно задаÑÑ ÑолÑко в Ñайлеpostgresql.confили в командной ÑÑÑоке пÑи запÑÑке ÑеÑвеÑа. ÐÑли Ð²Ñ Ð¾ÑклÑÑаеÑе ÑÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ, возможно, Ð¸Ð¼ÐµÐµÑ ÑмÑÑл оÑклÑÑиÑÑ Ñакже и full_page_writes.synchronous_commit(enum) #ÐпÑеделÑеÑ, поÑле завеÑÑÐµÐ½Ð¸Ñ ÐºÐ°ÐºÐ¾Ð³Ð¾ ÑÑÐ¾Ð²Ð½Ñ Ð¾Ð±ÑабоÑки WAL ÑеÑÐ²ÐµÑ Ð±ÑÐ´ÐµÑ ÑообÑаÑÑ Ð¾Ð± ÑÑпеÑном вÑполнении опеÑаÑии. ÐопÑÑÑимÑе знаÑениÑ:
remote_apply(пÑименено ÑдалÑнно),on(вкл., по ÑмолÑаниÑ),remote_write(запиÑано ÑдалÑнно),local(локалÑно) иoff(вÑкл.).ÐÑли знаÑение
synchronous_standby_namesне задано, Ð´Ð»Ñ Ð´Ð°Ð½Ð½Ð¾Ð³Ð¾ паÑамеÑÑа имеÑÑ ÑмÑÑл ÑолÑко знаÑениÑonиoff; Ñ Ð²Ð°ÑианÑамиremote_apply,remote_writeиlocalбÑÐ´ÐµÑ Ð²ÑбÑан ÑÐ¾Ñ Ð¶Ðµ ÑÑÐ¾Ð²ÐµÐ½Ñ ÑÐ¸Ð½Ñ ÑонизаÑии, ÑÑо и Ñon. ÐокалÑное дейÑÑвие вÑÐµÑ Ð¾ÑлиÑнÑÑ Ð¾ÑoffÑежимов заклÑÑаеÑÑÑ Ð² ожидании локалÑного ÑбÑоÑа WAL на диÑк. Ð Ñежимеoffожидание оÑÑÑÑÑÑвÑеÑ, поÑÑÐ¾Ð¼Ñ Ð¼Ð¾Ð¶ÐµÑ Ð¾Ð±ÑазоваÑÑÑÑ Ð¾ÐºÐ½Ð¾ Ð¾Ñ Ð¼Ð¾Ð¼ÐµÐ½Ñа, когда ÐºÐ»Ð¸ÐµÐ½Ñ ÑзнаÑÑ Ð¾Ð± ÑÑпеÑном завеÑÑении, до моменÑа, когда ÑÑанзакÑÐ¸Ñ Ð´ÐµÐ¹ÑÑвиÑелÑно гаÑанÑиÑованно заÑиÑена Ð¾Ñ ÑбоÑ. (ÐакÑималÑнÑй ÑÐ°Ð·Ð¼ÐµÑ Ð¾ÐºÐ½Ð° Ñавен ÑÑÐ¾Ð¹Ð½Ð¾Ð¼Ñ Ð·Ð½Ð°ÑÐµÐ½Ð¸Ñ wal_writer_delay.) РоÑлиÑие Ð¾Ñ fsync, знаÑениеoffÑÑого паÑамеÑÑа не ÑгÑÐ¾Ð¶Ð°ÐµÑ ÑелоÑÑноÑÑи даннÑÑ : Ñбой опеÑаÑионной ÑиÑÑÐµÐ¼Ñ Ð¸Ð»Ð¸ Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ Ð¼Ð¾Ð¶ÐµÑ Ð¿ÑивеÑÑи к поÑеÑе поÑÐ»ÐµÐ´Ð½Ð¸Ñ ÑÑанзакÑий, ÑÑиÑавÑÐ¸Ñ ÑÑ Ð·Ð°ÑикÑиÑованнÑми, но ÑоÑÑоÑние Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ Ð±ÑÐ´ÐµÑ ÑоÑно Ñаким же, как и в ÑлÑÑае ÑÑаÑного пÑеÑÑÐ²Ð°Ð½Ð¸Ñ ÑÑÐ¸Ñ ÑÑанзакÑий. ÐоÑÑÐ¾Ð¼Ñ Ð²ÑклÑÑение Ñежимаsynchronous_commitÐ¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð¿Ð¾Ð»ÐµÐ·Ð½Ð¾Ð¹ алÑÑеÑнаÑивой оÑклÑÑÐµÐ½Ð¸Ñ fsync, когда пÑоизводиÑелÑноÑÑÑ Ð²Ð°Ð¶Ð½ÐµÐµ, Ñем надÑÐ¶Ð½Ð°Ñ Ð³Ð°ÑанÑÐ¸Ñ ÑÐ¾Ñ ÑанноÑÑи каждой ÑÑанзакÑии. ÐодÑобнее ÑÑо обÑÑждаеÑÑÑ Ð² Разделе 28.4.ÐÑли знаÑение synchronous_standby_names не пÑÑÑое, паÑамеÑÑ
synchronous_commitÑакже опÑеделÑеÑ, должен ли ÑеÑÐ²ÐµÑ Ð¿Ñи ÑикÑиÑовании ÑÑанзакÑии ждаÑÑ, пока ÑооÑвеÑÑÑвÑÑÑие запиÑи WAL бÑдÑÑ Ð¾Ð±ÑабоÑÐ°Ð½Ñ Ð½Ð° ведомом ÑеÑвеÑе (ÑеÑвеÑÐ°Ñ ).Со знаÑением
remote_applyÑикÑиÑование завеÑÑаеÑÑÑ ÑолÑко поÑле полÑÑÐµÐ½Ð¸Ñ Ð¾ÑвеÑов Ð¾Ñ ÑекÑÑÐ¸Ñ ÑÐ¸Ð½Ñ ÑоннÑÑ Ð²ÐµÐ´Ð¾Ð¼ÑÑ ÑеÑвеÑов, говоÑÑÑÐ¸Ñ , ÑÑо они полÑÑили запиÑÑ Ð¾ ÑикÑиÑовании ÑÑанзакÑии, ÑÐ¾Ñ Ñанили ÐµÑ Ð² надÑжном Ñ ÑанилиÑе, а Ñакже пÑименили ÑÑанзакÑиÑ, Ñак ÑÑо она ÑÑала видна Ð´Ð»Ñ Ð·Ð°Ð¿ÑоÑов на ÑÑÐ¸Ñ ÑеÑвеÑÐ°Ñ . С Ñаким ваÑианÑом задеÑжка пÑи ÑикÑиÑовании оказÑваеÑÑÑ Ð±Ð¾Ð»ÑÑе, Ñак как Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼Ð¾ дожидаÑÑÑÑ Ð²Ð¾ÑпÑÐ¾Ð¸Ð·Ð²ÐµÐ´ÐµÐ½Ð¸Ñ WAL. Со знаÑениемonÑикÑиÑование завеÑÑаеÑÑÑ ÑолÑко поÑле полÑÑÐµÐ½Ð¸Ñ Ð¾ÑвеÑов Ð¾Ñ ÑекÑÑÐ¸Ñ ÑÐ¸Ð½Ñ ÑоннÑÑ Ð²ÐµÐ´Ð¾Ð¼ÑÑ ÑеÑвеÑов, подÑвеÑждаÑÑÐ¸Ñ , ÑÑо они полÑÑили запиÑÑ Ð¾ ÑикÑиÑовании ÑÑанзакÑии и пеÑедали ÐµÑ Ð² надÑжном Ñ ÑанилиÑе. ÐÑо гаÑанÑиÑÑеÑ, ÑÑо ÑÑанзакÑÐ¸Ñ Ð½Ðµ бÑÐ´ÐµÑ Ð¿Ð¾ÑеÑÑна, еÑли ÑолÑко база даннÑÑ Ð½Ðµ бÑÐ´ÐµÑ Ð¿Ð¾Ð²Ñеждена и на ведÑÑем, и на вÑÐµÑ ÑÐ¸Ð½Ñ ÑоннÑÑ Ð²ÐµÐ´Ð¾Ð¼ÑÑ ÑеÑвеÑÐ°Ñ . Со знаÑениемremote_writeÑикÑиÑование завеÑÑаеÑÑÑ Ð¿Ð¾Ñле полÑÑÐµÐ½Ð¸Ñ Ð¾ÑвеÑов Ð¾Ñ ÑекÑÑÐ¸Ñ ÑÐ¸Ð½Ñ ÑоннÑÑ ÑеÑвеÑов, говоÑÑÑÐ¸Ñ , ÑÑо они полÑÑили запиÑÑ Ð¾ ÑикÑиÑовании ÑÑанзакÑии и ÑÐ¾Ñ Ñанили ÐµÑ Ð² ÑÐ²Ð¾Ð¸Ñ Ð¤Ð¡. ÐÑÐ¾Ñ Ð²Ð°ÑÐ¸Ð°Ð½Ñ Ð¿Ð¾Ð·Ð²Ð¾Ð»ÑÐµÑ Ð³Ð°ÑанÑиÑоваÑÑ ÑÐ¾Ñ ÑанноÑÑÑ Ð´Ð°Ð½Ð½ÑÑ Ð² ÑлÑÑае оÑказа ведомого ÑеÑвеÑа Postgres Pro, но не в ÑлÑÑае ÑÐ±Ð¾Ñ Ð½Ð° ÑÑовне ÐС, Ñак как даннÑе могÑÑ ÐµÑÑ Ð½Ðµ доÑÑиÑÑ Ð½Ð°Ð´Ñжного Ñ ÑанилиÑа на ÑÑом ÑеÑвеÑе. Со знаÑениемlocalÑикÑиÑование завеÑÑаеÑÑÑ Ð¿Ð¾Ñле локалÑного ÑбÑоÑа даннÑÑ , не дожидаÑÑÑ ÑепликаÑии. ÐбÑÑно ÑÑо нежелаÑелÑнÑй ваÑÐ¸Ð°Ð½Ñ Ð¿Ñи ÑÐ¸Ð½Ñ Ñонной ÑепликаÑии, но он пÑедÑÑавлен Ð´Ð»Ñ Ð¿Ð¾Ð»Ð½Ð¾ÑÑ.ÐÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð¼Ð¾Ð¶Ð½Ð¾ измениÑÑ Ð² лÑбое вÑемÑ; поведение каждой конкÑеÑной ÑÑанзакÑии опÑеделÑеÑÑÑ Ð·Ð½Ð°Ñением, дейÑÑвÑÑÑим в Ð¼Ð¾Ð¼ÐµÐ½Ñ ÐµÑ ÑикÑиÑованиÑ. Таким обÑазом, еÑÑÑ Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ÑÑÑ Ð¸ ÑмÑÑл ÑикÑиÑоваÑÑ Ð½ÐµÐºÐ¾ÑоÑÑе ÑÑанзакÑии ÑÐ¸Ð½Ñ Ñонно, а дÑÑгие â аÑÐ¸Ð½Ñ Ñонно. ÐапÑимеÑ, ÑÑÐ¾Ð±Ñ Ð·Ð°ÑикÑиÑоваÑÑ Ð¾Ð´Ð½Ñ ÑÑанзакÑÐ¸Ñ Ð¸Ð· неÑколÑÐºÐ¸Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´ аÑÐ¸Ð½Ñ Ñонно, когда по ÑмолÑÐ°Ð½Ð¸Ñ Ð²ÑбÑан пÑоÑивоположнÑй ваÑианÑ, вÑполниÑе в ÑÑой ÑÑанзакÑии
SET LOCAL synchronous_commit TO OFF.ХаÑакÑеÑиÑÑики ÑазлиÑнÑÑ Ð·Ð½Ð°Ñений
synchronous_commitÑÐ²ÐµÐ´ÐµÐ½Ñ Ð² ТаблиÑе 18.1.ТаблиÑа 18.1. Ð ÐµÐ¶Ð¸Ð¼Ñ synchronous_commit
знаÑение synchronous_commit гаÑанÑиÑÐ¾Ð²Ð°Ð½Ð½Ð°Ñ Ð»Ð¾ÐºÐ°Ð»ÑÐ½Ð°Ñ ÑикÑаÑÐ¸Ñ Ð³Ð°ÑанÑиÑÐ¾Ð²Ð°Ð½Ð½Ð°Ñ ÑикÑаÑÐ¸Ñ Ð½Ð° ведомом поÑле ÑÐ±Ð¾Ñ PG гаÑанÑиÑÐ¾Ð²Ð°Ð½Ð½Ð°Ñ ÑикÑаÑÐ¸Ñ Ð½Ð° ведомом поÑле ÑÐ±Ð¾Ñ ÐС ÑоглаÑованноÑÑÑ Ð·Ð°Ð¿ÑоÑов на ведомом remote_apply ⢠⢠⢠⢠on ⢠⢠⢠ remote_write ⢠⢠  local ⢠   off     wal_sync_method(enum) #ÐеÑод, пÑименÑемÑй Ð´Ð»Ñ Ð¿ÑинÑдиÑелÑного ÑÐ¾Ñ ÑÐ°Ð½ÐµÐ½Ð¸Ñ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ð¹ WAL на диÑке. ÐÑли Ñежим
fsyncоÑклÑÑÑн, даннÑй паÑамеÑÑ Ð½Ðµ дейÑÑвÑеÑ, Ñак как пÑинÑдиÑелÑное ÑÐ¾Ñ Ñанение изменений WAL не пÑоизводиÑÑÑ Ð²Ð¾Ð²Ñе. ÐозможнÑе знаÑÐµÐ½Ð¸Ñ ÑÑого паÑамеÑÑа:open_datasync(Ð´Ð»Ñ ÑÐ¾Ñ ÑÐ°Ð½ÐµÐ½Ð¸Ñ Ñайлов WAL оÑкÑÑваÑÑ Ð¸Ñ ÑÑнкÑиейopen()Ñ Ð¿Ð°ÑамеÑÑомO_DSYNC)fdatasync(вÑзÑваÑÑfdatasync()пÑи каждом ÑикÑиÑовании)fsync(вÑзÑваÑÑfsync()пÑи каждом ÑикÑиÑовании)fsync_writethrough(вÑзÑваÑÑfsync()пÑи каждом ÑикÑиÑовании, ÑоÑÑиÑÑÑ ÑквознÑÑ Ð·Ð°Ð¿Ð¸ÑÑ ÐºÐµÑа)open_sync(Ð´Ð»Ñ ÑÐ¾Ñ ÑÐ°Ð½ÐµÐ½Ð¸Ñ Ñайлов WAL оÑкÑÑваÑÑ Ð¸Ñ ÑÑнкÑиейopen()Ñ Ð¿Ð°ÑамеÑÑомO_SYNC)
Ðе вÑе ÑÑи меÑÐ¾Ð´Ñ Ð¿Ð¾Ð´Ð´ÐµÑживаÑÑÑÑ Ð² ÑазнÑÑ ÑиÑÑÐµÐ¼Ð°Ñ . Ðо ÑмолÑÐ°Ð½Ð¸Ñ Ð²ÑбиÑаеÑÑÑ Ð¿ÐµÑвÑй меÑод из ÑпиÑка, коÑоÑÑй поддеÑживаеÑÑÑ ÑекÑÑей ÑиÑÑемой, Ñ Ð¾Ð´Ð½Ð¸Ð¼ иÑклÑÑением â в Linux и FreeBSD по ÑмолÑÐ°Ð½Ð¸Ñ Ð²ÑбиÑаеÑÑÑ
fdatasync. ÐÑбиÑаемÑй по ÑмолÑÐ°Ð½Ð¸Ñ Ð²Ð°ÑÐ¸Ð°Ð½Ñ Ð½Ðµ обÑзаÑелÑно бÑÐ´ÐµÑ Ð¸Ð´ÐµÐ°Ð»ÑнÑм â в завиÑимоÑÑи Ð¾Ñ ÑÑебований к оÑказоÑÑÑойÑивоÑÑи или пÑоизводиÑелÑноÑÑи Ð¼Ð¾Ð¶ÐµÑ Ð¿Ð¾ÑÑебоваÑÑÑÑ ÑкоÑÑекÑиÑоваÑÑ Ð²ÑбÑанное знаÑение или внеÑÑи дÑÑгие Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð² конÑигÑÑаÑÐ¸Ñ Ð²Ð°Ñей ÑиÑÑемÑ. СооÑвеÑÑÑвÑÑÑие аÑпекÑÑ ÐºÐ¾Ð½ÑигÑÑаÑии ÑаÑÑмаÑÑиваÑÑÑÑ Ð² Разделе 28.1. ÐÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð¼Ð¾Ð¶Ð½Ð¾ задаÑÑ ÑолÑко в Ñайлеpostgresql.confили в командной ÑÑÑоке пÑи запÑÑке ÑеÑвеÑа.full_page_writes(boolean) #Ðогда ÑÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð²ÐºÐ»ÑÑÑн, ÑеÑÐ²ÐµÑ Postgres Pro запиÑÑÐ²Ð°ÐµÑ Ð² WAL вÑÑ ÑодеÑжимое каждой ÑÑÑаниÑÑ Ð¿Ñи пеÑвом изменении ÑÑой ÑÑÑаниÑÑ Ð¿Ð¾Ñле конÑÑолÑной ÑоÑки. ÐÑо Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼Ð¾, поÑÐ¾Ð¼Ñ ÑÑо запиÑÑ ÑÑÑаниÑÑ, пÑеÑÐ²Ð°Ð½Ð½Ð°Ñ Ð¿Ñи Ñбое опеÑаÑионной ÑиÑÑемÑ, Ð¼Ð¾Ð¶ÐµÑ Ð²ÑполниÑÑÑÑ ÑаÑÑиÑно, и на диÑке окажеÑÑÑ ÑÑÑаниÑа, ÑодеÑжаÑÐ°Ñ ÑмеÑÑ ÑÑаÑÑÑ Ð´Ð°Ð½Ð½ÑÑ Ñ Ð½Ð¾Ð²Ñми. ÐÑи ÑÑом инÑоÑмаÑии об изменениÑÑ Ð½Ð° ÑÑовне ÑÑÑок, коÑоÑÐ°Ñ Ð¾Ð±ÑÑно ÑÐ¾Ñ ÑанÑеÑÑÑ Ð² WAL, бÑÐ´ÐµÑ Ð½ÐµÐ´Ð¾ÑÑаÑоÑно Ð´Ð»Ñ Ð¿Ð¾Ð»ÑÑÐµÐ½Ð¸Ñ ÑоглаÑованного ÑодеÑжимого Ñакой ÑÑÑаниÑÑ Ð¿Ñи воÑÑÑановлении поÑле ÑбоÑ. Ð¡Ð¾Ñ Ñанение обÑаза вÑей ÑÑÑаниÑÑ Ð³Ð°ÑанÑиÑÑеÑ, ÑÑо ÑÑÑаниÑÑ Ð¼Ð¾Ð¶Ð½Ð¾ воÑÑÑановиÑÑ ÐºÐ¾ÑÑекÑно, Ñеной ÑвелиÑÐµÐ½Ð¸Ñ Ð¾Ð±ÑÑма даннÑÑ , коÑоÑÑе бÑдÑÑ Ð·Ð°Ð¿Ð¸ÑÑваÑÑÑÑ Ð² WAL. (Так как воÑпÑоизведение WAL вÑегда наÑинаеÑÑÑ Ð¾Ñ ÐºÐ¾Ð½ÑÑолÑной ÑоÑки, доÑÑаÑоÑно ÑделаÑÑ ÑÑо пÑи пеÑвом изменении каждой ÑÑÑаниÑÑ Ð¿Ð¾Ñле конÑÑолÑной ÑоÑки. Таким обÑазом, ÑменÑÑиÑÑ Ð·Ð°ÑÑаÑÑ Ð½Ð° запиÑÑ Ð¿Ð¾Ð»Ð½ÑÑ ÑÑÑÐ°Ð½Ð¸Ñ Ð¼Ð¾Ð¶Ð½Ð¾, ÑвелиÑив инÑеÑÐ²Ð°Ð»Ñ ÐºÐ¾Ð½ÑÑолÑнÑÑ ÑоÑек.)
ÐÑклÑÑение ÑÑого паÑамеÑÑа ÑÑкоÑÑÐµÑ Ð¾Ð±ÑÑнÑе опеÑаÑии, но Ð¼Ð¾Ð¶ÐµÑ Ð¿ÑивеÑÑи к неиÑпÑÐ°Ð²Ð¸Ð¼Ð¾Ð¼Ñ Ð¿Ð¾Ð²ÑÐµÐ¶Ð´ÐµÐ½Ð¸Ñ Ð¸Ð»Ð¸ незамеÑной поÑÑе даннÑÑ Ð¿Ð¾Ñле ÑÐ±Ð¾Ñ ÑиÑÑемÑ. Так как пÑи ÑÑом возникаÑÑ Ð¿ÑакÑиÑеÑки Ñе же ÑиÑки, ÑÑо и пÑи оÑклÑÑении
fsync, Ñ Ð¾ÑÑ Ð¸ в менÑÑей ÑÑепени, оÑклÑÑаÑÑ ÐµÐ³Ð¾ ÑледÑÐµÑ ÑолÑко пÑи ÑÐµÑ Ð¶Ðµ обÑÑоÑÑелÑÑÑÐ²Ð°Ñ , коÑоÑÑе пеÑеÑиÑлÑлиÑÑ Ð² ÑекомендаÑиÑÑ Ð´Ð»Ñ Ð²ÑÑеопиÑанного паÑамеÑÑа.ÐÑклÑÑение ÑÑого паÑамеÑÑа не влиÑÐµÑ Ð½Ð° возможноÑÑÑ Ð¿ÑÐ¸Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð°ÑÑ Ð¸Ð²Ð¾Ð² WAL Ð´Ð»Ñ Ð²Ð¾ÑÑÑÐ°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ ÑоÑÑоÑÐ½Ð¸Ñ Ð½Ð° Ð¼Ð¾Ð¼ÐµÐ½Ñ Ð²Ñемени (Ñм. Раздел 24.3).
ÐÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð¼Ð¾Ð¶Ð½Ð¾ задаÑÑ ÑолÑко в
postgresql.confили в командной ÑÑÑоке пÑи запÑÑке ÑеÑвеÑа. Ðо ÑмолÑÐ°Ð½Ð¸Ñ ÑÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð¸Ð¼ÐµÐµÑ Ð·Ð½Ð°Ñениеon.wal_log_hints(boolean) #Ðогда ÑÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð¸Ð¼ÐµÐµÑ Ð·Ð½Ð°Ñение
on, ÑеÑÐ²ÐµÑ Postgres Pro запиÑÑÐ²Ð°ÐµÑ Ð² WAL вÑÑ ÑодеÑжимое каждой ÑÑÑаниÑÑ Ð¿Ñи пеÑвом изменении ÑÑой ÑÑÑаниÑÑ Ð¿Ð¾Ñле конÑÑолÑной ÑоÑки, даже пÑи вÑоÑоÑÑепеннÑÑ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸ÑÑ Ñак назÑваемÑÑ Ð²ÑпомогаÑелÑнÑÑ Ð±Ð¸Ñов.ÐÑли вклÑÑÑн ÑаÑÑÑÑ ÐºÐ¾Ð½ÑÑолÑнÑÑ ÑÑмм даннÑÑ , Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð²ÑпомогаÑелÑнÑÑ Ð±Ð¸Ñов вÑегда пÑÐ¾Ñ Ð¾Ð´ÑÑ ÑеÑез WAL и ÑÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð¸Ð³Ð½Ð¾ÑиÑÑеÑÑÑ. С помоÑÑÑ ÑÑого паÑамеÑÑа можно пÑовеÑиÑÑ, наÑколÑко болÑÑе дополниÑелÑной инÑоÑмаÑии запиÑÑвалоÑÑ Ð±Ñ Ð² жÑÑнал, еÑли Ð±Ñ Ð´Ð»Ñ Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ Ð±Ñл вклÑÑÑн подÑÑÑÑ ÐºÐ¾Ð½ÑÑолÑнÑÑ ÑÑмм.
ÐÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð¼Ð¾Ð¶Ð½Ð¾ задаÑÑ ÑолÑко пÑи запÑÑке ÑеÑвеÑа. Ðо ÑмолÑÐ°Ð½Ð¸Ñ Ð¾Ð½ Ð¸Ð¼ÐµÐµÑ Ð·Ð½Ð°Ñение
off.wal_compression(enum) #ÐÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð²ÐºÐ»ÑÑÐ°ÐµÑ ÑжаÑие WAL ÑказаннÑм меÑодом. ÐÑли ÑÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð¸Ð¼ÐµÐµÑ Ð·Ð½Ð°Ñение
on, ÑеÑÐ²ÐµÑ Postgres Pro ÑÐ¶Ð¸Ð¼Ð°ÐµÑ Ð¾Ð±ÑÐ°Ð·Ñ Ð¿Ð¾Ð»Ð½ÑÑ ÑÑÑаниÑ, запиÑÑваемÑе в WAL (напÑимеÑ, пÑи вклÑÑÑнном Ñежиме full_page_writes, пÑи Ñоздании базовой копии и Ñ. д.). СжаÑÑй обÑаз ÑÑÑаниÑÑ Ð±ÑÐ´ÐµÑ ÑазвÑÑнÑÑ Ð¿Ñи воÑпÑоизведении WAL. ÐоддеÑживаемÑе меÑодÑ:pglz,lz4(еÑли Postgres Pro ÑкомпилиÑован Ñ Ð¿Ð°ÑамеÑÑом--with-lz4) иzstd(еÑли Postgres Pro ÑкомпилиÑован Ñ Ð¿Ð°ÑамеÑÑом--with-zstd). ÐнаÑение по ÑмолÑÐ°Ð½Ð¸Ñ âlz4. ЧÑÐ¾Ð±Ñ Ð¾ÑклÑÑиÑÑ ÑжаÑие, задайÑе ÑÑÐ¾Ð¼Ñ Ð¿Ð°ÑамеÑÑÑ Ð·Ð½Ð°Ñениеoff. ÐзмениÑÑ ÑÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð¼Ð¾Ð³ÑÑ ÑолÑко ÑÑпеÑполÑзоваÑели и полÑзоваÑели Ñ ÑооÑвеÑÑÑвÑÑÑим пÑавомSET.ÐклÑÑив ÑжаÑие, Ð²Ñ Ð¼Ð¾Ð¶ÐµÑе без дополниÑелÑнÑÑ ÑиÑков повÑÐµÐ¶Ð´ÐµÐ½Ð¸Ñ Ð´Ð°Ð½Ð½ÑÑ ÑменÑÑиÑÑ Ð¾Ð±ÑÑм WAL, Ñеной дополниÑелÑной нагÑÑзки на пÑоÑеÑÑоÑ, ÑвÑзанной Ñо ÑжаÑием даннÑÑ Ð¿Ñи запиÑи в WAL и ÑазвоÑаÑиванием Ð¸Ñ Ð¿Ñи воÑпÑоизведении WAL.
wal_init_zero(boolean) #ÐÑли ÑÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð²ÐºÐ»ÑÑÑн (
on), ÑоздаваемÑе ÑÐ°Ð¹Ð»Ñ WAL заполнÑÑÑÑÑ Ð½ÑлÑми. Ð ÑÑде ÑайловÑÑ ÑиÑÑем благодаÑÑ ÑÑÐ¾Ð¼Ñ Ð·Ð°Ñанее вÑделÑеÑÑÑ Ð¿ÑоÑÑÑанÑÑво, коÑоÑое поÑÑебÑеÑÑÑ Ð´Ð»Ñ Ð·Ð°Ð¿Ð¸Ñи WAL. Ðднако Ñ ÑайловÑми ÑиÑÑемами, ÑабоÑаÑÑими по пÑинÑÐ¸Ð¿Ñ COW (Copy-On-Write, ÐопиÑование пÑи запиÑи), ÑÑо Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð±ÐµÑÑмÑÑленно, поÑÑÐ¾Ð¼Ñ Ð´Ð°Ð½Ð½Ñй паÑамеÑÑ Ð¿Ð¾Ð·Ð²Ð¾Ð»ÑÐµÑ Ð¾ÑклÑÑиÑÑ Ð² данном ÑлÑÑае неÑÑÑекÑивное поведение. Со знаÑениемoffв ÑоздаваемÑй Ñайл запиÑÑваеÑÑÑ ÑолÑко поÑледний байÑ, ÑÑÐ¾Ð±Ñ Ñайл WAL ÑÑÐ°Ð·Ñ Ð¾Ð±ÑÑл желаемÑй ÑазмеÑ.wal_recycle(boolean) #ÐÑли ÑÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð¸Ð¼ÐµÐµÑ Ð·Ð½Ð°Ñение
on(по ÑмолÑаниÑ), ÑÐ°Ð¹Ð»Ñ WAL иÑполÑзÑÑÑÑÑ Ð¿Ð¾Ð²ÑоÑно (Ð´Ð»Ñ ÑÑого они пеÑеименовÑваÑÑÑÑ), ÑÑо избавлÑÐµÑ Ð¾Ñ Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼Ð¾ÑÑи ÑоздаваÑÑ Ð½Ð¾Ð²Ñе ÑайлÑ. Ð ÑайловÑÑ ÑиÑÑÐµÐ¼Ð°Ñ COW Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð±ÑÑÑÑее ÑоздаÑÑ Ð½Ð¾Ð²Ñе ÑайлÑ, поÑÑÐ¾Ð¼Ñ Ð´Ð°Ð½Ð½Ñй паÑамеÑÑ Ð¿Ð¾Ð·Ð²Ð¾Ð»ÑÐµÑ Ð¾ÑклÑÑиÑÑ ÑÑо поведение.wal_buffers(integer) #ÐбÑÑм ÑазделÑемой памÑÑи, коÑоÑÑй бÑÐ´ÐµÑ Ð¸ÑполÑзоваÑÑÑÑ Ð´Ð»Ñ Ð±ÑÑеÑизаÑии даннÑÑ WAL, еÑÑ Ð½Ðµ запиÑаннÑÑ Ð½Ð° диÑк. ÐнаÑение по ÑмолÑаниÑ, Ñавное -1, задаÑÑ ÑазмеÑ, ÑавнÑй 1/32 (около 3%) Ð¾Ñ shared_buffers, но не менÑÑе Ñем
64 ÐÐи не болÑÑе Ñем ÑÐ°Ð·Ð¼ÐµÑ Ð¾Ð´Ð½Ð¾Ð³Ð¾ ÑегменÑа WAL (обÑÑно16 ÐÐ). ÐÑо знаÑение можно задаÑÑ Ð²ÑÑÑнÑÑ, еÑли вÑбиÑаемое авÑомаÑиÑеÑки ÑлиÑком мало или велико, но пÑи ÑÑом лÑбое положиÑелÑное ÑиÑло менÑÑе32 ÐÐбÑÐ´ÐµÑ Ð²Ð¾ÑпÑинимаÑÑÑÑ ÐºÐ°Ðº32 ÐÐ. ÐÑли ÑÑо знаÑение задаÑÑÑÑ Ð±ÐµÐ· ÐµÐ´Ð¸Ð½Ð¸Ñ Ð¸Ð·Ð¼ÐµÑениÑ, оно ÑÑиÑаеÑÑÑ Ð·Ð°Ð´Ð°Ð½Ð½Ñм в Ð±Ð»Ð¾ÐºÐ°Ñ WAL (ÑÐ°Ð·Ð¼ÐµÑ ÐºÐ¾ÑоÑÑÑ ÑавенXLOG_BLCKSZбайÑ, обÑÑно ÑÑо 8 ÐÐ). ÐÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð¼Ð¾Ð¶Ð½Ð¾ задаÑÑ ÑолÑко пÑи запÑÑке ÑеÑвеÑа.СодеÑжимое бÑÑеÑов WAL запиÑÑваеÑÑÑ Ð½Ð° диÑк пÑи ÑикÑиÑовании каждой ÑÑанзакÑии, Ñак ÑÑо оÑÐµÐ½Ñ Ð±Ð¾Ð»ÑÑие знаÑÐµÐ½Ð¸Ñ Ð²ÑÑд ли пÑинеÑÑÑ Ð·Ð½Ð°ÑиÑелÑнÑÑ Ð¿Ð¾Ð»ÑзÑ. Ðднако знаÑение как минимÑм в неÑколÑко Ð¼ÐµÐ³Ð°Ð±Ð°Ð¹Ñ Ð¼Ð¾Ð¶ÐµÑ ÑвелиÑиÑÑ Ð±ÑÑÑÑодейÑÑвие пÑи запиÑи на нагÑÑженном ÑеÑвеÑе, когда ÑÑÐ°Ð·Ñ Ð¼Ð½Ð¾Ð¶ÐµÑÑво клиенÑов ÑикÑиÑÑÑÑ ÑÑанзакÑии. ÐвÑонаÑÑÑойка, дейÑÑвÑÑÑÐ°Ñ Ð¿Ñи знаÑении по ÑмолÑÐ°Ð½Ð¸Ñ (-1), в болÑÑинÑÑве ÑлÑÑаев вÑбиÑÐ°ÐµÑ ÑазÑмнÑе знаÑениÑ.
wal_writer_delay(integer) #ÐпÑеделÑеÑ, Ñ ÐºÐ°ÐºÐ¾Ð¹ пеÑиодиÑноÑÑÑÑ Ð¿ÑоÑеÑÑ Ð·Ð°Ð¿Ð¸Ñи WAL бÑÐ´ÐµÑ ÑбÑаÑÑваÑÑ WAL на диÑк. ÐоÑле оÑеÑедного ÑбÑоÑа WAL он Ð´ÐµÐ»Ð°ÐµÑ Ð¿Ð°ÑзÑ, длиÑелÑноÑÑÑ ÐºÐ¾ÑоÑой задаÑÑÑÑ Ð¿Ð°ÑамеÑÑом
wal_writer_delay, но Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð¿ÑобÑждÑн аÑÐ¸Ð½Ñ Ñонно ÑикÑиÑÑемой ÑÑанзакÑией. ÐÑли пÑедÑдÑÑÐ°Ñ Ð¾Ð¿ÐµÑаÑÐ¸Ñ ÑбÑоÑа имела меÑÑо в ÑеÑение заданного паÑамеÑÑомwal_writer_delayвÑемени и полÑÑеннÑй за ÑÑо вÑÐµÐ¼Ñ Ð¾Ð±ÑÑм WAL не доÑÑиг знаÑениÑwal_writer_flush_after, даннÑе WAL ÑолÑко пеÑедаÑÑÑÑ ÐС, но не ÑбÑаÑÑваÑÑÑÑ Ð½Ð° диÑк. ÐÑли ÑÑо знаÑение задаÑÑÑÑ Ð±ÐµÐ· ÐµÐ´Ð¸Ð½Ð¸Ñ Ð¸Ð·Ð¼ÐµÑениÑ, оно ÑÑиÑаеÑÑÑ Ð·Ð°Ð´Ð°Ð½Ð½Ñм в миллиÑекÑÐ½Ð´Ð°Ñ . ÐнаÑение по ÑмолÑÐ°Ð½Ð¸Ñ â 200 миллиÑекÑнд (200ms). ÐамеÑÑÑе, ÑÑо во Ð¼Ð½Ð¾Ð³Ð¸Ñ ÑиÑÑÐµÐ¼Ð°Ñ ÑазÑеÑение ÑаймеÑа паÑÐ·Ñ ÑоÑÑавлÑÐµÑ 10 мÑ; еÑли задаÑÑ Ð²wal_writer_delayзнаÑение, не кÑаÑное 10, Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð¿Ð¾Ð»ÑÑен ÑÐ¾Ñ Ð¶Ðµ ÑезÑлÑÑаÑ, ÑÑо и Ñо ÑледÑÑÑим за ним кÑаÑнÑм 10. ÐадаÑÑ ÑÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð¼Ð¾Ð¶Ð½Ð¾ ÑолÑко вpostgresql.confили в командной ÑÑÑоке пÑи запÑÑке ÑеÑвеÑа.wal_writer_flush_after(integer) #ÐпÑеделÑеÑ, пÑи каком обÑÑме пÑоÑеÑÑ Ð·Ð°Ð¿Ð¸Ñи WAL бÑÐ´ÐµÑ ÑбÑаÑÑваÑÑ WAL на диÑк. ÐÑли пÑедÑдÑÑÐ°Ñ Ð¾Ð¿ÐµÑаÑÐ¸Ñ ÑбÑоÑа имела меÑÑо в ÑеÑение заданного паÑамеÑÑом
wal_writer_delayвÑемени и полÑÑеннÑй поÑле Ð½ÐµÑ Ð¾Ð±ÑÑм WAL не доÑÑиг знаÑениÑwal_writer_flush_after, даннÑе WAL ÑолÑко пеÑедаÑÑÑÑ ÐС, но не ÑбÑаÑÑваÑÑÑÑ Ð½Ð° диÑк. ÐÑлиwal_writer_flush_afterÑавен0, WAL ÑбÑаÑÑваеÑÑÑ Ð½Ð° диÑк немедленно. ÐÑли ÑÑо знаÑение задаÑÑÑÑ Ð±ÐµÐ· ÐµÐ´Ð¸Ð½Ð¸Ñ Ð¸Ð·Ð¼ÐµÑениÑ, оно ÑÑиÑаеÑÑÑ Ð·Ð°Ð´Ð°Ð½Ð½Ñм в Ð±Ð»Ð¾ÐºÐ°Ñ WAL (ÑÐ°Ð·Ð¼ÐµÑ ÐºÐ¾ÑоÑÑÑ ÑавенXLOG_BLCKSZбайÑ, обÑÑно ÑÑо 8 ÐÐ). ÐнаÑение по ÑмолÑÐ°Ð½Ð¸Ñ â 1 Ð¼ÐµÐ³Ð°Ð±Ð°Ð¹Ñ (1MB). ÐадаÑÑ ÑÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð¼Ð¾Ð¶Ð½Ð¾ ÑолÑко вpostgresql.confили в командной ÑÑÑоке пÑи запÑÑке ÑеÑвеÑа.wal_skip_threshold(integer) #Ðогда вÑбÑан
wal_levelminimalи ÑикÑиÑÑеÑÑÑ ÑÑанзакÑиÑ, коÑоÑÐ°Ñ Ñоздавала или пеÑезапиÑÑвала поÑÑоÑнное оÑноÑение, ÑÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð¾Ð¿ÑеделÑеÑ, как бÑдÑÑ ÑÐ¾Ñ ÑанÑÑÑÑÑ Ð½Ð¾Ð²Ñе даннÑе. ÐÑли обÑÑм даннÑÑ Ð¼ÐµÐ½ÑÑе заданного знаÑениÑ, они бÑдÑÑ Ð·Ð°Ð¿Ð¸ÑÑваÑÑÑÑ Ð² жÑÑнал WAL; в пÑоÑивном ÑлÑÑае заÑÑонÑÑÑе ÑÐ°Ð¹Ð»Ñ Ð¿ÑоÑÑо ÑÐ¸Ð½Ñ ÑонизиÑÑÑÑÑÑ Ñ Ð¤Ð¡. Ðзменение ÑÑого паÑамеÑÑа в завиÑимоÑÑи Ð¾Ñ Ñ Ð°ÑакÑеÑиÑÑик ваÑего Ñ ÑанилиÑа Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð¿Ð¾Ð»ÐµÐ·Ð½Ñм, еÑли пÑи ÑикÑиÑовании Ñакой ÑÑанзакÑии наблÑдаеÑÑÑ Ð·Ð°Ð¼ÐµÐ´Ð»ÐµÐ½Ð¸Ðµ дÑÑÐ³Ð¸Ñ ÑÑанзакÑий. ÐÑли ÑÑо знаÑение задаÑÑÑÑ Ð±ÐµÐ· ÐµÐ´Ð¸Ð½Ð¸Ñ Ð¸Ð·Ð¼ÐµÑениÑ, оно ÑÑиÑаеÑÑÑ Ð·Ð°Ð´Ð°Ð½Ð½Ñм в килобайÑÐ°Ñ . ÐнаÑение по ÑмолÑÐ°Ð½Ð¸Ñ â два мегабайÑа (2MB).commit_delay(integer) #ÐаÑамеÑÑ
commit_delayдобавлÑÐµÑ Ð¿Ð°ÑÐ·Ñ Ð¿ÐµÑед ÑобÑÑвенно вÑполнением ÑÐ¾Ñ ÑÐ°Ð½ÐµÐ½Ð¸Ñ WAL. ÐÑа задеÑжка Ð¼Ð¾Ð¶ÐµÑ ÑвелиÑиÑÑ Ð±ÑÑÑÑодейÑÑвие пÑи ÑикÑиÑовании множеÑÑва ÑÑанзакÑий, позволÑÑ Ð·Ð°ÑикÑиÑоваÑÑ Ð±Ð¾Ð»ÑÑее ÑиÑло ÑÑанзакÑий за Ð¾Ð´Ð½Ñ Ð¾Ð¿ÐµÑаÑÐ¸Ñ ÑÐ¾Ñ ÑÐ°Ð½ÐµÐ½Ð¸Ñ WAL, еÑли ÑиÑÑема нагÑÑжена доÑÑаÑоÑно ÑилÑно и за заданное вÑÐµÐ¼Ñ ÑÑпеваÑÑ Ð·Ð°ÑикÑиÑоваÑÑÑÑ Ð´ÑÑгие ÑÑанзакÑии. Ðднако ÑÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ñакже ÑвелиÑÐ¸Ð²Ð°ÐµÑ Ð·Ð°Ð´ÐµÑÐ¶ÐºÑ Ð¼Ð°ÐºÑимÑм доcommit_delayпÑи каждом ÑÐ¾Ñ Ñанении WAL. ÐÑа задеÑжка окажеÑÑÑ Ð±ÐµÑполезной, еÑли никакие дÑÑгие ÑÑанзакÑии не бÑдÑÑ Ð·Ð°ÑикÑиÑÐ¾Ð²Ð°Ð½Ñ Ð·Ð° ÑÑо вÑемÑ, поÑÑÐ¾Ð¼Ñ Ð¾Ð½Ð° добавлÑеÑÑÑ, ÑолÑко еÑли в Ð¼Ð¾Ð¼ÐµÐ½Ñ Ð·Ð°Ð¿ÑоÑа ÑÐ¾Ñ ÑÐ°Ð½ÐµÐ½Ð¸Ñ WAL акÑÐ¸Ð²Ð½Ñ ÐºÐ°Ðº минимÑмcommit_siblingsдÑÑÐ³Ð¸Ñ ÑÑанзакÑий. ÐÑоме Ñого, ÑÑи задеÑжки не добавлÑÑÑÑÑ Ð¿Ñи вÑклÑÑенномfsync. ÐÑли ÑÑо знаÑение задаÑÑÑÑ Ð±ÐµÐ· ÐµÐ´Ð¸Ð½Ð¸Ñ Ð¸Ð·Ð¼ÐµÑениÑ, оно ÑÑиÑаеÑÑÑ Ð·Ð°Ð´Ð°Ð½Ð½Ñм в микÑоÑекÑÐ½Ð´Ð°Ñ . Ðо ÑмолÑÐ°Ð½Ð¸Ñ Ð·Ð½Ð°Ñениеcommit_delayÑавно нÑÐ»Ñ (задеÑжка оÑÑÑÑÑÑвÑеÑ). ÐзмениÑÑ ÑÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð¼Ð¾Ð³ÑÑ ÑолÑко ÑÑпеÑполÑзоваÑели и полÑзоваÑели Ñ ÑооÑвеÑÑÑвÑÑÑим пÑавомSET.Ð PostgreSQL до веÑÑии 9.3, паÑамеÑÑ
commit_delayÑабоÑал по-дÑÑÐ³Ð¾Ð¼Ñ Ð¸ не Ñак ÑÑÑекÑивно: он задеÑживал ÑолÑко ÑикÑиÑование ÑÑанзакÑий, а не вÑе опеÑаÑии ÑÐ¾Ñ ÑÐ°Ð½ÐµÐ½Ð¸Ñ WAL, и Ð·Ð°Ð´Ð°Ð½Ð½Ð°Ñ Ð¿Ð°Ñза вÑдеÑживалаÑÑ Ð¿Ð¾Ð»Ð½Ð¾ÑÑÑÑ, даже еÑли WAL ÑдавалоÑÑ ÑÐ¾Ñ ÑаниÑÑ Ð±ÑÑÑÑее. ÐаÑÐ¸Ð½Ð°Ñ Ñ Ð²ÐµÑÑии 9.3, заданное вÑÐµÐ¼Ñ Ð¾Ð¶Ð¸Ð´Ð°ÐµÑ ÑолÑко пеÑвÑй пÑоÑеÑÑ, гоÑовÑй пÑоизвеÑÑи ÑÐ¾Ñ Ñанение, Ñогда как вÑе поÑледÑÑÑие пÑоÑеÑÑÑ Ð¶Ð´ÑÑ ÑолÑко, когда он законÑÐ¸Ñ ÑÑÑ Ð¾Ð¿ÐµÑаÑиÑ.commit_siblings(integer) #ÐинималÑное ÑиÑло одновÑеменно оÑкÑÑÑÑÑ ÑÑанзакÑий, пÑи коÑоÑом бÑÐ´ÐµÑ Ð´Ð¾Ð±Ð°Ð²Ð»ÑÑÑÑÑ Ð·Ð°Ð´ÐµÑжка
commit_delay. Чем болÑÑе ÑÑо знаÑение, Ñем болÑÑе веÑоÑÑноÑÑÑ, ÑÑо минимÑм одна ÑÑанзакÑÐ¸Ñ Ð¾ÐºÐ°Ð¶ÐµÑÑÑ Ð³Ð¾Ñовой к ÑикÑиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð·Ð° вÑÐµÐ¼Ñ Ð·Ð°Ð´ÐµÑжки. Ðо ÑмолÑÐ°Ð½Ð¸Ñ ÑÑо ÑиÑло Ñавно пÑÑи.
18.5.2. ÐонÑÑолÑнÑе ÑоÑки #
checkpoint_timeout(integer) #ÐакÑималÑное вÑÐµÐ¼Ñ Ð¼ÐµÐ¶Ð´Ñ Ð°Ð²ÑомаÑиÑеÑкими конÑÑолÑнÑми ÑоÑками в WAL. ÐÑли ÑÑо знаÑение задаÑÑÑÑ Ð±ÐµÐ· ÐµÐ´Ð¸Ð½Ð¸Ñ Ð¸Ð·Ð¼ÐµÑениÑ, оно ÑÑиÑаеÑÑÑ Ð·Ð°Ð´Ð°Ð½Ð½Ñм в ÑекÑÐ½Ð´Ð°Ñ . ÐопÑÑкаÑÑÑÑ Ð·Ð½Ð°ÑÐµÐ½Ð¸Ñ Ð¾Ñ 30 ÑекÑнд до одного днÑ. ÐнаÑение по ÑмолÑÐ°Ð½Ð¸Ñ â пÑÑÑ Ð¼Ð¸Ð½ÑÑ (
5min). УвелиÑение ÑÑого паÑамеÑÑа Ð¼Ð¾Ð¶ÐµÑ Ð¿ÑивеÑÑи к ÑвелиÑÐµÐ½Ð¸Ñ Ð²Ñемени, коÑоÑое поÑÑебÑеÑÑÑ Ð´Ð»Ñ Ð²Ð¾ÑÑÑÐ°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð¿Ð¾Ñле ÑбоÑ. ÐадаÑÑ ÑÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð¼Ð¾Ð¶Ð½Ð¾ ÑолÑко вpostgresql.confили в командной ÑÑÑоке пÑи запÑÑке ÑеÑвеÑа.checkpoint_completion_target(floating point) #ÐадаÑÑ Ñелевое вÑÐµÐ¼Ñ Ð´Ð»Ñ Ð·Ð°Ð²ÐµÑÑÐµÐ½Ð¸Ñ Ð¿ÑоÑедÑÑÑ ÐºÐ¾Ð½ÑÑолÑной ÑоÑки, как Ð´Ð¾Ð»Ñ Ð¾Ð±Ñего вÑемени Ð¼ÐµÐ¶Ð´Ñ ÐºÐ¾Ð½ÑÑолÑнÑми ÑоÑками. ÐнаÑение по ÑмолÑÐ°Ð½Ð¸Ñ â 0.9, ÑÑо ÑаÑпÑеделÑÐµÑ ÐºÐ¾Ð½ÑÑолÑнÑÑ ÑоÑÐºÑ Ð¿Ð¾ÑÑи по вÑÐµÐ¼Ñ Ð´Ð¾ÑÑÑÐ¿Ð½Ð¾Ð¼Ñ Ð¸Ð½ÑеÑвалÑ, обеÑпеÑÐ¸Ð²Ð°Ñ Ð´Ð¾ÑÑаÑоÑно ÑÑабилÑнÑÑ Ð½Ð°Ð³ÑÑÐ·ÐºÑ Ð²Ð²Ð¾Ð´Ð°-вÑвода, а Ñакже оÑÑавлÑÑ Ð½ÐµÐºÐ¾ÑоÑое вÑÐµÐ¼Ñ Ð´Ð»Ñ Ð¸Ð·Ð´ÐµÑжек на завеÑÑение пÑоÑедÑÑÑ ÐºÐ¾Ð½ÑÑолÑной ÑоÑки. УменÑÑаÑÑ Ð·Ð½Ð°Ñение ÑÑого паÑамеÑÑа не ÑекомендÑеÑÑÑ, Ñак как ÑÑо ÑÑкоÑÐ¸Ñ Ð´Ð°Ð½Ð½ÑÑ Ð¿ÑоÑедÑÑÑ, ÑÑо нежелаÑелÑно, поÑколÑÐºÑ Ð¿ÑиведÑÑ Ðº ÑÑкоÑÐµÐ½Ð¸Ñ Ð²Ð²Ð¾Ð´Ð°-вÑвода в пÑоÑеÑÑе конÑÑолÑной ÑоÑки, и, ÑледоваÑелÑно, к менÑÑÐµÐ¼Ñ Ð¾Ð±ÑÑÐ¼Ñ Ð²Ð²Ð¾Ð´Ð°-вÑвода в пÑомежÑÑок вÑемени Ð¼ÐµÐ¶Ð´Ñ Ð·Ð°Ð²ÐµÑÑением пÑоÑедÑÑÑ ÐºÐ¾Ð½ÑÑолÑной ÑоÑки и ÑледÑÑÑей запланиÑованной конÑÑолÑной ÑоÑкой. ÐÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð¼Ð¾Ð¶Ð½Ð¾ ÑÑÑановиÑÑ ÑолÑко в Ñайле
postgresql.confили в командной ÑÑÑоке ÑеÑвеÑа.checkpoint_flush_after(integer) #Ðогда в пÑоÑеÑÑе конÑÑолÑной ÑоÑки запиÑÑваеÑÑÑ Ð±Ð¾Ð»ÑÑе заданного обÑÑма даннÑÑ , ÑеÑÐ²ÐµÑ Ð´Ð°ÑÑ Ñказание ÐС пÑоизвеÑÑи запиÑÑ ÑÑÐ¸Ñ Ð´Ð°Ð½Ð½ÑÑ Ð² нижележаÑее Ñ ÑанилиÑе. ÐÑо огÑаниÑÐ¸Ð²Ð°ÐµÑ Ð¾Ð±ÑÑм «гÑÑзнÑÑ Â» даннÑÑ Ð² ÑÑÑаниÑном кеÑе ÑдÑа и ÑменÑÑÐ°ÐµÑ Ð²ÐµÑоÑÑноÑÑÑ Ð·Ð°ÑоÑÐ¼Ð°Ð¶Ð¸Ð²Ð°Ð½Ð¸Ñ Ð¿Ñи вÑполнении
fsyncв конÑе конÑÑолÑной ÑоÑки или когда ÐС ÑбÑаÑÑÐ²Ð°ÐµÑ Ð´Ð°Ð½Ð½Ñе на диÑк болÑÑими поÑÑиÑми в Ñоне. ЧаÑÑо ÑÑо знаÑиÑелÑно ÑменÑÑÐ°ÐµÑ Ð·Ð°Ð´ÐµÑжки ÑÑанзакÑий, но бÑваÑÑ ÑиÑÑаÑии (оÑобенно когда обÑÑм ÑабоÑей нагÑÑзки болÑÑе shared_buffers, но менÑÑе ÑÑÑаниÑного кеÑа ÐС), когда пÑоизводиÑелÑноÑÑÑ Ð¼Ð¾Ð¶ÐµÑ ÑпаÑÑÑ. ÐÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð´ÐµÐ¹ÑÑвÑÐµÑ Ð½Ðµ на вÑÐµÑ Ð¿Ð»Ð°ÑÑоÑÐ¼Ð°Ñ . ÐÑли знаÑение паÑамеÑÑа задаÑÑÑÑ Ð±ÐµÐ· ÐµÐ´Ð¸Ð½Ð¸Ñ Ð¸Ð·Ð¼ÐµÑениÑ, оно ÑÑиÑаеÑÑÑ Ð·Ð°Ð´Ð°Ð½Ð½Ñм в Ð±Ð»Ð¾ÐºÐ°Ñ (ÑÐ°Ð·Ð¼ÐµÑ ÐºÐ¾ÑоÑÑÑ ÑавенBLCKSZбайÑ, обÑÑно ÑÑо 8 ÐÐ). Ðн Ð¼Ð¾Ð¶ÐµÑ Ð¿ÑинимаÑÑ Ð·Ð½Ð°Ñение оÑ0(пÑи ÑÑом ÑпÑавление оÑложенной запиÑÑÑ Ð¾ÑклÑÑаеÑÑÑ) до 2 Ð¼ÐµÐ³Ð°Ð±Ð°Ð¹Ñ (2MB). ÐнаÑение по ÑмолÑÐ°Ð½Ð¸Ñ â256kBв Linux и0в дÑÑÐ³Ð¸Ñ ÐС. (ÐÑлиBLCKSZоÑлиÑен Ð¾Ñ 8 ÐÐ, знаÑение по ÑмолÑÐ°Ð½Ð¸Ñ Ð¸ макÑимÑм коÑÑекÑиÑÑÑÑÑÑ Ð¿ÑопоÑÑионалÑно.) ÐадаÑÑ ÑÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð¼Ð¾Ð¶Ð½Ð¾ ÑолÑко вpostgresql.confили в командной ÑÑÑоке пÑи запÑÑке ÑеÑвеÑа.checkpoint_warning(integer) #ÐапиÑÑваÑÑ Ð² жÑÑнал ÑеÑвеÑа ÑообÑение в ÑлÑÑае, еÑли конÑÑолÑнÑе ÑоÑки, вÑзваннÑе заполнением Ñайлов ÑегменÑов WAL, вÑполнÑÑÑÑÑ Ð±ÑÑÑÑее, Ñем ÑеÑез заданное вÑÐµÐ¼Ñ (ÑÑо говоÑÐ¸Ñ Ð¾ Ñом, ÑÑо нÑжно ÑвелиÑиÑÑ
max_wal_size). ÐÑли ÑÑо знаÑение задаÑÑÑÑ Ð±ÐµÐ· ÐµÐ´Ð¸Ð½Ð¸Ñ Ð¸Ð·Ð¼ÐµÑениÑ, оно ÑÑиÑаеÑÑÑ Ð·Ð°Ð´Ð°Ð½Ð½Ñм в ÑекÑÐ½Ð´Ð°Ñ . ÐнаÑение по ÑмолÑÐ°Ð½Ð¸Ñ Ñавно 30 ÑекÑндам (30s). ÐÑи нÑле ÑÑо пÑедÑпÑеждение оÑклÑÑаеÑÑÑ. ÐÑлиcheckpoint_timeoutменÑÑе Ñемcheckpoint_warning, пÑедÑпÑÐµÐ¶Ð´ÐµÐ½Ð¸Ñ Ñак же не бÑдÑÑ Ð²ÑводиÑÑÑÑ. ÐадаÑÑ ÑÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð¼Ð¾Ð¶Ð½Ð¾ ÑолÑко вpostgresql.confили в командной ÑÑÑоке пÑи запÑÑке ÑеÑвеÑа.max_wal_size(integer) #ÐакÑималÑнÑй ÑазмеÑ, до коÑоÑого Ð¼Ð¾Ð¶ÐµÑ Ð²ÑÑаÑÑаÑÑ WAL во вÑÐµÐ¼Ñ Ð°Ð²ÑомаÑиÑеÑÐºÐ¸Ñ ÐºÐ¾Ð½ÑÑолÑнÑÑ ÑоÑек. ÐÑо мÑгкий пÑедел; ÑÐ°Ð·Ð¼ÐµÑ WAL Ð¼Ð¾Ð¶ÐµÑ Ð¿ÑевÑÑаÑÑ
max_wal_sizeпÑи оÑобÑÑ Ð¾Ð±ÑÑоÑÑелÑÑÑÐ²Ð°Ñ , напÑÐ¸Ð¼ÐµÑ Ð¿Ñи болÑÑой нагÑÑзке, Ñбое вarchive_command/archive_libraryили пÑи болÑÑом знаÑенииwal_keep_size. ÐÑли ÑÑо знаÑение задаÑÑÑÑ Ð±ÐµÐ· ÐµÐ´Ð¸Ð½Ð¸Ñ Ð¸Ð·Ð¼ÐµÑениÑ, оно ÑÑиÑаеÑÑÑ Ð·Ð°Ð´Ð°Ð½Ð½Ñм в мегабайÑÐ°Ñ . ÐнаÑение по ÑмолÑÐ°Ð½Ð¸Ñ â 1 ÐÐ. УвелиÑение ÑÑого паÑамеÑÑа Ð¼Ð¾Ð¶ÐµÑ Ð¿ÑивеÑÑи к ÑвелиÑÐµÐ½Ð¸Ñ Ð²Ñемени, коÑоÑое поÑÑебÑеÑÑÑ Ð´Ð»Ñ Ð²Ð¾ÑÑÑÐ°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð¿Ð¾Ñле ÑбоÑ. ÐадаÑÑ ÑÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð¼Ð¾Ð¶Ð½Ð¾ ÑолÑко вpostgresql.confили в командной ÑÑÑоке пÑи запÑÑке ÑеÑвеÑа.min_wal_size(integer) #Ðока WAL Ð·Ð°Ð½Ð¸Ð¼Ð°ÐµÑ Ð½Ð° диÑке менÑÑе ÑÑого обÑÑма, ÑÑаÑÑе ÑÐ°Ð¹Ð»Ñ WAL в конÑÑолÑнÑÑ ÑоÑÐºÐ°Ñ Ð²Ñегда пеÑеÑабаÑÑваÑÑÑÑ, а не ÑдалÑÑÑÑÑ. ÐÑо позволÑÐµÑ Ð·Ð°ÑезеÑвиÑоваÑÑ Ð´Ð¾ÑÑаÑоÑно меÑÑа Ð´Ð»Ñ WAL, ÑÑÐ¾Ð±Ñ ÑпÑавиÑÑÑÑ Ñ Ñезкими ÑкаÑками иÑполÑÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ WAL, напÑимеÑ, пÑи вÑполнении болÑÑÐ¸Ñ Ð¿Ð°ÐºÐµÑнÑÑ Ð·Ð°Ð´Ð°Ð½Ð¸Ð¹. ÐÑли ÑÑо знаÑение задаÑÑÑÑ Ð±ÐµÐ· ÐµÐ´Ð¸Ð½Ð¸Ñ Ð¸Ð·Ð¼ÐµÑениÑ, оно ÑÑиÑаеÑÑÑ Ð·Ð°Ð´Ð°Ð½Ð½Ñм в мегабайÑÐ°Ñ . ÐнаÑение по ÑмолÑÐ°Ð½Ð¸Ñ â 80 ÐÐ. ÐÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð¼Ð¾Ð¶Ð½Ð¾ ÑÑÑановиÑÑ ÑолÑко в
postgresql.confили в командной ÑÑÑоке ÑеÑвеÑа.
18.5.3. ÐÑÑ Ð¸Ð²Ð°ÑÐ¸Ñ #
archive_mode(enum) #Ðогда паÑамеÑÑ
archive_modeвклÑÑÑн, полнÑе ÑегменÑÑ WAL пеÑедаÑÑÑÑ Ð² Ñ ÑанилиÑе аÑÑ Ð¸Ð²Ð° командой archive_command или ÑÑнкÑиÑми archive_library. Ðомимо знаÑениÑoff(вÑклÑÑаÑÑего аÑÑ Ð¸Ð²Ð°ÑиÑ) еÑÑÑ ÐµÑÑ Ð´Ð²Ð°:on(вкл.) иalways(вÑегда). РобÑÑном ÑоÑÑоÑнии ÑÑи два Ñежима не ÑазлиÑаÑÑÑÑ, но в ÑежимеalwaysаÑÑ Ð¸Ð²Ð°ÑÐ¸Ñ WAL акÑивна и во вÑÐµÐ¼Ñ Ð²Ð¾ÑÑÑÐ°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð°ÑÑ Ð¸Ð²Ð°, и пÑи иÑполÑзовании ведомого ÑеÑвеÑа. Ð ÑÑом Ñежиме вÑе ÑайлÑ, воÑÑÑановленнÑе из аÑÑ Ð¸Ð²Ð° или полÑÑеннÑе пÑи поÑоковой ÑепликаÑии, бÑдÑÑ Ð°ÑÑ Ð¸Ð²Ð¸ÑоваÑÑÑÑ (Ñнова). Ðа подÑобноÑÑÑми обÑаÑиÑеÑÑ Ðº ÐодÑазделÑ 25.2.9.ÐаÑамеÑÑÑ
archive_modeиarchive_command/archive_libraryÑазделенÑ, ÑÑÐ¾Ð±Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñarchive_commandи библиоÑекÑarchive_libraryможно бÑло изменÑÑÑ, не оÑклÑÑÐ°Ñ Ñежим аÑÑ Ð¸Ð²Ð°Ñии. ÐÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð¼Ð¾Ð¶Ð½Ð¾ задаÑÑ ÑолÑко пÑи запÑÑке ÑеÑвеÑа. Режим аÑÑ Ð¸Ð²Ð°Ñии нелÑÐ·Ñ Ð²ÐºÐ»ÑÑиÑÑ, когда ÑÑÑановлен минималÑнÑй ÑÑÐ¾Ð²ÐµÐ½Ñ WAL (wal_levelÐ¸Ð¼ÐµÐµÑ Ð·Ð½Ð°Ñениеminimal).archive_command(string) #Ðоманда локалÑной оболоÑки, коÑоÑÐ°Ñ Ð±ÑÐ´ÐµÑ Ð²ÑполнÑÑÑÑÑ Ð´Ð»Ñ Ð°ÑÑ Ð¸Ð²Ð°Ñии завеÑÑÑнного ÑегменÑа WAL. ÐÑбое Ð²Ñ Ð¾Ð¶Ð´ÐµÐ½Ð¸Ðµ
%pв ÑÑой ÑÑÑоке заменÑеÑÑÑ Ð¿ÑÑÑм аÑÑ Ð¸Ð²Ð¸ÑÑемого Ñайла, а Ð²Ñ Ð¾Ð¶Ð´ÐµÐ½Ð¸Ðµ%fзаменÑеÑÑÑ ÑолÑко его именем. (ÐÑÑÑ Ð·Ð°Ð´Ð°ÑÑÑÑ Ð¾ÑноÑиÑелÑно ÑабоÑего каÑалога ÑеÑвеÑа, Ñо еÑÑÑ ÐºÐ°Ñалога даннÑÑ ÐºÐ»Ð°ÑÑеÑа.) ЧÑÐ¾Ð±Ñ Ð²ÑÑавиÑÑ Ð² ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ Ñимвол%, его нÑжно запиÑаÑÑ ÐºÐ°Ðº%%. Ðажно, ÑÑÐ¾Ð±Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð° возвÑаÑала нÑлевой код, ÑолÑко еÑли она завеÑÑаеÑÑÑ ÑÑпеÑно. Ðа дополниÑелÑной инÑоÑмаÑией обÑаÑиÑеÑÑ Ðº ÐодÑазделÑ 24.3.1.ÐÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð¼Ð¾Ð¶Ð½Ð¾ задаÑÑ ÑолÑко в
postgresql.confили в командной ÑÑÑоке пÑи запÑÑке ÑеÑвеÑа. ÐаннÑй паÑамеÑÑ Ð¸ÑполÑзÑеÑÑÑ, ÑолÑко еÑлиarchive_modeбÑл вклÑÑÑн пÑи запÑÑке или паÑамеÑÑarchive_libraryÑодеÑÐ¶Ð¸Ñ Ð¿ÑÑÑÑÑ ÑÑÑокÑ. ÐÑли ÑÐºÐ°Ð·Ð°Ð½Ñ Ð¸archive_command, иarchive_library, Ð²Ð¾Ð·Ð½Ð¸ÐºÐ½ÐµÑ Ð¾Ñибка. ÐÑли знаÑениеarchive_commandâ пÑÑÑÐ°Ñ ÑÑÑока (по ÑмолÑаниÑ), ноarchive_modeвклÑÑÑн (и пÑи ÑÑом знаÑениеarchive_libraryâ Ñоже пÑÑÑÐ°Ñ ÑÑÑока), аÑÑ Ð¸Ð²Ð°ÑÐ¸Ñ WAL вÑеменно оÑклÑÑаеÑÑÑ, но ÑеÑÐ²ÐµÑ Ð¿ÑÐ¾Ð´Ð¾Ð»Ð¶Ð°ÐµÑ Ð½Ð°ÐºÐ°Ð¿Ð»Ð¸Ð²Ð°ÑÑ ÑÐ°Ð¹Ð»Ñ ÑегменÑов WAL в ожидании, ÑÑо команда бÑÐ´ÐµÑ Ð²ÑкоÑе опÑеделена. ÐÑли в каÑеÑÑвеarchive_commandзадаÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ, коÑоÑÐ°Ñ Ð½Ð¸Ñего не делаеÑ, но ÑообÑÐ°ÐµÑ Ð¾Ð± ÑÑпеÑном завеÑÑении, напÑимеÑ/bin/true(илиREMв Windows), аÑÑ Ð¸Ð²Ð°ÑÐ¸Ñ Ð¿Ð¾ ÑÑÑи оÑклÑÑаеÑÑÑ, но пÑи ÑÑом наÑÑÑаеÑÑÑ ÑепоÑка Ñайлов WAL, Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼ÑÑ Ð´Ð»Ñ Ð²Ð¾ÑÑÑÐ°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð°ÑÑ Ð¸Ð²Ð°, поÑÑÐ¾Ð¼Ñ Ñакой ваÑÐ¸Ð°Ð½Ñ ÑледÑÐµÑ Ð¸ÑполÑзоваÑÑ ÑолÑко в оÑобÑÑ ÑлÑÑаÑÑ .archive_library(string) #ÐиблиоÑека, иÑполÑзÑÐµÐ¼Ð°Ñ Ð´Ð»Ñ Ð°ÑÑ Ð¸Ð²Ð¸ÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð·Ð°Ð²ÐµÑÑÑннÑÑ ÑегменÑов Ñайла WAL. ÐÑли задана пÑÑÑÐ°Ñ ÑÑÑока (по ÑмолÑаниÑ), пÑименÑеÑÑÑ Ð¼ÐµÑод аÑÑ Ð¸Ð²Ð¸ÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð¿Ð¾ÑÑедÑÑвом оболоÑки и иÑполÑзÑеÑÑÑ archive_command. ÐÑли Ð·Ð°Ð´Ð°Ð½Ñ Ð¾Ð±Ð° паÑамеÑÑа
archive_commandиarchive_library, Ð²Ð¾Ð·Ð½Ð¸ÐºÐ½ÐµÑ Ð¾Ñибка. РпÑоÑивном ÑлÑÑае Ð´Ð»Ñ Ð°ÑÑ Ð¸Ð²Ð¸ÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð¸ÑполÑзÑеÑÑÑ ÑÐºÐ°Ð·Ð°Ð½Ð½Ð°Ñ Ð¾Ð±ÑÐ°Ñ Ð±Ð¸Ð±Ð»Ð¸Ð¾Ñека. ÐÑи изменении ÑÑого паÑамеÑÑа postmaster пеÑезапÑÑÐºÐ°ÐµÑ Ð¿ÑоÑеÑÑ Ð°ÑÑ Ð¸Ð²Ð¸ÑÐ¾Ð²Ð°Ð½Ð¸Ñ WAL. Ðа дополниÑелÑнÑми ÑведениÑми обÑаÑиÑеÑÑ Ðº Ñазделам ÐодÑаздел 24.3.1 и Ðлава 50.ÐадаÑÑ ÑÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð¼Ð¾Ð¶Ð½Ð¾ ÑолÑко в
postgresql.confили в командной ÑÑÑоке пÑи запÑÑке ÑеÑвеÑа.archive_timeout(integer) #Ðоманда archive_command или ÑÑнкÑии archive_library вÑзÑваÑÑÑÑ ÑолÑко Ð´Ð»Ñ Ð·Ð°Ð²ÐµÑÑÑннÑÑ ÑегменÑов WAL. ÐоÑÑомÑ, еÑли Ð²Ð°Ñ ÑеÑÐ²ÐµÑ Ð·Ð°Ð¿Ð¸ÑÑÐ²Ð°ÐµÑ Ð¼Ð°Ð»Ð¾ даннÑÑ WAL (или ÑÑо наблÑдаеÑÑÑ Ð² некоÑоÑÑе пеÑÐ¸Ð¾Ð´Ñ Ð²Ñемени), Ð¾Ñ Ð·Ð°Ð²ÐµÑÑÐµÐ½Ð¸Ñ ÑÑанзакÑии до надÑжного ÑÐ¾Ñ ÑÐ°Ð½ÐµÐ½Ð¸Ñ ÐµÑ Ð² аÑÑ Ð¸Ð²Ð½Ð¾Ð¼ Ñ ÑанилиÑе Ð¼Ð¾Ð¶ÐµÑ Ð¿ÑойÑи доволÑно много вÑемени. ÐÐ»Ñ Ð¾Ð³ÑаниÑÐµÐ½Ð¸Ñ Ð²Ñемени ÑÑÑеÑÑÐ²Ð¾Ð²Ð°Ð½Ð¸Ñ Ð½ÐµÐ°ÑÑ Ð¸Ð²Ð¸ÑованнÑÑ Ð´Ð°Ð½Ð½ÑÑ Ð¼Ð¾Ð¶Ð½Ð¾ ÑÑÑановиÑÑ Ð·Ð½Ð°Ñение
archive_timeout, ÑÑÐ¾Ð±Ñ ÑеÑÐ²ÐµÑ Ð¿ÐµÑиодиÑеÑки пеÑеклÑÑалÑÑ Ð½Ð° новÑй Ñайл ÑегменÑа WAL. Ðогда ÑÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð±Ð¾Ð»ÑÑе нÑлÑ, ÑеÑÐ²ÐµÑ Ð±ÑÐ´ÐµÑ Ð¿ÐµÑеклÑÑаÑÑÑÑ Ð½Ð° новÑй Ñайл ÑегменÑа, еÑли Ñ Ð¼Ð¾Ð¼ÐµÐ½Ñа поÑледнего пеÑеклÑÑÐµÐ½Ð¸Ñ Ð½Ð° новÑй Ñайл пÑоÑло заданное вÑÐµÐ¼Ñ Ð¸ наблÑдалаÑÑ ÐºÐ°ÐºÐ°Ñ-Ñо акÑивноÑÑÑ Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ , даже еÑли ÑÑо бÑла пÑоÑÑо конÑÑолÑÐ½Ð°Ñ ÑоÑка. (ÐонÑÑолÑнÑе ÑоÑки пÑопÑÑкаÑÑÑÑ, еÑли в базе оÑÑÑÑÑÑвÑÐµÑ Ð°ÐºÑивноÑÑÑ). ÐамеÑÑÑе, ÑÑо аÑÑ Ð¸Ð²Ð¸ÑÑемÑе ÑайлÑ, закÑÑваемÑе доÑÑоÑно из-за пÑинÑдиÑелÑного пеÑеклÑÑениÑ, вÑÑ Ñавно бÑдÑÑ Ð¸Ð¼ÐµÑÑ ÑÐ¾Ñ Ð¶Ðµ ÑазмеÑ, ÑÑо и полноÑÑÑÑ Ð·Ð°Ð¿Ð¾Ð»Ð½ÐµÐ½Ð½Ñе. ÐоÑÑÐ¾Ð¼Ñ ÑÑÑанавливаÑÑ Ð´Ð»Ñarchive_timeoutоÑÐµÐ½Ñ Ð¼Ð°Ð»ÐµÐ½Ñкое знаÑение неÑазÑмно â ÑÑо ведÑÑ Ðº ÑаздÑÐ²Ð°Ð½Ð¸Ñ Ð°ÑÑ Ð¸Ð²Ð½Ð¾Ð³Ð¾ Ñ ÑанилиÑа. ÐбÑÑно длÑarchive_timeoutÐ¸Ð¼ÐµÐµÑ ÑмÑÑл задаваÑÑ Ð·Ð½Ð°Ñение около минÑÑÑ. ÐÑли вам нÑжно, ÑÑÐ¾Ð±Ñ Ð´Ð°Ð½Ð½Ñе копиÑовалиÑÑ Ñ Ð³Ð»Ð°Ð²Ð½Ð¾Ð³Ð¾ ÑеÑвеÑа бÑÑÑÑее, вам ÑледÑÐµÑ Ð¿Ð¾Ð´ÑмаÑÑ Ð¾ пеÑÐµÑ Ð¾Ð´Ðµ Ð¾Ñ Ð°ÑÑ Ð¸Ð²Ð°Ñии к поÑоковой ÑепликаÑии. ÐÑли ÑÑо знаÑение задаÑÑÑÑ Ð±ÐµÐ· ÐµÐ´Ð¸Ð½Ð¸Ñ Ð¸Ð·Ð¼ÐµÑениÑ, оно ÑÑиÑаеÑÑÑ Ð·Ð°Ð´Ð°Ð½Ð½Ñм в ÑекÑÐ½Ð´Ð°Ñ . ÐÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð¼Ð¾Ð¶Ð½Ð¾ задаÑÑ ÑолÑко вpostgresql.confили в командной ÑÑÑоке пÑи запÑÑке ÑеÑвеÑа.
18.5.4. ÐоÑÑÑановление #
Ð ÑÑом Ñазделе опиÑÑваÑÑÑÑ Ð¾Ð±Ñие паÑамеÑÑÑ, ÑвÑзаннÑе Ñ Ð²Ð¾ÑÑÑановлением, коÑоÑÑе влиÑÑÑ Ð½Ð° воÑÑÑановление поÑле ÑбоÑ, поÑоковÑÑ ÑепликаÑÐ¸Ñ Ð¸ ÑепликаÑÐ¸Ñ Ñ Ð¸ÑполÑзованием аÑÑ Ð¸Ð²Ð°.
recovery_prefetch(enum) #ÐпÑеделÑеÑ, вÑполнÑÑÑ Ð»Ð¸ во вÑÐµÐ¼Ñ Ð²Ð¾ÑÑÑÐ°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð¿ÑедваÑиÑелÑнÑÑ Ð²ÑбоÑÐºÑ Ð±Ð»Ð¾ÐºÐ¾Ð², на коÑоÑÑе еÑÑÑ ÑÑÑлки в WAL и коÑоÑÑÑ ÐµÑÑ Ð½ÐµÑ Ð² пÑле бÑÑеÑов. ÐопÑÑÑимÑе знаÑениÑ:
off(вÑкл.),on(вкл.) иtry(пÑобоваÑÑ), вÑбиÑаемое по ÑмолÑаниÑ. ÐнаÑениеtryвклÑÑÐ°ÐµÑ Ð¿ÑедвÑбоÑкÑ, ÑолÑко еÑли опеÑаÑÐ¸Ð¾Ð½Ð½Ð°Ñ ÑиÑÑема пÑедоÑÑавлÑÐµÑ ÑÑнкÑиÑposix_fadvise, коÑоÑÐ°Ñ Ð² наÑÑоÑÑее вÑÐµÐ¼Ñ Ð¸ÑполÑзÑеÑÑÑ Ð´Ð»Ñ ÑеализаÑии пÑедваÑиÑелÑной вÑбоÑки. ÐбÑаÑиÑе внимание, ÑÑо некоÑоÑÑе опеÑаÑионнÑе ÑиÑÑÐµÐ¼Ñ Ð¿ÑедоÑÑавлÑÑÑ ÑÑÑ ÑÑнкÑиÑ, но она ниÑего не делаеÑ.ÐлагодаÑÑ Ð¿ÑедвÑбоÑке блоков, коÑоÑÑе вÑкоÑе поÑÑебÑÑÑÑÑ, Ð¼Ð¾Ð¶ÐµÑ ÑменÑÑиÑÑÑÑ Ð²ÑÐµÐ¼Ñ Ð¾Ð¶Ð¸Ð´Ð°Ð½Ð¸Ñ Ð²Ð²Ð¾Ð´Ð°-вÑвода во вÑÐµÐ¼Ñ Ð²Ð¾ÑÑÑÐ°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð¿Ñи опÑеделÑнной нагÑÑзке. См. Ñакже паÑамеÑÑÑ wal_decode_buffer_size и maintenance_io_concurrency, огÑаниÑиваÑÑие акÑивноÑÑÑ Ð¿ÑедваÑиÑелÑной вÑбоÑки.
wal_decode_buffer_size(integer) #ÐгÑаниÑение обÑÑма WAL, коÑоÑÑй ÑеÑÐ²ÐµÑ Ð±ÑÐ´ÐµÑ ÑиÑаÑÑ Ð½Ð°Ð¿ÐµÑÑд, ÑÑÐ¾Ð±Ñ Ð¾Ð¿ÑеделиÑÑ Ð±Ð»Ð¾ÐºÐ¸ Ð´Ð»Ñ Ð¿ÑедваÑиÑелÑной вÑбоÑки. ÐÑли ÑÑо знаÑение Ñказано без ÐµÐ´Ð¸Ð½Ð¸Ñ Ð¸Ð·Ð¼ÐµÑениÑ, оно ÑÑиÑаеÑÑÑ Ð·Ð°Ð´Ð°Ð½Ð½Ñм в байÑÐ°Ñ . Ðо ÑмолÑÐ°Ð½Ð¸Ñ 512 ÐÐ. ÐадаÑÑ ÑÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð¼Ð¾Ð¶Ð½Ð¾ ÑолÑко пÑи запÑÑке ÑеÑвеÑа.
18.5.5. ÐоÑÑÑановление из аÑÑ Ð¸Ð²Ð° #
Ð ÑÑом Ñазделе опиÑÑваÑÑÑÑ Ð¿Ð°ÑамеÑÑÑ, дейÑÑвÑÑÑие ÑолÑко в пÑоÑеÑÑе воÑÑÑановлениÑ. Ðни Ð´Ð¾Ð»Ð¶Ð½Ñ ÑбÑаÑÑваÑÑÑÑ Ð´Ð»Ñ Ð»Ñбой поÑледÑÑÑей опеÑаÑии воÑÑÑановлениÑ.
Ðод «воÑÑÑановлением» здеÑÑ Ð¿Ð¾Ð½Ð¸Ð¼Ð°ÐµÑÑÑ Ð¸ иÑполÑзование ÑеÑвеÑа в каÑеÑÑве ведомого, и вÑполнение Ñелевого воÑÑÑÐ°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð´Ð°Ð½Ð½ÑÑ . ÐбÑÑно ведомÑе ÑеÑвеÑÑ Ð¸ÑполÑзÑеÑÑÑ Ð´Ð»Ñ Ð¾Ð±ÐµÑпеÑÐµÐ½Ð¸Ñ Ð²ÑÑокой ÑÑепени доÑÑÑпноÑÑи и/или маÑÑÑабиÑÑемоÑÑи ÑÑениÑ, Ñогда как Ñелевое воÑÑÑановление пÑоизводиÑÑÑ Ð² ÑлÑÑае поÑеÑи даннÑÑ .
ЧÑÐ¾Ð±Ñ Ð·Ð°Ð¿ÑÑÑиÑÑ ÑеÑÐ²ÐµÑ Ð² Ñежиме ведомого, ÑоздайÑе в каÑалоге даннÑÑ
Ñайл standby.signal. СеÑÐ²ÐµÑ Ð¿ÐµÑейдÑÑ Ðº воÑÑÑÐ°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð¸ оÑÑанеÑÑÑ Ð² ÑÑом ÑоÑÑоÑнии и по доÑÑижении конÑа зааÑÑ
ивиÑованного WAL, ÑÑÐ¾Ð±Ñ Ð¾ÑÑÑеÑÑвлÑÑÑ Ð²Ð¾ÑÑÑановление далÑÑе. ÐÐ»Ñ ÑÑого он подклÑÑиÑÑÑ Ðº пеÑедаÑÑÐµÐ¼Ñ ÑеÑвеÑÑ, иÑполÑзÑÑ Ð¿Ð°ÑамеÑÑÑ Ð² primary_conninfo, или бÑÐ´ÐµÑ Ð¿Ð¾Ð»ÑÑаÑÑ Ð½Ð¾Ð²Ñе ÑегменÑÑ WAL Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ restore_command. ÐÑимениÑелÑно к Ð´Ð°Ð½Ð½Ð¾Ð¼Ñ ÑÐµÐ¶Ð¸Ð¼Ñ Ð¿ÑедÑÑавлÑÑÑ Ð¸Ð½ÑеÑÐµÑ Ð¿Ð°ÑамеÑÑÑ, опиÑаннÑе в ÑÑом Ñазделе и в ÐодÑазделе 18.6.3. ÐаÑамеÑÑÑ, опиÑаннÑе в ÐодÑаздел 18.5.6, Ñакже бÑдÑÑ Ð´ÐµÐ¹ÑÑвоваÑÑ, Ñ
оÑÑ Ð´Ð»Ñ Ð´Ð°Ð½Ð½Ð¾Ð³Ð¾ Ñежима они вÑÑд ли бÑдÑÑ Ð¿Ð¾Ð»ÐµÐ·Ð½Ñми.
ЧÑÐ¾Ð±Ñ Ð·Ð°Ð¿ÑÑÑиÑÑ ÑеÑÐ²ÐµÑ Ð² Ñежиме Ñелевого воÑÑÑановлениÑ, ÑоздайÑе в каÑалоге даннÑÑ
recovery.signal. Ð ÑлÑÑае одновÑеменного ÑÑÑеÑÑÐ²Ð¾Ð²Ð°Ð½Ð¸Ñ Ñайлов standby.signal и recovery.signal пÑедпоÑÑение оÑдаÑÑÑÑ ÑÐµÐ¶Ð¸Ð¼Ñ Ð²ÐµÐ´Ð¾Ð¼Ð¾Ð³Ð¾. Режим Ñелевого воÑÑÑÐ°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð·Ð°Ð²ÐµÑÑаеÑÑÑ Ð¿Ð¾Ñле полного воÑпÑÐ¾Ð¸Ð·Ð²ÐµÐ´ÐµÐ½Ð¸Ñ WAL из аÑÑ
ива или пÑи доÑÑижении Ñелевой ÑоÑки (recovery_target). Рданном Ñежиме иÑполÑзÑÑÑÑÑ Ð¿Ð°ÑамеÑÑÑ, опиÑаннÑе в ÑÑом Ñазделе и в ÐодÑазделе 18.5.6.
restore_command(string) #Ðоманда оболоÑки ÐС, коÑоÑÐ°Ñ Ð²ÑполнÑеÑÑÑ Ð´Ð»Ñ Ð¸Ð·Ð²Ð»ÐµÑÐµÐ½Ð¸Ñ Ð°ÑÑ Ð¸Ð²Ð½Ð¾Ð³Ð¾ ÑегменÑа из набоÑа Ñайлов WAL. ÐÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ ÑÑебÑеÑÑÑ Ð´Ð»Ñ Ð²Ð¾ÑÑÑÐ°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð¸Ð· аÑÑ Ð¸Ð²Ð°, но необÑзаÑелен Ð´Ð»Ñ Ð¿Ð¾Ñоковой ÑепликаÑии. ÐÑбое Ð²Ñ Ð¾Ð¶Ð´ÐµÐ½Ð¸Ðµ
%fв ÑÑÑоке заменÑеÑÑÑ Ð¸Ð¼ÐµÐ½ÐµÐ¼ извлекаемого из аÑÑ Ð¸Ð²Ð° Ñайла, а%pзаменÑеÑÑÑ Ð½Ð° пÑÑÑ Ð½Ð°Ð·Ð½Ð°ÑÐµÐ½Ð¸Ñ Ð½Ð° ÑеÑвеÑе. (ÐÑÑÑ ÑказÑваеÑÑÑ Ð¾ÑноÑиÑелÑно ÑекÑÑего ÑабоÑего каÑалога, Ñ. е. оÑноÑиÑелÑно каÑалога Ñ ÑÐ°Ð½ÐµÐ½Ð¸Ñ Ð´Ð°Ð½Ð½ÑÑ ÐºÐ»Ð°ÑÑеÑа.) ÐÑбое Ð²Ñ Ð¾Ð¶Ð´ÐµÐ½Ð¸Ðµ%rзаменÑеÑÑÑ Ð½Ð° Ð¸Ð¼Ñ Ñайла, в коÑоÑом ÑодеÑжиÑÑÑ Ð¿Ð¾ÑледнÑÑ Ð´ÐµÐ¹ÑÑвиÑелÑÐ½Ð°Ñ ÑоÑка пеÑезапÑÑка. ÐÑо ÑамÑй Ñанний Ñайл, коÑоÑÑй ÑÑебÑеÑÑÑ Ñ ÑаниÑÑ Ð´Ð»Ñ Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ÑÑи воÑÑÑановлениÑ; Ð·Ð½Ð°Ñ ÐµÐ³Ð¾ имÑ, ÑÐ°Ð·Ð¼ÐµÑ Ð°ÑÑ Ð¸Ð²Ð° можно ÑменÑÑиÑÑ Ð´Ð¾ минималÑно Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼Ð¾Ð³Ð¾.%rобÑÑно иÑполÑзÑеÑÑÑ Ð¿Ñи оÑганизаÑии ÑÑплого ÑезеÑва (Ñм. Раздел 25.2). ÐÐ»Ñ Ñого ÑÑÐ¾Ð±Ñ ÑказаÑÑ Ñимвол%, пÑодÑблиÑÑйÑе его (%%).ÐбÑаÑиÑе внимание, ÑÑо команда должна возвÑаÑаÑÑ Ð½Ð¾Ð»Ñ Ð½Ð° вÑÑ Ð¾Ð´Ðµ лиÑÑ Ð² ÑлÑÑае ÑÑпеÑного вÑполнениÑ. Ðоманде бÑдÑÑ Ð¿Ð¾ÑÑÑпаÑÑ Ð¸Ð¼ÐµÐ½Ð° Ñайлов, оÑÑÑÑÑÑвÑÑÑÐ¸Ñ Ð² аÑÑ Ð¸Ð²Ðµ; в ÑÑом ÑлÑÑае она должна возвÑаÑаÑÑ Ð½ÐµÐ½Ñлевой ÑÑаÑÑÑ. ÐÑимеÑÑ:
restore_command = 'cp /mnt/server/archivedir/%f "%p"' restore_command = 'copy "C:\\server\\archivedir\\%f" "%p"' # Windows
Ð ÑлÑÑае пÑеÑÑÐ²Ð°Ð½Ð¸Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ Ñигналом (оÑлиÑнÑм Ð¾Ñ SIGTERM, коÑоÑÑй иÑполÑзÑеÑÑÑ Ð´Ð»Ñ Ð¾ÑÑановки ÑеÑвеÑа баз даннÑÑ ) или пÑи возникновении оÑибки оболоÑки (напÑимеÑ, еÑли команда не найдена), пÑоÑеÑÑ Ð²Ð¾ÑÑÑÐ°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð±ÑÐ´ÐµÑ Ð¾ÑÑановлен и ÑеÑÐ²ÐµÑ Ð½Ðµ запÑÑÑиÑÑÑ.
archive_cleanup_command(string) #ÐÑÐ¾Ñ Ð½ÐµÐ¾Ð±ÑзаÑелÑнÑй паÑамеÑÑ ÑказÑÐ²Ð°ÐµÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ Ð¾Ð±Ð¾Ð»Ð¾Ñки ÐС, коÑоÑÐ°Ñ Ð±ÑÐ´ÐµÑ Ð²ÑзÑваÑÑÑÑ Ð¿Ñи каждой ÑоÑке пеÑезапÑÑка. ÐазнаÑение командÑ
archive_cleanup_commandâ пÑедоÑÑавиÑÑ Ð¼ÐµÑ Ð°Ð½Ð¸Ð·Ð¼ оÑиÑÑки Ð¾Ñ ÑÑаÑÑÑ Ð°ÑÑ Ð¸Ð²Ð½ÑÑ Ñайлов WAL, коÑоÑÑе более не нÑÐ¶Ð½Ñ Ð½Ð° ведомом ÑеÑвеÑе. ÐÑбое Ð²Ñ Ð¾Ð¶Ð´ÐµÐ½Ð¸Ðµ%rзаменÑеÑÑÑ Ð½Ð° Ð¸Ð¼Ñ Ñайла, ÑодеÑжаÑего поÑледнÑÑ Ð´ÐµÐ¹ÑÑвиÑелÑнÑÑ ÑоÑÐºÑ Ð¿ÐµÑезапÑÑка. ÐÑо ÑамÑй Ñанний Ñайл, коÑоÑÑй Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼Ð¾ Ñ ÑаниÑÑ Ð´Ð»Ñ Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ÑÑи воÑÑÑановлениÑ, а более ÑÑаÑÑе ÑÐ°Ð¹Ð»Ñ Ð²Ð¿Ð¾Ð»Ð½Ðµ можно ÑдалиÑÑ. ÐÑа инÑоÑмаÑÐ¸Ñ Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð¸ÑполÑзована Ð´Ð»Ñ ÑÑеÑÐµÐ½Ð¸Ñ Ð°ÑÑ Ð¸Ð²Ð° Ñ ÑелÑÑ ÐµÐ³Ð¾ минимизаÑии пÑи ÑÐ¾Ñ Ñанении возможноÑÑи поÑледÑÑÑего воÑÑÑÐ°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð¸Ð· заданной ÑоÑки. ÐодÑÐ»Ñ pg_archivecleanup ÑаÑÑо иÑполÑзÑеÑÑÑ Ð² каÑеÑÑвеarchive_cleanup_commandв конÑигÑÑаÑиÑÑ Ñ Ð¾Ð´Ð½Ð¸Ð¼ ведомÑм ÑеÑвеÑом, напÑимеÑ:archive_cleanup_command = 'pg_archivecleanup /mnt/server/archivedir %r'
СÑÐ¾Ð¸Ñ Ð¾Ð±ÑаÑиÑÑ Ð²Ð½Ð¸Ð¼Ð°Ð½Ð¸Ðµ, ÑÑо в конÑигÑÑаÑиÑÑ Ñ Ð¼Ð½Ð¾Ð¶ÐµÑÑвом ведомÑÑ ÑеÑвеÑов, иÑполÑзÑÑÑÐ¸Ñ Ð¾Ð±Ñий аÑÑ Ð¸Ð²Ð½Ñй каÑалог Ð´Ð»Ñ Ð²Ð¾ÑÑÑановлениÑ, Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼Ð¾ конÑÑолиÑоваÑÑ Ñдаление Ñайлов WAL, Ñак как они могÑÑ ÐµÑÑ Ð±ÑÑÑ Ð½ÑÐ¶Ð½Ñ Ð½ÐµÐºÐ¾ÑоÑÑм ÑеÑвеÑам. ÐоÑÑомÑ
archive_cleanup_commandобÑÑно иÑполÑзÑеÑÑÑ Ð¿Ñи оÑганизаÑии ÑÑплого ÑезеÑва (Ñм. Раздел 25.2). ЧÑÐ¾Ð±Ñ ÑказаÑÑ Ñимвол%в команде, пÑодÑблиÑÑйÑе его (%%).Ð ÑлÑÑаÑÑ , когда команда возвÑаÑÐ°ÐµÑ Ð½ÐµÐ½Ñлевой ÑÑаÑÑÑ Ð·Ð°Ð²ÐµÑÑениÑ, в жÑÑнал запиÑÑваеÑÑÑ Ð¿ÑедÑпÑеждаÑÑее ÑообÑение. ÐÑли же команда пÑеÑÑваеÑÑÑ Ñигналом или оболоÑка ÐС вÑдаÑÑ Ð¾ÑÐ¸Ð±ÐºÑ (напÑимеÑ, команда не найдена), вÑзÑваеÑÑÑ ÐºÑиÑиÑеÑÐºÐ°Ñ Ð¾Ñибка.
ÐадаÑÑ ÑÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð¼Ð¾Ð¶Ð½Ð¾ ÑолÑко в
postgresql.confили в командной ÑÑÑоке пÑи запÑÑке ÑеÑвеÑа.recovery_end_command(string) #ÐÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð·Ð°Ð´Ð°ÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ Ð¾Ð±Ð¾Ð»Ð¾Ñки, коÑоÑÐ°Ñ Ð±ÑÐ´ÐµÑ Ð²Ñполнена ÐµÐ´Ð¸Ð½Ð¾Ð¶Ð´Ñ Ð² конÑе пÑоÑеÑÑа воÑÑÑановлениÑ. ÐазнаÑение паÑамеÑÑа
recovery_end_commandâ пÑедоÑÑавиÑÑ Ð¼ÐµÑ Ð°Ð½Ð¸Ð·Ð¼ Ð´Ð»Ñ Ð¾ÑиÑÑки поÑле ÑепликаÑии или воÑÑÑановлениÑ. ÐÑбое Ð²Ñ Ð¾Ð¶Ð´ÐµÐ½Ð¸Ðµ%rзаменÑеÑÑÑ Ð¸Ð¼ÐµÐ½ÐµÐ¼ Ñайла, ÑодеÑжаÑим поÑледнÑÑ Ð´ÐµÐ¹ÑÑвиÑелÑнÑÑ ÑоÑÐºÑ Ð²Ð¾ÑÑÑановлениÑ, напÑимеÑ, как в archive_cleanup_command.Ð ÑлÑÑаÑÑ , когда команда возвÑаÑÐ°ÐµÑ Ð½ÐµÐ½Ñлевой ÑÑаÑÑÑ Ð·Ð°Ð²ÐµÑÑениÑ, в жÑÑнал запиÑÑваеÑÑÑ Ð¿ÑедÑпÑеждаÑÑее ÑообÑение, но ÑеÑвеÑ, неÑмоÑÑÑ Ð½Ð° ÑÑо, пÑÐ¾Ð´Ð¾Ð»Ð¶Ð°ÐµÑ Ð·Ð°Ð¿ÑÑкаÑÑÑÑ. ÐÑли же команда пÑеÑÑваеÑÑÑ Ñигналом или оболоÑка ÐС вÑдаÑÑ Ð¾ÑÐ¸Ð±ÐºÑ (напÑимеÑ, команда не найдена), клаÑÑÐµÑ Ð±Ð°Ð· даннÑÑ Ð½Ðµ запÑÑкаеÑÑÑ.
ÐадаÑÑ ÑÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð¼Ð¾Ð¶Ð½Ð¾ ÑолÑко в
postgresql.confили в командной ÑÑÑоке пÑи запÑÑке ÑеÑвеÑа.
18.5.6. Ð¦ÐµÐ»Ñ Ð²Ð¾ÑÑÑÐ°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ #
Ðо ÑмолÑÐ°Ð½Ð¸Ñ Ð²Ð¾ÑÑÑановление пÑоизводиÑÑÑ Ð²Ð¿Ð»Ð¾ÑÑ Ð´Ð¾ оконÑÐ°Ð½Ð¸Ñ Ð¶ÑÑнала WAL. ЧÑÐ¾Ð±Ñ Ð¾ÑÑановиÑÑ Ð¿ÑоÑеÑÑ Ð²Ð¾ÑÑÑÐ°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð² более Ñанней ÑоÑке, можно иÑполÑзоваÑÑ Ð¾Ð´Ð¸Ð½ из ÑледÑÑÑиÑ
паÑамеÑÑов: recovery_target, recovery_target_lsn, recovery_target_name, recovery_target_time или recovery_target_xid. ÐÑли в конÑигÑÑаÑионном Ñайле ÑÑÑанавливаÑÑÑÑ ÑÑÐ°Ð·Ñ Ð½ÐµÑколÑко ÑÑиÑ
паÑамеÑÑов, вÑдаÑÑÑÑ Ð¾Ñибка. ÐадаÑÑ ÑÑи паÑамеÑÑÑ Ð¼Ð¾Ð¶Ð½Ð¾ ÑолÑко пÑи запÑÑке ÑеÑвеÑа.
recovery_target= 'immediate'#ÐаннÑй паÑамеÑÑ ÑказÑваеÑ, ÑÑо пÑоÑеÑÑ Ð²Ð¾ÑÑÑÐ°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð´Ð¾Ð»Ð¶ÐµÐ½ завеÑÑиÑÑÑÑ, как ÑолÑко бÑÐ´ÐµÑ Ð´Ð¾ÑÑигнÑÑо ÑелоÑÑное ÑоÑÑоÑние, Ñ. е. как можно ÑанÑÑе. ÐÑи воÑÑÑановлении из опеÑаÑивной ÑезеÑвной копии, ÑÑо бÑÐ´ÐµÑ ÑоÑкой, в коÑоÑой завеÑÑилÑÑ Ð¿ÑоÑеÑÑ ÑезеÑвного копиÑованиÑ.
Ð¢ÐµÑ Ð½Ð¸ÑеÑки ÑÑо ÑÑÑоковÑй паÑамеÑÑ, но знаÑение
'immediate'â единÑÑвенно допÑÑÑимое в даннÑй моменÑ.recovery_target_name(string) #ÐÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ ÑказÑÐ²Ð°ÐµÑ Ð¸Ð¼ÐµÐ½Ð¾Ð²Ð°Ð½Ð½ÑÑ ÑоÑÐºÑ Ð²Ð¾ÑÑÑÐ°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ (ÑозданнÑÑ Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ
pg_create_restore_point()), до коÑоÑой бÑÐ´ÐµÑ Ð¿ÑоизводиÑÑÑÑ Ð²Ð¾ÑÑÑановление.recovery_target_time(timestamp) #ÐаннÑй паÑамеÑÑ ÑказÑÐ²Ð°ÐµÑ ÑоÑÐºÑ Ð²Ñемени, вплоÑÑ Ð´Ð¾ коÑоÑой бÑÐ´ÐµÑ Ð¿ÑоизводиÑÑÑÑ Ð²Ð¾ÑÑÑановление. ÐконÑаÑелÑно ÑоÑка оÑÑанова опÑеделÑеÑÑÑ Ð² завиÑимоÑÑи Ð¾Ñ Ð·Ð½Ð°ÑÐµÐ½Ð¸Ñ recovery_target_inclusive.
ÐнаÑение ÑÑого паÑамеÑÑа задаÑÑÑÑ Ð² Ñом же ÑоÑмаÑе, ÑÑо пÑинимаеÑÑÑ Ñипом даннÑÑ
timestamp with time zone, за иÑклÑÑением Ñого, ÑÑо в нÑм нелÑÐ·Ñ Ð¸ÑполÑзоваÑÑ ÑокÑаÑÑнное название ÑаÑового поÑÑа (еÑли ÑолÑко пеÑÐµÐ¼ÐµÐ½Ð½Ð°Ñ timezone_abbreviations не бÑла ÑÑÑановлена в Ñайле конÑигÑÑаÑии вÑÑе). ÐоÑÑÐ¾Ð¼Ñ ÑекомендÑеÑÑÑ Ð·Ð°Ð´Ð°Ð²Ð°ÑÑ ÑиÑловое ÑмеÑение Ð¾Ñ UTC или запиÑÑваÑÑ Ð½Ð°Ð·Ð²Ð°Ð½Ð¸Ðµ ÑаÑового поÑÑа полноÑÑÑÑ, напÑимеÑEurope/Helsinki(но неEEST).recovery_target_xid(string) #ÐаÑамеÑÑ ÑказÑÐ²Ð°ÐµÑ Ð¸Ð´ÐµÐ½ÑиÑикаÑÐ¾Ñ ÑÑанзакÑии, вплоÑÑ Ð´Ð¾ коÑоÑой Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼Ð¾ пÑоизвеÑÑи пÑоÑедÑÑÑ Ð²Ð¾ÑÑÑановлениÑ. ÐмейÑе в видÑ, ÑÑо ÑиÑловое знаÑение иденÑиÑикаÑоÑа оÑÑÐ°Ð¶Ð°ÐµÑ Ð¿Ð¾ÑледоваÑелÑноÑÑÑ Ð¸Ð¼ÐµÐ½Ð½Ð¾ ÑÑаÑÑа ÑÑанзакÑий, а ÑикÑиÑоваÑÑÑÑ Ð¾Ð½Ð¸ могÑÑ Ð² ином поÑÑдке. ÐоÑÑÑÐ°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð±ÑдÑÑ Ð¿Ð¾Ð´Ð»ÐµÐ¶Ð°ÑÑ Ð²Ñе ÑÑанзакÑии, ÑÑо бÑли заÑикÑиÑÐ¾Ð²Ð°Ð½Ñ Ð´Ð¾ Ñказанной (и, возможно, вклÑÑÐ°Ñ ÐµÑ). ТоÑноÑÑÑ ÑоÑки оÑÑанова Ñакже завиÑÐ¸Ñ Ð¾Ñ recovery_target_inclusive.
recovery_target_lsn(pg_lsn) #ÐаннÑй паÑамеÑÑ ÑказÑÐ²Ð°ÐµÑ LSN позиÑии в жÑÑнале пÑедзапиÑи, до коÑоÑой должно вÑполнÑÑÑÑÑ Ð²Ð¾ÑÑÑановление. ТоÑÐ½Ð°Ñ Ð¿Ð¾Ð·Ð¸ÑÐ¸Ñ Ð¾ÑÑановки завиÑÐ¸Ñ Ñакже Ð¾Ñ Ð¿Ð°ÑамеÑÑа recovery_target_inclusive. ÐÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð¿ÑÐ¸Ð½Ð¸Ð¼Ð°ÐµÑ Ð·Ð½Ð°Ñение ÑиÑÑемного Ñипа даннÑÑ
pg_lsn.
СледÑÑÑие паÑамеÑÑÑ ÑÑоÑнÑÑÑ ÑелевÑÑ ÑоÑÐºÑ Ð²Ð¾ÑÑÑÐ°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð¸ опÑеделÑÑÑ, ÑÑо бÑÐ´ÐµÑ Ð¿ÑоиÑÑ Ð¾Ð´Ð¸ÑÑ Ð¿Ñи ÐµÑ Ð´Ð¾ÑÑижении:
recovery_target_inclusive(boolean) #УказÑÐ²Ð°ÐµÑ Ð½Ð° Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼Ð¾ÑÑÑ Ð¾ÑÑановки ÑÑÐ°Ð·Ñ Ð¿Ð¾Ñле (
on) либо до (off) доÑÑÐ¸Ð¶ÐµÐ½Ð¸Ñ Ñелевой ÑоÑки. ÐÑименÑеÑÑÑ Ð¾Ð´Ð½Ð¾Ð²Ñеменно Ñ recovery_target_lsn, recovery_target_time или recovery_target_xid. ÐÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð¾Ð¿ÑеделÑеÑ, нÑжно ли воÑÑÑанавливаÑÑ ÑÑанзакÑии, Ñ ÐºÐ¾ÑоÑÑÑ Ð¿Ð¾Ð·Ð¸ÑÐ¸Ñ Ð² WAL (LSN), вÑÐµÐ¼Ñ ÑикÑаÑии либо иденÑиÑикаÑÐ¾Ñ Ð² ÑоÑноÑÑи ÑÐ¾Ð²Ð¿Ð°Ð´Ð°ÐµÑ Ñ Ð·Ð°Ð´Ð°Ð½Ð½Ñм ÑооÑвеÑÑÑвÑÑÑим знаÑением. Ðо ÑмолÑÐ°Ð½Ð¸Ñ Ð²ÑбиÑаеÑÑÑ Ð²Ð°ÑианÑon.recovery_target_timeline(string) #УказÑÐ²Ð°ÐµÑ Ð»Ð¸Ð½Ð¸Ñ Ð²Ñемени Ð´Ð»Ñ Ð²Ð¾ÑÑÑановлениÑ. ÐнаÑение Ð¼Ð¾Ð¶ÐµÑ Ð·Ð°Ð´Ð°Ð²Ð°ÑÑÑÑ ÑиÑловÑм иденÑиÑикаÑоÑом линии вÑемени или клÑÑевÑм Ñловом. С клÑÑевÑм Ñловом
currentвоÑÑÑанавливаеÑÑÑ Ñа Ð»Ð¸Ð½Ð¸Ñ Ð²Ñемени, коÑоÑÐ°Ñ Ð±Ñла акÑивной пÑи Ñоздании базовой ÑезеÑвной копии. С клÑÑевÑм ÑловомlatestвоÑÑÑанавливаÑÑÑÑ Ð±ÑÐ´ÐµÑ Ð¿Ð¾ÑледнÑÑ Ð»Ð¸Ð½Ð¸Ñ Ð²Ñемени, Ð½Ð°Ð¹Ð´ÐµÐ½Ð½Ð°Ñ Ð² аÑÑ Ð¸Ð²Ðµ, ÑÑо полезно Ð´Ð»Ñ Ð²ÐµÐ´Ð¾Ð¼Ð¾Ð³Ð¾ ÑеÑвеÑа. Ðо ÑмолÑÐ°Ð½Ð¸Ñ Ð¿Ð¾Ð´ÑазÑмеваеÑÑÑlatest.ЧÑÐ¾Ð±Ñ ÑказаÑÑ Ð¸Ð´ÐµÐ½ÑиÑикаÑÐ¾Ñ Ð»Ð¸Ð½Ð¸Ð¸ вÑемени в ÑеÑÑнадÑаÑеÑиÑном ÑоÑмаÑе (напÑимеÑ, еÑли он извлеÑÑн из имени Ñайла WAL или Ñайла иÑÑоÑии), добавÑÑе к Ð½ÐµÐ¼Ñ Ð¿ÑеÑикÑ
0x. ÐапÑимеÑ, еÑли Ð¸Ð¼Ñ Ñайла WAL â00000011000000A10000004F, Ñо иденÑиÑикаÑÐ¾Ñ Ð»Ð¸Ð½Ð¸Ð¸ вÑемени â0x11(или деÑÑÑиÑное ÑиÑло 17).ÐадаваÑÑ ÑÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð¾Ð±ÑÑно ÑÑебÑеÑÑÑ ÑолÑко в ÑложнÑÑ ÑиÑÑаÑиÑÑ Ñ Ð¿Ð¾Ð²ÑоÑами воÑÑÑановлениÑ, когда Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼Ð¾ веÑнÑÑÑÑÑ Ðº ÑоÑÑоÑниÑ, коÑоÑое Ñамо бÑло доÑÑигнÑÑо поÑле воÑÑÑÐ°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð½Ð° Ð¼Ð¾Ð¼ÐµÐ½Ñ Ð²Ñемени. ÐÑо обÑÑждаеÑÑÑ Ð² ÐодÑазделе 24.3.5.
recovery_target_action(enum) #УказÑваеÑ, какое дейÑÑвие должен пÑедпÑинÑÑÑ ÑеÑÐ²ÐµÑ Ð¿Ð¾Ñле доÑÑÐ¸Ð¶ÐµÐ½Ð¸Ñ Ñели воÑÑÑановлениÑ. ÐаÑÐ¸Ð°Ð½Ñ Ð¿Ð¾ ÑмолÑÐ°Ð½Ð¸Ñ â
pause, ÑÑо ознаÑÐ°ÐµÑ Ð¿ÑиоÑÑÐ°Ð½Ð¾Ð²ÐºÑ Ð²Ð¾ÑÑÑановлениÑ. ÐÑоÑой ваÑианÑ,promote, ознаÑаеÑ, ÑÑо пÑоÑеÑÑ Ð²Ð¾ÑÑÑÐ°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð·Ð°Ð²ÐµÑÑиÑÑÑ, и ÑеÑÐ²ÐµÑ Ð½Ð°ÑнÑÑ Ð¿ÑинимаÑÑ Ð¿Ð¾Ð´ÐºÐ»ÑÑениÑ. ÐаконеÑ, Ñ Ð²Ð°ÑианÑомshutdownÑеÑÐ²ÐµÑ Ð¾ÑÑановиÑÑÑ, как ÑолÑко ÑÐµÐ»Ñ Ð²Ð¾ÑÑÑÐ°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð±ÑÐ´ÐµÑ Ð´Ð¾ÑÑигнÑÑа.ÐаÑианÑ
pauseпозволÑÐµÑ Ð²ÑполниÑÑ Ð·Ð°Ð¿ÑоÑÑ Ðº базе даннÑÑ Ð¸ ÑбедиÑÑÑÑ Ð² Ñом, ÑÑо доÑÑигнÑÑÐ°Ñ ÑÐµÐ»Ñ Ð¾ÐºÐ°Ð·Ð°Ð»Ð°ÑÑ Ð¶ÐµÐ»Ð°ÐµÐ¼Ð¾Ð¹ ÑоÑкой воÑÑÑановлениÑ. ÐÐ»Ñ ÑнÑÑÐ¸Ñ Ñ Ð¿Ð°ÑÐ·Ñ Ð½Ñжно вÑзваÑÑpg_wal_replay_resume()(Ñм. ТаблиÑÑ 9.94), ÑÑо в иÑоге пÑиведÑÑ Ðº завеÑÑÐµÐ½Ð¸Ñ Ð²Ð¾ÑÑÑановлениÑ. ÐÑли же окажеÑÑÑ, ÑÑо Ð¼Ñ ÐµÑÑ Ð½Ðµ доÑÑигли желаемой ÑоÑки воÑÑÑановлениÑ, нÑжно оÑÑановиÑÑ ÑеÑвеÑ, ÑÑÑановиÑÑ Ð±Ð¾Ð»ÐµÐµ позднÑÑ ÑÐµÐ»Ñ Ð¸ пеÑезапÑÑÑиÑÑ ÑеÑÐ²ÐµÑ Ð´Ð»Ñ Ð¿ÑÐ¾Ð´Ð¾Ð»Ð¶ÐµÐ½Ð¸Ñ Ð²Ð¾ÑÑÑановлениÑ.ÐаÑианÑ
shutdownполезен Ð´Ð»Ñ Ð¿Ð¾Ð»ÑÑÐµÐ½Ð¸Ñ Ð³Ð¾Ñового ÑкземплÑÑа ÑеÑвеÑа в желаемой ÑоÑке. ÐÑи ÑÑом даннÑй ÑкземплÑÑ ÑÐ¼Ð¾Ð¶ÐµÑ Ð²Ð¾ÑпÑоизводиÑÑ Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸ÑелÑнÑе запиÑи WAL (а пÑи пеÑезапÑÑке ÐµÐ¼Ñ Ð¿ÑидÑÑÑÑ Ð²Ð¾ÑпÑоизводиÑÑ Ð·Ð°Ð¿Ð¸Ñи WAL поÑле поÑледней конÑÑолÑной ÑоÑки).ÐамеÑÑÑе, ÑÑо Ñак как
recovery.signalне пеÑеименовÑваеÑÑÑ, когда вrecovery_target_actionвÑбÑан ваÑианÑshutdown, пÑи поÑледÑÑÑем запÑÑке бÑÐ´ÐµÑ Ð¿ÑоиÑÑ Ð¾Ð´Ð¸ÑÑ Ð½ÐµÐ¼ÐµÐ´Ð»ÐµÐ½Ð½Ð°Ñ Ð¾ÑÑановка, пока Ð²Ñ Ð½Ðµ измениÑе конÑигÑÑаÑÐ¸Ñ Ð¸Ð»Ð¸ не ÑдалиÑе Ñайлrecovery.signalвÑÑÑнÑÑ.ÐÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð½Ðµ дейÑÑвÑеÑ, еÑли ÑÐµÐ»Ñ Ð²Ð¾ÑÑÑÐ°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð½Ðµ ÑÑÑановлена. ÐÑли не вклÑÑÑн Ñежим hot_standby, знаÑение
pauseдейÑÑвÑÐµÑ Ñак же, как иshutdown. ÐÑли ÑÐµÐ»Ñ Ð²Ð¾ÑÑÑÐ°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð´Ð¾ÑÑигаеÑÑÑ Ð² пÑоÑеÑÑе повÑÑениÑ,pauseдейÑÑвÑÐµÑ ÐºÐ°Ðºpromote.РлÑбом ÑлÑÑае, еÑли задана ÑÐµÐ»Ñ Ð²Ð¾ÑÑÑановлениÑ, но воÑÑÑановление аÑÑ Ð¸Ð²Ð° завеÑÑаеÑÑÑ Ð´Ð¾ ÐµÑ Ð·Ð°Ð²ÐµÑÑениÑ, ÑеÑÐ²ÐµÑ Ð·Ð°Ð²ÐµÑÑÐ¸Ñ ÑабоÑÑ Ñ ÐºÑиÑиÑеÑкой оÑибкой.