18.6. РепликаÑÐ¸Ñ #
ÐÑи паÑамеÑÑÑ ÑпÑавлÑÑÑ Ð¿Ð¾Ð²ÐµÐ´ÐµÐ½Ð¸ÐµÐ¼ вÑÑÑоеннÑÑ Ð¼ÐµÑ Ð°Ð½Ð¸Ð·Ð¼Ð¾Ð² поÑоковой ÑепликаÑии (Ñм. ÐодÑаздел 25.2.5) и логиÑеÑкой ÑепликаÑии (Ñм. ÐлавÑ 28).
РпоÑоковой ÑепликаÑии один ÑеÑÐ²ÐµÑ ÑвлÑеÑÑÑ Ð²ÐµÐ´ÑÑим, а дÑÑгие â ведомÑми. ÐедÑÑий ÑеÑÐ²ÐµÑ Ð²Ñегда пеÑедаÑÑ, а ведомÑе вÑегда пÑинимаÑÑ Ð´Ð°Ð½Ð½Ñе ÑепликаÑии, но когда наÑÑÑоена каÑÐºÐ°Ð´Ð½Ð°Ñ ÑепликаÑÐ¸Ñ (Ñм. ÐодÑаздел 25.2.7), ведомÑе ÑеÑвеÑÑ Ð¼Ð¾Ð³ÑÑ Ð±ÑÑÑ Ð¸ пеÑедаÑÑими. СледÑÑÑие паÑамеÑÑÑ Ð² оÑновном оÑноÑÑÑÑÑ Ðº пеÑедаÑÑим и ведомÑм ÑеÑвеÑам, Ñ Ð¾ÑÑ Ð½ÐµÐºÐ¾ÑоÑÑе паÑамеÑÑÑ Ð¸Ð¼ÐµÑÑ ÑмÑÑл ÑолÑко Ð´Ð»Ñ Ð²ÐµÐ´ÑÑего. ÐÑе ÑÑи паÑамеÑÑÑ Ð¼Ð¾Ð³ÑÑ Ð±ÑÑÑ ÑазнÑми в ÑÐ°Ð¼ÐºÐ°Ñ Ð¾Ð´Ð½Ð¾Ð³Ð¾ клаÑÑеÑа, еÑли ÑÑо ÑÑебÑеÑÑÑ.
ÐÐ»Ñ Ð»Ð¾Ð³Ð¸ÑеÑкой ÑепликаÑии пÑбликÑÑÑие ÑеÑвеÑÑ (ÑеÑвеÑÑ, вÑполнÑÑÑие CREATE PUBLICATION) пеÑедаÑÑ Ð´Ð°Ð½Ð½Ñе ÑепликаÑии подпиÑÑикам (ÑеÑвеÑам, вÑполнÑÑÑим CREATE SUBSCRIPTION). СеÑвеÑÑ Ñакже могÑÑ Ð±ÑÑÑ Ð¿ÑбликÑÑÑими и подпиÑÑиками одновÑеменно. ÐбÑаÑиÑе внимание, ÑÑо в ÑледÑÑÑиÑ
ÑазделаÑ
пÑбликÑÑÑие ÑеÑвеÑÑ Ð½Ð°Ð·ÑваÑÑÑÑ Â«Ð¿ÐµÑедаÑÑими ÑеÑвеÑами» или «пеÑедаÑÑиками». Ðа дополниÑелÑной инÑоÑмаÑией о паÑамеÑÑаÑ
конÑигÑÑаÑии логиÑеÑкой ÑепликаÑии обÑаÑиÑеÑÑ Ðº РазделÑ 28.12.
18.6.1. ÐеÑедаÑÑие ÑеÑвеÑÑ #
ÐÑи паÑамеÑÑÑ Ð¼Ð¾Ð¶Ð½Ð¾ задаÑÑ Ð½Ð° лÑбом ÑеÑвеÑе, коÑоÑÑй пеÑедаÑÑ Ð´Ð°Ð½Ð½Ñе ÑепликаÑии Ð¾Ð´Ð½Ð¾Ð¼Ñ Ð¸Ð»Ð¸ неÑколÑким ведомÑм. ÐедÑÑий ÑеÑÐ²ÐµÑ Ð²Ñегда ÑвлÑеÑÑÑ Ð¿ÐµÑедаÑÑим, Ñак ÑÑо на нÑм они Ð´Ð¾Ð»Ð¶Ð½Ñ Ð·Ð°Ð´Ð°Ð²Ð°ÑÑÑÑ Ð²Ñегда. Ð Ð¾Ð»Ñ Ð¸ знаÑение ÑÑÐ¸Ñ Ð¿Ð°ÑамеÑÑов не менÑÑÑÑÑ Ð¿Ð¾Ñле Ñого, как ведомÑй ÑеÑÐ²ÐµÑ ÑÑановиÑÑÑ Ð²ÐµÐ´ÑÑим.
max_wal_senders(integer) #ÐадаÑÑ Ð¼Ð°ÐºÑималÑно допÑÑÑимое ÑиÑло одновÑеменнÑÑ Ð¿Ð¾Ð´ÐºÐ»ÑÑений ведомÑÑ ÑеÑвеÑов или клиенÑов поÑокового копиÑÐ¾Ð²Ð°Ð½Ð¸Ñ (Ñ. е. макÑималÑное колиÑеÑÑво одновÑеменно ÑабоÑаÑÑÐ¸Ñ Ð¿ÑоÑеÑÑов пеÑедаÑи WAL). ÐнаÑение по ÑмолÑÐ°Ð½Ð¸Ñ â
10. ÐÑи знаÑении0ÑепликаÑÐ¸Ñ Ð¾ÑклÑÑаеÑÑÑ. Ð ÑлÑÑае неожиданного оÑклÑÑÐµÐ½Ð¸Ñ ÐºÐ»Ð¸ÐµÐ½Ñа поÑоковой пеÑедаÑи ÑÐ»Ð¾Ñ Ð¿Ð¾Ð´ÐºÐ»ÑÑÐµÐ½Ð¸Ñ Ð¼Ð¾Ð¶ÐµÑ Ð¾ÑÑаваÑÑÑÑ Ð·Ð°Ð½ÑÑÑм до доÑÑÐ¸Ð¶ÐµÐ½Ð¸Ñ Ñайм-аÑÑа, Ñак ÑÑо ÑÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð´Ð¾Ð»Ð¶ÐµÐ½ бÑÑÑ Ð½ÐµÐ¼Ð½Ð¾Ð³Ð¾ болÑÑе макÑималÑно допÑÑÑимого ÑиÑла клиенÑов, ÑÑÐ¾Ð±Ñ Ð¾ÑклÑÑивÑиеÑÑ ÐºÐ»Ð¸ÐµÐ½ÑÑ Ð¼Ð¾Ð³Ð»Ð¸ пеÑеподклÑÑиÑÑÑÑ Ð½ÐµÐ¼ÐµÐ´Ð»ÐµÐ½Ð½Ð¾. ÐадаÑÑ ÑÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð¼Ð¾Ð¶Ð½Ð¾ ÑолÑко пÑи запÑÑке ÑеÑвеÑа. ЧÑÐ¾Ð±Ñ Ðº Ð´Ð°Ð½Ð½Ð¾Ð¼Ñ ÑеÑвеÑÑ Ð¼Ð¾Ð³Ð»Ð¸ подклÑÑаÑÑÑÑ Ð²ÐµÐ´Ð¾Ð¼Ñе, ÑÑовенÑwal_levelдолжен бÑÑÑreplicaили вÑÑе.ÐÐ»Ñ Ð²ÐµÐ´Ð¾Ð¼Ð¾Ð³Ð¾ ÑеÑвеÑа знаÑение ÑÑого паÑамеÑÑа должно бÑÑÑ Ð±Ð¾Ð»ÑÑе или Ñавно знаÑÐµÐ½Ð¸Ñ Ð½Ð° ведÑÑем. РпÑоÑивном ÑлÑÑае на ведомом ÑеÑвеÑе не бÑдÑÑ ÑазÑеÑÐµÐ½Ñ Ð·Ð°Ð¿ÑоÑÑ.
max_replication_slots(integer) #ÐадаÑÑ Ð¼Ð°ÐºÑималÑное ÑиÑло ÑлоÑов ÑепликаÑии (Ñм. ÐодÑаздел 25.2.6), коÑоÑое ÑÐ¼Ð¾Ð¶ÐµÑ Ð¿Ð¾Ð´Ð´ÐµÑживаÑÑ ÑеÑвеÑ. ÐнаÑение по ÑмолÑÐ°Ð½Ð¸Ñ â 10. ÐÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð¼Ð¾Ð¶Ð½Ð¾ задаÑÑ ÑолÑко пÑи запÑÑке ÑеÑвеÑа. ÐÑли заданное знаÑение данного паÑамеÑÑа бÑÐ´ÐµÑ Ð¼ÐµÐ½ÑÑе, Ñем ÑиÑло Ñже ÑÑÑеÑÑвÑÑÑÐ¸Ñ ÑлоÑов ÑепликаÑии, ÑеÑÐ²ÐµÑ Ð½Ðµ запÑÑÑиÑÑÑ. ЧÑÐ¾Ð±Ñ ÑлоÑÑ ÑепликаÑии можно бÑло иÑполÑзоваÑÑ, нÑжно Ñакже ÑÑÑановиÑÑ Ð²
wal_levelÑÑовенÑreplicaили вÑÑе.wal_keep_size(integer) #ÐадаÑÑ Ð¼Ð¸Ð½Ð¸Ð¼Ð°Ð»ÑнÑй обÑÑм пÑоÑлÑÑ Ñайлов WAL, коÑоÑÑй бÑÐ´ÐµÑ ÑÐ¾Ñ ÑанÑÑÑÑÑ Ð² каÑалоге
pg_wal, ÑÑÐ¾Ð±Ñ Ð²ÐµÐ´Ð¾Ð¼Ñй ÑеÑÐ²ÐµÑ Ð¼Ð¾Ð³ вÑбÑаÑÑ Ð¸Ñ Ð¿Ñи поÑоковой ÑепликаÑии. ÐÑли ведомÑй ÑеÑвеÑ, подклÑÑÑннÑй к пеÑедаÑÑемÑ, оÑÑÑаÑÑ Ð±Ð¾Ð»ÑÑе Ñем наwal_keep_sizeмегабайÑ, пеÑедаÑÑий Ð¼Ð¾Ð¶ÐµÑ ÑдалиÑÑ ÑегменÑÑ WAL, вÑÑ ÐµÑÑ Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼Ñе ведомомÑ, и в ÑÑом ÑлÑÑае Ñоединение ÑепликаÑии пÑеÑвÑÑÑÑ. Ð ÑезÑлÑÑаÑе ÑÑого заÑем Ñакже бÑдÑÑ Ð¿ÑеÑÐ²Ð°Ð½Ñ Ð·Ð°Ð²Ð¸ÑимÑе ÑоединениÑ. (Ðднако ведомÑй ÑеÑÐ²ÐµÑ ÑÐ¼Ð¾Ð¶ÐµÑ Ð²Ð¾ÑÑÑановиÑÑÑÑ, вÑбÑав ÑÑÐ¾Ñ ÑÐµÐ³Ð¼ÐµÐ½Ñ Ð¸Ð· аÑÑ Ð¸Ð²Ð°, еÑли оÑÑÑеÑÑвлÑеÑÑÑ Ð°ÑÑ Ð¸Ð²Ð°ÑÐ¸Ñ WAL.)ÐÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð·Ð°Ð´Ð°ÑÑ ÑолÑко минималÑнÑй обÑÑм ÑегменÑов, коÑоÑÑй бÑÐ´ÐµÑ ÑÐ¾Ñ ÑанÑÑÑÑÑ Ð² каÑалоге
pg_wal; Ð´Ð»Ñ Ð°ÑÑ Ð¸Ð²Ð°Ñии WAL или Ð´Ð»Ñ Ð²Ð¾ÑÑÑÐ°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ñ Ð¼Ð¾Ð¼ÐµÐ½Ñа конÑÑолÑной ÑоÑки Ð¼Ð¾Ð¶ÐµÑ Ð¿Ð¾ÑÑебоваÑÑÑÑ ÑÐ¾Ñ ÑаниÑÑ Ð±Ð¾Ð»ÑÑе ÑегменÑов. ÐÑлиwal_keep_sizeÑавен нÑÐ»Ñ (ÑÑо знаÑение по ÑмолÑаниÑ), ÑиÑÑема не ÑÐ¾Ñ ÑанÑÐµÑ Ð½Ð¸ÐºÐ°ÐºÐ¸Ðµ дополниÑелÑнÑе ÑегменÑÑ Ð´Ð»Ñ Ð²ÐµÐ´Ð¾Ð¼ÑÑ ÑеÑвеÑов, поÑÑÐ¾Ð¼Ñ ÑиÑло ÑÑаÑÑÑ ÑегменÑов WAL, доÑÑÑпнÑÑ Ð´Ð»Ñ Ð²ÐµÐ´Ð¾Ð¼ÑÑ , завиÑÐ¸Ñ Ð¾Ñ Ð¿Ð¾Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð¿ÑедÑдÑÑей конÑÑолÑной ÑоÑки и ÑоÑÑоÑÐ½Ð¸Ñ Ð°ÑÑ Ð¸Ð²Ð°Ñии WAL. ÐÑли ÑÑо знаÑение задаÑÑÑÑ Ð±ÐµÐ· ÐµÐ´Ð¸Ð½Ð¸Ñ Ð¸Ð·Ð¼ÐµÑениÑ, оно ÑÑиÑаеÑÑÑ Ð·Ð°Ð´Ð°Ð½Ð½Ñм в мегабайÑÐ°Ñ . ÐадаÑÑ ÑÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð¼Ð¾Ð¶Ð½Ð¾ ÑолÑко вpostgresql.confили в командной ÑÑÑоке пÑи запÑÑке ÑеÑвеÑа.max_slot_wal_keep_size(integer) #ÐадаÑÑ Ð¼Ð°ÐºÑималÑнÑй ÑÐ°Ð·Ð¼ÐµÑ Ñайлов WAL, коÑоÑÑй Ð¼Ð¾Ð¶ÐµÑ Ð¾ÑÑаваÑÑÑÑ Ð² каÑалоге
pg_walÐ´Ð»Ñ ÑлоÑов ÑепликаÑии поÑле вÑÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ ÐºÐ¾Ð½ÑÑолÑной ÑоÑки. Со знаÑениемmax_slot_wal_keep_size, ÑавнÑм -1 (по ÑмолÑаниÑ), Ð´Ð»Ñ ÑлоÑов ÑепликаÑии Ð¼Ð¾Ð¶ÐµÑ ÑÐ¾Ñ ÑанÑÑÑÑÑ Ð½ÐµÐ¾Ð³ÑаниÑеннÑй обÑÑм Ñайлов WAL. ÐÑи неоÑÑиÑаÑелÑном знаÑении, еÑли позиÑÐ¸Ñ restart_lsn Ð´Ð»Ñ ÑлоÑа ÑепликаÑии оÑÑÑаÑÑ Ð¾Ñ ÑекÑÑего LSN более Ñем на заданное колиÑеÑÑво мегабайÑ, иÑполÑзÑÑÑий ÑÑÐ¾Ñ ÑÐ»Ð¾Ñ Ð²ÐµÐ´Ð¾Ð¼Ñй ÑеÑÐ²ÐµÑ Ð¼Ð¾Ð¶ÐµÑ Ð»Ð¸ÑиÑÑÑÑ Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ÑÑи пÑодолжиÑÑ ÑепликаÑÐ¸Ñ Ð²ÑледÑÑвие ÑÐ´Ð°Ð»ÐµÐ½Ð¸Ñ Ð½ÑжнÑÑ ÐµÐ¼Ñ Ñайлов WAL. ÐоÑÑÑпноÑÑÑ WAL Ð´Ð»Ñ ÑлоÑов ÑепликаÑии показÑваеÑÑÑ Ð² пÑедÑÑавлении pg_replication_slots. ÐÑли ÑÑо знаÑение Ñказано без ÐµÐ´Ð¸Ð½Ð¸Ñ Ð¸Ð·Ð¼ÐµÑениÑ, оно ÑÑиÑаеÑÑÑ Ð·Ð°Ð´Ð°Ð½Ð½Ñм в мегабайÑÐ°Ñ . ÐаннÑй паÑамеÑÑ Ð¼Ð¾Ð¶Ð½Ð¾ задаÑÑ ÑолÑко в Ñайлеpostgresql.confили в командной ÑÑÑоке ÑеÑвеÑа.idle_replication_slot_timeout(integer) #ÐннÑлиÑÑÐµÑ ÑлоÑÑ ÑепликаÑии, коÑоÑÑе оÑÑавалиÑÑ Ð½ÐµÐ°ÐºÑивнÑми (не иÑполÑзовалиÑÑ Ð¿Ð¾Ð´ÐºÐ»ÑÑением Ð´Ð»Ñ ÑепликаÑии) долÑÑе Ñказанного вÑемени. ÐÑли знаÑение задано без ÐµÐ´Ð¸Ð½Ð¸Ñ Ð¸Ð·Ð¼ÐµÑениÑ, оно инÑеÑпÑеÑиÑÑеÑÑÑ ÐºÐ°Ðº колиÑеÑÑво ÑекÑнд. ÐнаÑение
0(по ÑмолÑаниÑ) оÑклÑÑÐ°ÐµÑ Ð¼ÐµÑ Ð°Ð½Ð¸Ð·Ð¼ аннÑлиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð¿Ð¾ Ñайм-аÑÑÑ Ð¿ÑоÑÑоÑ. ÐадаÑÑ ÑÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð¼Ð¾Ð¶Ð½Ð¾ ÑолÑко вpostgresql.confили в командной ÑÑÑоке пÑи запÑÑке ÑеÑвеÑа.ÐннÑлиÑование ÑлоÑа по Ñайм-аÑÑÑ Ð¿ÑоÑÑÐ¾Ñ Ð²ÑполнÑеÑÑÑ Ð²Ð¾ вÑÐµÐ¼Ñ ÐºÐ¾Ð½ÑÑолÑной ÑоÑки. ÐоÑколÑÐºÑ ÐºÐ¾Ð½ÑÑолÑнÑе ÑоÑки запÑÑкаÑÑÑÑ ÑеÑез инÑеÑвалÑ
checkpoint_timeout, Ð¼Ð¾Ð¶ÐµÑ Ð²Ð¾Ð·Ð½Ð¸ÐºÐ°ÑÑ Ð½ÐµÐºÐ¾ÑоÑÐ°Ñ Ð·Ð°Ð´ÐµÑжка Ð¼ÐµÐ¶Ð´Ñ Ð¿ÑевÑÑением знаÑениÑidle_replication_slot_timeoutи аннÑлиÑованием ÑлоÑа в ÑледÑÑÑей конÑÑолÑной ÑоÑке. ЧÑÐ¾Ð±Ñ Ð¸Ð·Ð±ÐµÐ¶Ð°ÑÑ Ð¿Ð¾Ð´Ð¾Ð±Ð½ÑÑ Ð·Ð°Ð´ÐµÑжек, аннÑлиÑоваÑÑ Ð½ÐµÐ°ÐºÑивнÑй ÑÐ»Ð¾Ñ Ð² конÑÑолÑной ÑоÑке можно бÑÑÑÑо пÑинÑдиÑелÑно. ÐÑодолжиÑелÑноÑÑÑ Ð½ÐµÐ°ÐºÑивноÑÑи ÑлоÑа ÑаÑÑÑиÑÑваеÑÑÑ Ð¸Ð· знаÑÐµÐ½Ð¸Ñ pg_replication_slots.inactive_sinceÑлоÑа.ÐбÑаÑиÑе внимание, ÑÑо Ð¼ÐµÑ Ð°Ð½Ð¸Ð·Ð¼ аннÑлиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð¿Ð¾ Ñайм-аÑÑÑ Ð¿ÑоÑÑÐ¾Ñ Ð½Ðµ пÑименÑеÑÑÑ Ðº ÑлоÑам, коÑоÑÑе не ÑезеÑвиÑÑÑÑ WAL, а Ñакже к ÑлоÑам на ÑезеÑвном ÑеÑвеÑе, ÑÐ¸Ð½Ñ ÑонизиÑÑемÑм Ñ Ð²ÐµÐ´ÑÑим ÑеÑвеÑом (Ñо еÑÑÑ Ðº ÑезеÑвнÑм ÑлоÑам, Ñ ÐºÐ¾ÑоÑÑÑ Ð² пÑедÑÑавлении pg_replication_slots поле
syncedÐ¸Ð¼ÐµÐµÑ Ð·Ð½Ð°Ñениеtrue). Ð¡Ð¸Ð½Ñ ÑонизиÑованнÑе ÑлоÑÑ Ð²Ñегда ÑÑиÑаÑÑÑÑ Ð½ÐµÐ°ÐºÑивнÑми, поÑколÑÐºÑ Ð¾Ð½Ð¸ не вÑполнÑÑÑ Ð»Ð¾Ð³Ð¸ÑеÑкое декодиÑование и не ÑоÑмиÑÑÑÑ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ.wal_sender_timeout(integer) #ÐадаÑÑ Ð¿ÐµÑиод вÑемени, по иÑÑеÑении коÑоÑого пÑеÑÑваÑÑÑÑ Ð½ÐµÐ°ÐºÑивнÑе ÑÐ¾ÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ ÑепликаÑии. ÐÑо Ð¿Ð¾Ð¼Ð¾Ð³Ð°ÐµÑ Ð¿ÐµÑедаÑÑÐµÐ¼Ñ ÑеÑвеÑÑ Ð¾Ð±Ð½Ð°ÑÑжиÑÑ Ñбой ведомого или ÑазÑÑÐ²Ñ ÑеÑи. ÐÑли ÑÑо знаÑение задаÑÑÑÑ Ð±ÐµÐ· ÐµÐ´Ð¸Ð½Ð¸Ñ Ð¸Ð·Ð¼ÐµÑениÑ, оно ÑÑиÑаеÑÑÑ Ð·Ð°Ð´Ð°Ð½Ð½Ñм в миллиÑекÑÐ½Ð´Ð°Ñ . ÐнаÑение по ÑмолÑÐ°Ð½Ð¸Ñ â 60 ÑекÑнд. ÐÑи знаÑении, Ñавном нÑлÑ, Ñайм-аÑÑ Ð¾ÑклÑÑаеÑÑÑ.
ÐÑли ÑÐ·Ð»Ñ ÐºÐ»Ð°ÑÑеÑа ÑаÑпÑÐµÐ´ÐµÐ»ÐµÐ½Ñ Ð³ÐµÐ¾Ð³ÑаÑиÑеÑки, его можно гибко наÑÑÑоиÑÑ, иÑполÑзÑÑ ÑазнÑе знаÑÐµÐ½Ð¸Ñ Ð² ÑазнÑÑ ÑаÑположениÑÑ . ÐаленÑкие знаÑÐµÐ½Ð¸Ñ Ð¿Ð¾Ð»ÐµÐ·Ð½Ñ Ð´Ð»Ñ Ð±Ð¾Ð»ÐµÐµ бÑÑÑÑого обнаÑÑÐ¶ÐµÐ½Ð¸Ñ Ð¿Ð¾ÑеÑи ведомого, подклÑÑÑнного по ÑкоÑоÑÑÐ½Ð¾Ð¼Ñ ÐºÐ°Ð½Ð°Ð»Ñ, а болÑÑие â Ð´Ð»Ñ Ð±Ð¾Ð»ÐµÐµ надÑжного опÑÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ñ ÑоÑÑоÑÐ½Ð¸Ñ Ð²ÐµÐ´Ð¾Ð¼Ð¾Ð³Ð¾, ÑаÑположенного в ÑдалÑнной ÑеÑи, Ñоединение Ñ ÐºÐ¾ÑоÑой Ñ Ð°ÑакÑеÑизÑеÑÑÑ Ð±Ð¾Ð»ÑÑими задеÑжками.
track_commit_timestamp(boolean) #ÐпÑеделÑеÑ, бÑÐ´ÐµÑ Ð»Ð¸ ÑÐ¾Ñ ÑанÑÑÑÑÑ Ð²ÑÐµÐ¼Ñ ÑикÑаÑии ÑÑанзакÑий. ÐÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð¼Ð¾Ð¶Ð½Ð¾ задаÑÑ ÑолÑко пÑи запÑÑке ÑеÑвеÑа. Ðо ÑмолÑÐ°Ð½Ð¸Ñ Ð¾Ð½ Ð¸Ð¼ÐµÐµÑ Ð·Ð½Ð°Ñение
off.synchronized_standby_slots(string) #РазделÑннÑй запÑÑÑми ÑпиÑок имÑн ÑлоÑов ÑезеÑвнÑÑ ÑеÑвеÑов поÑоковой ÑепликаÑии, коÑоÑÑÑ Ð±ÑдÑÑ Ð¾Ð¶Ð¸Ð´Ð°ÑÑ Ð»Ð¾Ð³Ð¸ÑеÑкие пеÑедаÑÑие WAL пÑоÑеÑÑÑ. ÐÑи пÑоÑеÑÑÑ Ð±ÑдÑÑ Ð¾ÑпÑавлÑÑÑ Ð´ÐµÐºÐ¾Ð´Ð¸ÑованнÑе Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð¼Ð¾Ð´ÑлÑм ÑолÑко поÑле Ñого, как ÑказаннÑе ÑлоÑÑ ÑепликаÑии подÑвеÑдÑÑ Ð¿Ð¾Ð»ÑÑение WAL. ÐÑо гаÑанÑиÑÑеÑ, ÑÑо ÑлоÑÑ Ð¾ÑÑабоÑки оÑказа логиÑеÑкой ÑепликаÑии не бÑдÑÑ Ð¸ÑполÑзоваÑÑ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð´Ð¾ ÑÐµÑ Ð¿Ð¾Ñ, пока ÑÑи Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð½Ðµ бÑдÑÑ Ð¿Ð¾Ð»ÑÑÐµÐ½Ñ Ð¸ ÑбÑоÑÐµÐ½Ñ Ð½Ð° ÑооÑвеÑÑÑвÑÑÑие ÑизиÑеÑкие ÑезеÑвнÑе ÑеÑвеÑÑ. ÐÑли подклÑÑение логиÑеÑкой ÑепликаÑии пÑедназнаÑено Ð´Ð»Ñ Ð¿ÐµÑеклÑÑÐµÐ½Ð¸Ñ Ð½Ð° ÑизиÑеÑкий ÑезеÑвнÑй ÑеÑÐ²ÐµÑ Ð¿Ð¾Ñле повÑÑÐµÐ½Ð¸Ñ ÑÑаÑÑÑа ÑезеÑвного ÑеÑвеÑа, в ÑпиÑке должен бÑÑÑ Ñказан ÑÐ»Ð¾Ñ ÑизиÑеÑкой ÑепликаÑии Ð´Ð»Ñ ÑезеÑвного ÑеÑвеÑа. ÐбÑаÑиÑе внимание, ÑÑо логиÑеÑÐºÐ°Ñ ÑепликаÑÐ¸Ñ Ð½Ðµ бÑÐ´ÐµÑ Ð¿Ñодолжена, еÑли ÑлоÑÑ, ÑказаннÑе в
synchronized_standby_slots, не ÑÑÑеÑÑвÑÑÑ Ð¸Ð»Ð¸ аннÑлиÑованÑ. ÐÑоме Ñого, ÑÑнкÑии ÑпÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ ÑепликаÑиейpg_replication_slot_advance,pg_logical_slot_get_changesиpg_logical_slot_peek_changesпÑи иÑполÑзовании Ñо ÑлоÑами логиÑеÑкой оÑÑабоÑки оÑказов бÑдÑÑ Ð±Ð»Ð¾ÐºÐ¸ÑоваÑÑÑÑ Ð´Ð¾ ÑÐµÑ Ð¿Ð¾Ñ, пока вÑе ÑизиÑеÑкие ÑлоÑÑ, ÑказаннÑе вsynchronized_standby_slots, не подÑвеÑдÑÑ Ð¿Ð¾Ð»ÑÑение WAL.РезеÑвнÑе ÑеÑвеÑÑ, ÑооÑвеÑÑÑвÑÑÑие ÑлоÑам ÑизиÑеÑкой ÑепликаÑии в
synchronized_standby_slots, Ð´Ð¾Ð»Ð¶Ð½Ñ ÑÑÑановиÑÑsync_replication_slots = true, ÑÑÐ¾Ð±Ñ Ð¿Ð¾Ð»ÑÑаÑÑ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ ÑлоÑов оÑÑабоÑки оÑказа логиÑеÑкой ÑепликаÑии Ð¾Ñ Ð²ÐµÐ´ÑÑего ÑеÑвеÑа.
18.6.2. ÐлавнÑй ÑеÑÐ²ÐµÑ #
ÐÑи паÑамеÑÑÑ Ð¼Ð¾Ð¶Ð½Ð¾ задаÑÑ Ð½Ð° главном/ведÑÑем ÑеÑвеÑе, коÑоÑÑй должен пеÑедаваÑÑ Ð´Ð°Ð½Ð½Ñе ÑепликаÑии Ð¾Ð´Ð½Ð¾Ð¼Ñ Ð¸Ð»Ð¸ неÑколÑким ведомÑм. ÐамеÑÑÑе, ÑÑо помимо ÑÑÐ¸Ñ Ð¿Ð°ÑамеÑÑов на ведÑÑем ÑеÑвеÑе должен бÑÑÑ Ð¿ÑавилÑно ÑÑÑановлен wal_level, а Ñакже Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð²ÐºÐ»ÑÑена аÑÑ Ð¸Ð²Ð°ÑÐ¸Ñ WAL (Ñм. ÐодÑаздел 18.5.3). ÐнаÑÐµÐ½Ð¸Ñ ÑÑÐ¸Ñ Ð¿Ð°ÑамеÑÑов на ведомÑÑ ÑеÑвеÑÐ°Ñ Ð½Ðµ важнÑ, Ñ Ð¾ÑÑ Ð¸Ñ Ð¼Ð¾Ð¶Ð½Ð¾ подгоÑовиÑÑ Ð·Ð°Ñанее, на ÑлÑÑай, еÑли ведомÑй ÑеÑÐ²ÐµÑ Ð¿ÑидÑÑÑÑ ÑделаÑÑ Ð²ÐµÐ´ÑÑим.
synchronous_standby_names(string) #ÐпÑеделÑÐµÑ ÑпиÑок ведомÑÑ ÑеÑвеÑов, коÑоÑÑе могÑÑ Ð¿Ð¾Ð´Ð´ÐµÑживаÑÑ ÑÐ¸Ð½Ñ ÑоннÑÑ ÑепликаÑиÑ, как опиÑано в ÐодÑазделе 25.2.8. ÐкÑивнÑÑ ÑÐ¸Ð½Ñ ÑоннÑÑ Ð²ÐµÐ´Ð¾Ð¼ÑÑ ÑеÑвеÑов Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð¾Ð´Ð¸Ð½ или неÑколÑко; ÑÑанзакÑии, ожидаÑÑие ÑикÑаÑии, бÑдÑÑ Ð·Ð°Ð²ÐµÑÑаÑÑÑÑ ÑолÑко поÑле Ñого, как ÑÑи ведомÑе подÑвеÑдÑÑ Ð¿Ð¾Ð»ÑÑение Ð¸Ñ Ð´Ð°Ð½Ð½ÑÑ . Ð¡Ð¸Ð½Ñ ÑоннÑми ведомÑми бÑдÑÑ Ñе, имена коÑоÑÑÑ ÑÐºÐ°Ð·Ð°Ð½Ñ Ð² ÑÑом ÑпиÑке и коÑоÑÑе подклÑÑÐµÐ½Ñ Ðº ведÑÑÐµÐ¼Ñ Ð¸ пÑинимаÑÑ Ð¿Ð¾Ñок даннÑÑ Ð² ÑеалÑном вÑемени (ÑÑо показÑÐ²Ð°ÐµÑ Ð¿Ñизнак
streamingв пÑедÑÑавленииpg_stat_replication). Указание неÑколÑÐºÐ¸Ñ Ð¸Ð¼Ñн ведомÑÑ ÑеÑвеÑов позволÑÐµÑ Ð¾Ð±ÐµÑпеÑиÑÑ Ð¾ÑÐµÐ½Ñ Ð²ÑÑокÑÑ ÑÑÐµÐ¿ÐµÐ½Ñ Ð´Ð¾ÑÑÑпноÑÑи и заÑиÑÑ Ð¾Ñ Ð¿Ð¾ÑеÑи даннÑÑ .Ðменем ведомого ÑеÑвеÑа в ÑÑом конÑекÑÑе ÑÑиÑаеÑÑÑ Ð·Ð½Ð°Ñение
application_nameведомого ÑеÑвеÑа, задаваемое в ÑвойÑÑÐ²Ð°Ñ Ð¿Ð¾Ð´ÐºÐ»ÑÑениÑ. ÐÑи оÑганизаÑии ÑизиÑеÑкой ÑепликаÑии оно должно задаваÑÑÑÑ Ð² ÑÑÑокеprimary_conninfo; по ÑмолÑÐ°Ð½Ð¸Ñ ÑÑо знаÑение паÑамеÑÑа cluster_name, еÑли он задан, илиwalreceiverв пÑоÑивном ÑлÑÑае. ÐÐ»Ñ Ð»Ð¾Ð³Ð¸ÑеÑкой ÑепликаÑии его можно задаÑÑ Ð² ÑÑÑоке подклÑÑÐµÐ½Ð¸Ñ Ð´Ð»Ñ Ð¿Ð¾Ð´Ð¿Ð¸Ñки (по ÑмолÑÐ°Ð½Ð¸Ñ ÑÑо Ð¸Ð¼Ñ Ð¿Ð¾Ð´Ð¿Ð¸Ñки). Ðак задаÑÑ ÐµÐ³Ð¾ Ð´Ð»Ñ Ð´ÑÑÐ³Ð¸Ñ Ð¿Ð¾ÑÑебиÑелей поÑоков ÑепликаÑии, Ð²Ñ Ð¼Ð¾Ð¶ÐµÑе ÑзнаÑÑ Ð² Ð¸Ñ Ð´Ð¾ÐºÑменÑаÑии.ÐÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð¿ÑÐ¸Ð½Ð¸Ð¼Ð°ÐµÑ ÑпиÑок ведомÑÑ ÑеÑвеÑов в одной из ÑледÑÑÑÐ¸Ñ ÑоÑм:
[FIRST]
ÑиÑло_ÑÐ¸Ð½Ñ ÑоннÑÑ(имÑ_ведомого[, ...] ) ANYÑиÑло_ÑÐ¸Ð½Ñ ÑоннÑÑ(имÑ_ведомого[, ...] )имÑ_ведомого[, ...]здеÑÑ
ÑиÑло_ÑÐ¸Ð½Ñ ÑоннÑÑâ ÑиÑло ÑÐ¸Ð½Ñ ÑоннÑÑ Ð²ÐµÐ´Ð¾Ð¼ÑÑ ÑеÑвеÑов, Ð¾Ñ ÐºÐ¾ÑоÑÑÑ Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼Ð¾ дожидаÑÑÑÑ Ð¾ÑвеÑов Ð´Ð»Ñ Ð·Ð°Ð²ÐµÑÑÐµÐ½Ð¸Ñ ÑÑанзакÑий, аимÑ_ведомогоâ Ð¸Ð¼Ñ Ð²ÐµÐ´Ð¾Ð¼Ð¾Ð³Ð¾ ÑеÑвеÑа.ÑиÑло_ÑÐ¸Ð½Ñ ÑоннÑÑдолжно бÑÑÑ ÑелÑм ÑиÑлом и болÑÑе нÑлÑ. СловаFIRSTиANYзадаÑÑ Ð¼ÐµÑод вÑбоÑа ÑÐ¸Ð½Ñ ÑоннÑÑ Ð²ÐµÐ´Ð¾Ð¼ÑÑ Ð¸Ð· пеÑеÑиÑленнÑÑ ÑеÑвеÑов.ÐлÑÑевое Ñлово
FIRST, в ÑоÑеÑании ÑÑиÑлом_ÑÐ¸Ð½Ñ ÑоннÑÑ, вÑбиÑÐ°ÐµÑ ÑÐ¸Ð½Ñ ÑоннÑÑ ÑепликаÑÐ¸Ñ Ð½Ð° оÑнове пÑиоÑиÑеÑов, когда ÑÑанзакÑии ÑикÑиÑÑÑÑÑÑ ÑолÑко поÑле Ñого, как Ð¸Ñ Ð·Ð°Ð¿Ð¸Ñи в WAL ÑеплиÑиÑÑÑÑÑÑ Ð½Ð°ÑиÑло_ÑÐ¸Ð½Ñ ÑоннÑÑведомÑÑ ÑеÑвеÑов, вÑбиÑаемÑÑ ÑоглаÑно пÑиоÑиÑеÑам. ÐапÑимеÑ, Ñо знаÑениемFIRST 3 (s1, s2, s3, s4)Ð´Ð»Ñ ÑикÑаÑии ÑÑанзакÑии Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼Ð¾ дождаÑÑÑÑ Ð¾ÑвеÑа Ð¾Ñ ÑÑÑÑ Ð½Ð°Ð¸Ð±Ð¾Ð»ÐµÐµ пÑиоÑиÑеÑнÑÑ Ð¸Ð· ÑеÑвеÑовs1,s2,s3иs4. ÐедомÑе ÑеÑвеÑÑ, имена коÑоÑÑÑ Ð¸Ð´ÑÑ Ð² ÑÑом ÑпиÑке пеÑвÑми, бÑдÑÑ Ð¸Ð¼ÐµÑÑ Ð±Ð¾Ð»ÑÑий пÑиоÑиÑÐµÑ Ð¸ бÑдÑÑ ÑÑиÑаÑÑÑÑ ÑÐ¸Ð½Ñ ÑоннÑми. СеÑвеÑÑ, ÑледÑÑÑие в ÑпиÑке за ними, бÑдÑÑ ÑÑиÑаÑÑÑÑ Ð¿Ð¾ÑенÑиалÑнÑми ÑÐ¸Ð½Ñ ÑоннÑми. ÐÑли один из ÑекÑÑÐ¸Ñ ÑÐ¸Ð½Ñ ÑоннÑÑ ÑеÑвеÑов по какой-Ñо пÑиÑине оÑклÑÑаеÑÑÑ, он немедленно бÑÐ´ÐµÑ Ð·Ð°Ð¼ÐµÐ½Ñн ÑледÑÑÑим ÑеÑвеÑом Ñ Ð½Ð°Ð¸Ð±Ð¾Ð»ÑÑим пÑиоÑиÑеÑом. ÐлÑÑевое ÑловоFIRSTÐ¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð¾Ð¿ÑÑено.ÐлÑÑевое Ñлово
ANY, в ÑоÑеÑании ÑÑиÑлом_ÑÐ¸Ð½Ñ ÑоннÑÑ, вÑбиÑÐ°ÐµÑ ÑÐ¸Ð½Ñ ÑоннÑÑ ÑепликаÑÐ¸Ñ Ð½Ð° оÑнове квоÑÑма, когда ÑÑанзакÑии ÑикÑиÑÑÑÑÑÑ ÑолÑко поÑле Ñого, как Ð¸Ñ Ð·Ð°Ð¿Ð¸Ñи в WAL ÑеплиÑиÑÑÑÑÑÑ Ð½Ð° как минимÑмÑиÑло_ÑÐ¸Ð½Ñ ÑоннÑÑпеÑеÑиÑленнÑÑ ÑеÑвеÑов. ÐапÑимеÑ, Ñо знаÑениемANY 3 (s1, s2, s3, s4)Ð´Ð»Ñ ÑикÑаÑии ÑÑанзакÑии Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼Ð¾ дождаÑÑÑÑ Ð¾ÑвеÑа Ð¾Ñ ÐºÐ°Ðº минимÑм ÑÑÑÑ Ð¸Ð· ÑеÑвеÑовs1,s2,s3иs4.ÐлÑÑевÑе Ñлова
FIRSTиANYвоÑпÑинимаÑÑÑÑ Ð±ÐµÐ· ÑÑÑÑа ÑегиÑÑÑа. ÐÑли Ñакое же Ð¸Ð¼Ñ Ð¾ÐºÐ°Ð·ÑваеÑÑÑ Ñ Ð¾Ð´Ð½Ð¾Ð³Ð¾ из ведомÑÑ ÑеÑвеÑов, егоимÑ_ведомогонÑжно заклÑÑиÑÑ Ð² двойнÑе кавÑÑки.ТÑеÑÑÑ ÑоÑма иÑполÑзовалаÑÑ Ð² Postgres Pro до веÑÑии 9.6 и по-пÑÐµÐ¶Ð½ÐµÐ¼Ñ Ð¿Ð¾Ð´Ð´ÐµÑживаеÑÑÑ. Ðо ÑÑÑи она ÑавнознаÑна пеÑвой Ñ
FIRSTиÑиÑлом_ÑÐ¸Ð½Ñ ÑоннÑм, ÑавнÑм 1. ÐапÑимеÑ,FIRST 1 (s1, s2)иs1, s2дейÑÑвÑÑÑ Ð¾Ð´Ð¸Ð½Ð°ÐºÐ¾Ð²Ð¾: в каÑеÑÑве ÑÐ¸Ð½Ñ Ñонного ведомого вÑбиÑаеÑÑÑ Ð»Ð¸Ð±Ð¾s1, либоs2.СпеÑиалÑÐ½Ð¾Ð¼Ñ ÑлеменÑÑ
*ÑооÑвеÑÑÑвÑÐµÑ Ð¸Ð¼Ñ Ð»Ñбого ведомого.УникалÑноÑÑÑ Ð¸Ð¼Ñн ведомÑÑ ÑеÑвеÑов не конÑÑолиÑÑеÑÑÑ. Ð ÑлÑÑае дÑблиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð¸Ð¼Ñн более пÑиоÑиÑеÑнÑм бÑÐ´ÐµÑ Ð¾Ð´Ð¸Ð½ из ÑеÑвеÑов Ñ Ð¿Ð¾Ð´Ñ Ð¾Ð´ÑÑим именем, Ñ Ð¾ÑÑ ÐºÐ°ÐºÐ¾Ð¹ именно, не опÑеделено.
ÐÑимеÑание
Ðаждое
имÑ_ведомогодолжно задаваÑÑÑÑ Ð² виде допÑÑÑимого иденÑиÑикаÑоÑа SQL, кÑоме*. ÐÑи Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼Ð¾ÑÑи его можно заклÑÑаÑÑ Ð² кавÑÑки. Ðо замеÑÑÑе, ÑÑо иденÑиÑикаÑоÑÑимÑ_ведомогоÑÑавниваÑÑÑÑ Ñ Ð¸Ð¼ÐµÐ½Ð°Ð¼Ð¸ пÑиложений без ÑÑÑÑа ÑегиÑÑÑа, незавиÑимо Ð¾Ñ Ñого, заклÑÑÐµÐ½Ñ Ð»Ð¸ они в кавÑÑки или неÑ.ÐÑли имена ÑÐ¸Ð½Ñ ÑоннÑÑ Ð²ÐµÐ´Ð¾Ð¼ÑÑ ÑеÑвеÑов не опÑеделенÑ, ÑÐ¸Ð½Ñ ÑÐ¾Ð½Ð½Ð°Ñ ÑепликаÑÐ¸Ñ Ð½Ðµ вклÑÑаеÑÑÑ Ð¸ ÑикÑиÑÑемÑе ÑÑанзакÑии не бÑдÑÑ Ð¶Ð´Ð°ÑÑ ÑепликаÑии. ÐÑо поведение по ÑмолÑаниÑ. Ðаже когда ÑÐ¸Ð½Ñ ÑÐ¾Ð½Ð½Ð°Ñ ÑепликаÑÐ¸Ñ Ð²ÐºÐ»ÑÑена, Ð´Ð»Ñ Ð¾ÑделÑнÑÑ ÑÑанзакÑий можно оÑклÑÑиÑÑ Ð¾Ð¶Ð¸Ð´Ð°Ð½Ð¸Ðµ ÑепликаÑии, задав Ð´Ð»Ñ Ð¿Ð°ÑамеÑÑа synchronous_commit знаÑение
localилиoff.ÐадаÑÑ ÑÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð¼Ð¾Ð¶Ð½Ð¾ ÑолÑко в
postgresql.confили в командной ÑÑÑоке пÑи запÑÑке ÑеÑвеÑа.
18.6.3. ÐедомÑе ÑеÑвеÑÑ #
ÐÑи паÑамеÑÑÑ ÑпÑавлÑÑÑ Ð¿Ð¾Ð²ÐµÐ´ÐµÐ½Ð¸ÐµÐ¼ ведомого ÑеÑвеÑа, коÑоÑÑй бÑÐ´ÐµÑ Ð¿Ð¾Ð»ÑÑаÑÑ Ð´Ð°Ð½Ð½Ñе ÑепликаÑии. Ðа ведÑÑем ÑеÑвеÑе они не игÑаÑÑ Ð½Ð¸ÐºÐ°ÐºÐ¾Ð¹ Ñоли.
primary_conninfo(string) #УказÑÐ²Ð°ÐµÑ ÑÑÑÐ¾ÐºÑ Ð¿Ð¾Ð´ÐºÐ»ÑÑÐµÐ½Ð¸Ñ ÑезеÑвного ÑеÑвеÑа к пеÑедаÑÑемÑ. ФоÑÐ¼Ð°Ñ ÑÑÑоки опиÑан в ÐодÑазделе 32.1.1. ÐмеÑÑо опÑÑеннÑÑ Ð¿Ð°ÑамеÑÑов подклÑÑÐµÐ½Ð¸Ñ Ð¸ÑполÑзÑÑÑÑÑ ÑооÑвеÑÑÑвÑÑÑие пеÑеменнÑе окÑÑÐ¶ÐµÐ½Ð¸Ñ (Ñм. Раздел 32.15). ÐÑли же и пеÑеменнÑе не ÑÑÑановленÑ, иÑполÑзÑÑÑÑÑ Ð·Ð½Ð°ÑÐµÐ½Ð¸Ñ Ð¿Ð¾ ÑмолÑаниÑ.
Ð ÑÑÑоке подклÑÑÐµÐ½Ð¸Ñ Ð´Ð¾Ð»Ð¶Ð½Ð¾ задаваÑÑÑÑ Ð¸Ð¼Ñ (или адÑеÑ) пеÑедаÑÑего ÑеÑвеÑа, а Ñакже Ð½Ð¾Ð¼ÐµÑ Ð¿Ð¾ÑÑа, еÑли он оÑлиÑаеÑÑÑ Ð¾Ñ Ð¿Ð¾Ð´ÑазÑмеваемого по ÑмолÑÐ°Ð½Ð¸Ñ ÑезеÑвнÑм. Также в ней ÑказÑваеÑÑÑ Ð¸Ð¼Ñ Ð¿Ð¾Ð»ÑзоваÑелÑ, ÑооÑвеÑÑÑвÑÑÑее Ñоли Ñ Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼Ñми пÑавами на пеÑедаÑÑем ÑеÑвеÑе (Ñм. ÐодÑаздел 25.2.5.1). ÐÑли ÑеÑÐ²ÐµÑ Ð¾ÑÑÑеÑÑвлÑÐµÑ Ð°ÑÑенÑиÑикаÑÐ¸Ñ Ð¿Ð¾ паÑолÑ, дополниÑелÑно поÑÑебÑеÑÑÑ Ð·Ð°Ð´Ð°ÑÑ Ð¿Ð°ÑолÑ. Ðго можно ÑказаÑÑ ÐºÐ°Ðº в ÑÑÑоке
primary_conninfo, Ñак и оÑделÑно, в Ñайле~/.pgpassна ÑезеÑвном ÑеÑвеÑе (Ð´Ð»Ñ Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑreplication).ÐÐ»Ñ ÑÐ¸Ð½Ñ ÑонизаÑии ÑлоÑов ÑепликаÑии (Ñм. ÐодÑаздел 47.2.3) Ñакже Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼Ð¾ ÑказаÑÑ Ð´Ð¾Ð¿ÑÑÑимое имÑ
dbnameв ÑÑÑокеprimary_conninfo. Ðно иÑполÑзÑеÑÑÑ ÑолÑко Ð´Ð»Ñ ÑÐ¸Ð½Ñ ÑонизаÑии ÑлоÑов и игноÑиÑÑеÑÑÑ Ð¿Ñи поÑоковой пеÑедаÑе.ÐадаÑÑ ÑÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð¼Ð¾Ð¶Ð½Ð¾ ÑолÑко в
postgresql.confили в командной ÑÑÑоке пÑи запÑÑке ÑеÑвеÑа. ÐÑли знаÑение данного паÑамеÑÑа менÑеÑÑÑ Ð²Ð¾ вÑÐµÐ¼Ñ ÑабоÑÑ Ð¿ÑоÑеÑÑа-пÑиÑмника WAL, ÑÑÐ¾Ð¼Ñ Ð¿ÑоÑеÑÑÑ Ð¿Ð¾ÑÑлаеÑÑÑ Ñигнал Ð´Ð»Ñ Ð¾ÑклÑÑениÑ, и ожидаеÑÑÑ, ÑÑо он пеÑезапÑÑÑиÑÑÑ Ñ Ð½Ð¾Ð²Ñм знаÑением (еÑли ÑолÑко опÑеделена непÑÑÑÐ°Ñ ÑÑÑокаprimary_conninfo). ÐÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð¾ÐºÐ°Ð·ÑÐ²Ð°ÐµÑ Ð²Ð»Ð¸Ñние ÑолÑко пÑи ÑабоÑе ÑеÑвеÑа в Ñежиме ведомого.primary_slot_name(string) #ÐополниÑелÑно задаÑÑ Ð·Ð°Ñанее ÑозданнÑй ÑлоÑ, коÑоÑÑй бÑÐ´ÐµÑ Ð¸ÑполÑзоваÑÑÑÑ Ð¿Ñи подклÑÑении к пеÑедаÑÑÐµÐ¼Ñ ÑеÑвеÑÑ Ð¿Ð¾ пÑоÑÐ¾ÐºÐ¾Ð»Ñ Ð¿Ð¾Ñоковой ÑепликаÑии Ð´Ð»Ñ ÑпÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ Ð¾Ñвобождением ÑеÑÑÑÑов вÑÑеÑÑоÑÑего Ñзла (Ñм. ÐодÑаздел 25.2.6). ÐадаÑÑ ÑÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð¼Ð¾Ð¶Ð½Ð¾ ÑолÑко в
postgresql.confили в командной ÑÑÑоке пÑи запÑÑке ÑеÑвеÑа. ÐÑли знаÑение данного паÑамеÑÑа менÑеÑÑÑ Ð²Ð¾ вÑÐµÐ¼Ñ ÑабоÑÑ Ð¿ÑоÑеÑÑа-пÑиÑмника WAL, ÑÑÐ¾Ð¼Ñ Ð¿ÑоÑеÑÑÑ Ð¿Ð¾ÑÑлаеÑÑÑ Ñигнал Ð´Ð»Ñ Ð¾ÑклÑÑениÑ, и ожидаеÑÑÑ, ÑÑо он пеÑезапÑÑÑиÑÑÑ Ñ Ð½Ð¾Ð²Ñм знаÑением. ÐÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð½Ðµ дейÑÑвÑеÑ, еÑли ÑÑÑокаprimary_conninfoне опÑеделена или ÑеÑÐ²ÐµÑ ÑабоÑÐ°ÐµÑ Ð½Ðµ в Ñежиме ведомого.hot_standby(boolean) #ÐпÑеделÑеÑ, можно ли бÑÐ´ÐµÑ Ð¿Ð¾Ð´ÐºÐ»ÑÑаÑÑÑÑ Ðº ÑеÑвеÑÑ Ð¸ вÑполнÑÑÑ Ð·Ð°Ð¿ÑоÑÑ Ð² пÑоÑеÑÑе воÑÑÑановлениÑ, как опиÑано в Разделе 25.4. ÐнаÑение по ÑмолÑÐ°Ð½Ð¸Ñ â
on(подклÑÑÐµÐ½Ð¸Ñ ÑазÑеÑаÑÑÑÑ). ÐадаÑÑ ÑÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð¼Ð¾Ð¶Ð½Ð¾ ÑолÑко пÑи запÑÑке ÑеÑвеÑа. ÐаннÑй паÑамеÑÑ Ð¸Ð³ÑÐ°ÐµÑ ÑÐ¾Ð»Ñ ÑолÑко в Ñежиме ведомого ÑеÑвеÑа или пÑи воÑÑÑановлении аÑÑ Ð¸Ð²Ð°.max_standby_archive_delay(integer) #Ð Ñежиме гоÑÑÑего ÑезеÑва ÑÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð¾Ð¿ÑеделÑеÑ, как долго должен ждаÑÑ Ð²ÐµÐ´Ð¾Ð¼Ñй ÑеÑвеÑ, пÑежде Ñем оÑменÑÑÑ Ð·Ð°Ð¿ÑоÑÑ, конÑликÑÑÑÑие Ñ Ð¾ÑеÑеднÑми изменениÑми в WAL, как опиÑано в ÐодÑазделе 25.4.2. ÐадеÑжка
max_standby_archive_delayпÑименÑеÑÑÑ Ð¿Ñи обÑабоÑке даннÑÑ WAL, ÑÑиÑÑваемÑÑ Ð¸Ð· аÑÑ Ð¸Ð²Ð° (не ÑекÑÑÐ¸Ñ Ð´Ð°Ð½Ð½ÑÑ ). ÐÑли ÑÑо знаÑение задаÑÑÑÑ Ð±ÐµÐ· ÐµÐ´Ð¸Ð½Ð¸Ñ Ð¸Ð·Ð¼ÐµÑениÑ, оно ÑÑиÑаеÑÑÑ Ð·Ð°Ð´Ð°Ð½Ð½Ñм в миллиÑекÑÐ½Ð´Ð°Ñ . ÐнаÑение по ÑмолÑÐ°Ð½Ð¸Ñ Ñавно 30 ÑекÑндам. ÐÑи знаÑении, Ñавном -1, ведомÑй Ð¼Ð¾Ð¶ÐµÑ Ð¶Ð´Ð°ÑÑ Ð·Ð°Ð²ÐµÑÑÐµÐ½Ð¸Ñ ÐºÐ¾Ð½ÑликÑÑÑÑÐ¸Ñ Ð·Ð°Ð¿ÑоÑов неогÑаниÑенное вÑемÑ. ÐадаÑÑ ÑÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð¼Ð¾Ð¶Ð½Ð¾ ÑолÑко вpostgresql.confили в командной ÑÑÑоке пÑи запÑÑке ÑеÑвеÑа.ÐамеÑÑÑе, ÑÑо паÑамеÑÑ
max_standby_archive_delayопÑеделÑÐµÑ Ð½Ðµ макÑималÑное вÑемÑ, коÑоÑое оÑводиÑÑÑ Ð´Ð»Ñ Ð²ÑÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ запÑоÑа, а макÑималÑное обÑее вÑемÑ, за коÑоÑое Ð´Ð¾Ð»Ð¶Ð½Ñ Ð±ÑÑÑ Ð¿ÑÐ¸Ð¼ÐµÐ½ÐµÐ½Ñ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð¸Ð· одного ÑегменÑа WAL. Таким обÑазом, еÑли один запÑÐ¾Ñ Ð¿ÑивÑл к знаÑиÑелÑной задеÑжке пÑи обÑабоÑке ÑегменÑа WAL, оÑÑалÑнÑм конÑликÑÑÑÑим запÑоÑам бÑÐ´ÐµÑ Ð¾Ñведено гоÑаздо менÑÑе вÑемени.max_standby_streaming_delay(integer) #Ð Ñежиме гоÑÑÑего ÑезеÑва ÑÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð¾Ð¿ÑеделÑеÑ, как долго должен ждаÑÑ Ð²ÐµÐ´Ð¾Ð¼Ñй ÑеÑвеÑ, пÑежде Ñем оÑменÑÑÑ Ð·Ð°Ð¿ÑоÑÑ, конÑликÑÑÑÑие Ñ Ð¾ÑеÑеднÑми изменениÑми в WAL, как опиÑано в ÐодÑазделе 25.4.2. ÐадеÑжка
max_standby_streaming_delayпÑименÑеÑÑÑ Ð¿Ñи обÑабоÑке даннÑÑ WAL, поÑÑÑпаÑÑÐ¸Ñ Ð¿Ñи поÑоковой ÑепликаÑии. ÐÑли ÑÑо знаÑение задаÑÑÑÑ Ð±ÐµÐ· ÐµÐ´Ð¸Ð½Ð¸Ñ Ð¸Ð·Ð¼ÐµÑениÑ, оно ÑÑиÑаеÑÑÑ Ð·Ð°Ð´Ð°Ð½Ð½Ñм в миллиÑекÑÐ½Ð´Ð°Ñ . ÐнаÑение по ÑмолÑÐ°Ð½Ð¸Ñ Ñавно 30 ÑекÑндам. ÐÑи знаÑении, Ñавном -1, ведомÑй Ð¼Ð¾Ð¶ÐµÑ Ð¶Ð´Ð°ÑÑ Ð·Ð°Ð²ÐµÑÑÐµÐ½Ð¸Ñ ÐºÐ¾Ð½ÑликÑÑÑÑÐ¸Ñ Ð·Ð°Ð¿ÑоÑов неогÑаниÑенное вÑемÑ. ÐадаÑÑ ÑÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð¼Ð¾Ð¶Ð½Ð¾ ÑолÑко вpostgresql.confили в командной ÑÑÑоке пÑи запÑÑке ÑеÑвеÑа.ÐамеÑÑÑе, ÑÑо паÑамеÑÑ
max_standby_streaming_delayопÑеделÑÐµÑ Ð½Ðµ макÑималÑное вÑемÑ, коÑоÑое оÑводиÑÑÑ Ð´Ð»Ñ Ð²ÑÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ запÑоÑа, а макÑималÑное обÑее вÑемÑ, за коÑоÑое Ð´Ð¾Ð»Ð¶Ð½Ñ Ð±ÑÑÑ Ð¿ÑÐ¸Ð¼ÐµÐ½ÐµÐ½Ñ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð¸Ð· WAL поÑле полÑÑÐµÐ½Ð¸Ñ Ð¾Ñ Ð³Ð»Ð°Ð²Ð½Ð¾Ð³Ð¾ ÑеÑвеÑа. Таким обÑазом, еÑли один запÑÐ¾Ñ Ð¿ÑивÑл к знаÑиÑелÑной задеÑжке, оÑÑалÑнÑм конÑликÑÑÑÑим запÑоÑам бÑÐ´ÐµÑ Ð¾ÑводиÑÑÑÑ Ð³Ð¾Ñаздо менÑÑе вÑемени, пока ÑезеÑвнÑй ÑеÑÐ²ÐµÑ Ð½Ðµ Ð´Ð¾Ð³Ð¾Ð½Ð¸Ñ Ð³Ð»Ð°Ð²Ð½Ñй.wal_receiver_create_temp_slot(boolean) #ÐпÑеделÑеÑ, должен ли пÑоÑеÑÑ-пÑиÑмник WAL ÑоздаваÑÑ Ð²ÑеменнÑй ÑÐ»Ð¾Ñ ÑепликаÑии на ÑдалÑнном ÑеÑвеÑе в ÑлÑÑаÑÑ , когда поÑÑоÑннÑй ÑÐ»Ð¾Ñ ÑепликаÑии не наÑÑÑоен (не задан в primary_slot_name). Ðо ÑмолÑÐ°Ð½Ð¸Ñ ÑÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð¾ÑклÑÑÑн. ÐадаÑÑ ÑÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð¼Ð¾Ð¶Ð½Ð¾ ÑолÑко в
postgresql.confили в командной ÑÑÑоке пÑи запÑÑке ÑеÑвеÑа. ÐÑли знаÑение данного паÑамеÑÑа менÑеÑÑÑ Ð²Ð¾ вÑÐµÐ¼Ñ ÑабоÑÑ Ð¿ÑоÑеÑÑа-пÑиÑмника WAL, ÑÑÐ¾Ð¼Ñ Ð¿ÑоÑеÑÑÑ Ð¿Ð¾ÑÑлаеÑÑÑ Ñигнал Ð´Ð»Ñ Ð¾ÑклÑÑениÑ, и ожидаеÑÑÑ, ÑÑо он пеÑезапÑÑÑиÑÑÑ Ñ Ð½Ð¾Ð²Ñм знаÑением.wal_receiver_status_interval(integer) #ÐпÑеделÑÐµÑ Ð¼Ð¸Ð½Ð¸Ð¼Ð°Ð»ÑнÑÑ ÑаÑÑоÑÑ, Ñ ÐºÐ¾ÑоÑой пÑоÑеÑÑ, пÑинимаÑÑий WAL на ведомом ÑеÑвеÑе, бÑÐ´ÐµÑ ÑообÑаÑÑ Ð¾ ÑоÑÑоÑнии ÑепликаÑии ведÑÑÐµÐ¼Ñ Ð¸Ð»Ð¸ вÑÑеÑÑоÑÑÐµÐ¼Ñ Ð²ÐµÐ´Ð¾Ð¼Ð¾Ð¼Ñ, где ÑÑо ÑоÑÑоÑние можно наблÑдаÑÑ Ð² пÑедÑÑавлении
pg_stat_replication. Ð ÑÑом ÑообÑении пеÑедаÑÑÑÑ ÑледÑÑÑие позиÑии в жÑÑнале пÑедзапиÑи: позиÑÐ¸Ñ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ð¹ запиÑаннÑÑ , изменений, ÑÐ¾Ñ ÑанÑннÑÑ Ð½Ð° диÑке, и изменений пÑименÑннÑÑ . ÐнаÑение паÑамеÑÑа опÑеделÑÐµÑ Ð¼Ð°ÐºÑималÑнÑй инÑеÑвал Ð¼ÐµÐ¶Ð´Ñ ÑообÑениÑми. СообÑÐµÐ½Ð¸Ñ Ð¾ ÑоÑÑоÑнии пеÑедаÑÑÑÑ Ð¿Ñи каждом пÑодвижении позиÑий запиÑаннÑÑ Ð¸Ð»Ð¸ ÑÐ¾Ñ ÑанÑннÑÑ Ð½Ð° диÑке изменений, или Ñ Ð¸Ð½ÑеÑвалом, заданнÑм ÑÑим паÑамеÑÑом, еÑли он Ð¸Ð¼ÐµÐµÑ Ð½ÐµÐ½Ñлевое знаÑение. РнекоÑоÑÑÑ ÑлÑÑаÑÑ ÑообÑÐµÐ½Ð¸Ñ Ð¾ ÑоÑÑоÑнии оÑпÑавлÑÑÑÑÑ Ð±ÐµÐ· ÑÑÑÑа данного паÑамеÑÑа; напÑимеÑ, когда завеÑÑаеÑÑÑ Ð¾Ð±ÑабоÑка ÑÑÑеÑÑвÑÑÑего WAL или когда пеÑеменнаÑsynchronous_commitÐ¸Ð¼ÐµÐµÑ Ð·Ð½Ð°Ñениеremote_apply. Таким обÑазом, поÑледнÑÑ Ð¿ÐµÑÐµÐ´Ð°Ð½Ð½Ð°Ñ Ð¿Ð¾Ð·Ð¸ÑÐ¸Ñ Ð¿ÑименÑннÑÑ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ð¹ Ð¼Ð¾Ð¶ÐµÑ Ð½ÐµÐ¼Ð½Ð¾Ð³Ð¾ оÑÑÑаваÑÑ Ð¾Ñ ÑакÑиÑеÑкой в ÑекÑÑий моменÑ. ÐÑли ÑÑо знаÑение задаÑÑÑÑ Ð±ÐµÐ· ÐµÐ´Ð¸Ð½Ð¸Ñ Ð¸Ð·Ð¼ÐµÑениÑ, оно ÑÑиÑаеÑÑÑ Ð·Ð°Ð´Ð°Ð½Ð½Ñм в ÑекÑÐ½Ð´Ð°Ñ . ÐнаÑение по ÑмолÑÐ°Ð½Ð¸Ñ Ñавно 10 ÑекÑндам. ÐадаÑÑ ÑÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð¼Ð¾Ð¶Ð½Ð¾ ÑолÑко вpostgresql.confили в командной ÑÑÑоке пÑи запÑÑке ÑеÑвеÑа.hot_standby_feedback(boolean) #ÐпÑеделÑеÑ, бÑÐ´ÐµÑ Ð»Ð¸ ÑеÑÐ²ÐµÑ Ð³Ð¾ÑÑÑего ÑезеÑва ÑообÑаÑÑ Ð²ÐµÐ´ÑÑÐµÐ¼Ñ Ð¸Ð»Ð¸ вÑÑеÑÑоÑÑÐµÐ¼Ñ Ð²ÐµÐ´Ð¾Ð¼Ð¾Ð¼Ñ Ð¾ запÑоÑÐ°Ñ , коÑоÑÑе он вÑполнÑÐµÑ Ð² даннÑй моменÑ. ÐÑо позволÑÐµÑ Ð¸ÑклÑÑиÑÑ Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼Ð¾ÑÑÑ Ð¾ÑÐ¼ÐµÐ½Ñ Ð·Ð°Ð¿ÑоÑов, вÑзваннÑÑ Ð¾ÑиÑÑкой запиÑей, но пÑи некоÑоÑÑÑ ÑÐ¸Ð¿Ð°Ñ Ð½Ð°Ð³ÑÑзки ÑÑо Ð¼Ð¾Ð¶ÐµÑ Ð¿ÑиводиÑÑ Ðº ÑаздÑÐ²Ð°Ð½Ð¸Ñ Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ Ð½Ð° ведÑÑем ÑеÑвеÑе. ÐÑи ÑообÑÐµÐ½Ð¸Ñ Ð¾ запÑоÑÐ°Ñ Ð±ÑдÑÑ Ð¾ÑпÑавлÑÑÑÑÑ Ð½Ðµ ÑаÑе, Ñем Ñаз в инÑеÑвал, задаваемÑй паÑамеÑÑом
wal_receiver_status_interval. ÐнаÑение данного паÑамеÑÑа по ÑмолÑÐ°Ð½Ð¸Ñ âoff. ÐадаÑÑ ÑÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð¼Ð¾Ð¶Ð½Ð¾ ÑолÑко вpostgresql.confили в командной ÑÑÑоке пÑи запÑÑке ÑеÑвеÑа.ÐÑли иÑполÑзÑеÑÑÑ ÐºÐ°ÑÐºÐ°Ð´Ð½Ð°Ñ ÑепликаÑиÑ, ÑообÑÐµÐ½Ð¸Ñ Ð¾ запÑоÑÐ°Ñ Ð¿ÐµÑедаÑÑÑÑ Ð²ÑÑе, пока в иÑоге не доÑÑигнÑÑ Ð²ÐµÐ´ÑÑего ÑеÑвеÑа. Ðа пÑомежÑÑоÑнÑÑ ÑеÑвеÑÐ°Ñ ÑÑа инÑоÑмаÑÐ¸Ñ Ð±Ð¾Ð»ÑÑе никак не задейÑÑвÑеÑÑÑ.
ÐбÑаÑиÑе внимание, ÑÑо еÑли на ÑезеÑвном ÑеÑвеÑе пÑоизойдÑÑ ÑмеÑение ÑиÑÑемного вÑемени впеÑÑд или назад, ÑообÑение обÑаÑной ÑвÑзи Ð¼Ð¾Ð¶ÐµÑ Ð½Ðµ оÑпÑавиÑÑÑÑ Ð²Ð¾Ð²ÑемÑ. РкÑÐ°Ð¹Ð½Ð¸Ñ ÑлÑÑаÑÑ ÑÑо Ð¼Ð¾Ð¶ÐµÑ Ð¿ÑивеÑÑи к длиÑелÑной задеÑжке ÑÐ´Ð°Ð»ÐµÐ½Ð¸Ñ Â«Ð¼ÑÑÑвÑÑ Â» ÑÑÑок на ведÑÑем ÑеÑвеÑе, Ñак как Ð¼ÐµÑ Ð°Ð½Ð¸Ð·Ð¼ обÑаÑной ÑвÑзи оÑнован на вÑеменнÑÑ Ð¼ÐµÑÐºÐ°Ñ .
wal_receiver_timeout(integer) #ÐадаÑÑ Ð¿ÐµÑиод вÑемени, по иÑÑеÑении коÑоÑого пÑеÑÑваÑÑÑÑ Ð½ÐµÐ°ÐºÑивнÑе ÑÐ¾ÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ ÑепликаÑии. ÐÑо Ð¿Ð¾Ð¼Ð¾Ð³Ð°ÐµÑ Ð¿ÑинимаÑÑÐµÐ¼Ñ Ð²ÐµÐ´Ð¾Ð¼Ð¾Ð¼Ñ ÑеÑвеÑÑ Ð¾Ð±Ð½Ð°ÑÑжиÑÑ Ñбой ведÑÑего или ÑазÑÑв ÑеÑи. ÐÑли ÑÑо знаÑение задаÑÑÑÑ Ð±ÐµÐ· ÐµÐ´Ð¸Ð½Ð¸Ñ Ð¸Ð·Ð¼ÐµÑениÑ, оно ÑÑиÑаеÑÑÑ Ð·Ð°Ð´Ð°Ð½Ð½Ñм в миллиÑекÑÐ½Ð´Ð°Ñ . ÐнаÑение по ÑмолÑÐ°Ð½Ð¸Ñ â 60 ÑекÑнд. ÐÑи знаÑении, Ñавном нÑлÑ, Ñайм-аÑÑ Ð¾ÑклÑÑаеÑÑÑ. ÐадаÑÑ ÑÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð¼Ð¾Ð¶Ð½Ð¾ ÑолÑко в
postgresql.confили в командной ÑÑÑоке пÑи запÑÑке ÑеÑвеÑа.wal_retrieve_retry_interval(integer) #ÐпÑеделÑеÑ, ÑколÑко ведомÑй ÑеÑÐ²ÐµÑ Ð´Ð¾Ð»Ð¶ÐµÐ½ ждаÑÑ Ð¿Ð¾ÑÑÑÐ¿Ð»ÐµÐ½Ð¸Ñ Ð´Ð°Ð½Ð½ÑÑ WAL из лÑбÑÑ Ð¸ÑÑоÑников (поÑÐ¾ÐºÐ¾Ð²Ð°Ñ ÑепликаÑиÑ, локалÑнÑй
pg_walили аÑÑ Ð¸Ð² WAL), пÑежде Ñем повÑоÑÑÑÑ Ð¿Ð¾Ð¿ÑÑÐºÑ Ð¿Ð¾Ð»ÑÑÐµÐ½Ð¸Ñ WAL. ÐÑли ÑÑо знаÑение задаÑÑÑÑ Ð±ÐµÐ· ÐµÐ´Ð¸Ð½Ð¸Ñ Ð¸Ð·Ð¼ÐµÑениÑ, оно ÑÑиÑаеÑÑÑ Ð·Ð°Ð´Ð°Ð½Ð½Ñм в миллиÑекÑÐ½Ð´Ð°Ñ . ÐнаÑение по ÑмолÑÐ°Ð½Ð¸Ñ â 5 ÑекÑнд. ÐадаÑÑ ÑÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð¼Ð¾Ð¶Ð½Ð¾ ÑолÑко вpostgresql.confили в командной ÑÑÑоке ÑеÑвеÑа.ÐÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð¿Ð¾Ð»ÐµÐ·ÐµÐ½ в конÑигÑÑаÑиÑÑ , когда Ð´Ð»Ñ Ñзла в ÑÑ ÐµÐ¼Ðµ воÑÑÑÐ°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð½Ñжно ÑегÑлиÑоваÑÑ Ð²ÑÐµÐ¼Ñ Ð¾Ð¶Ð¸Ð´Ð°Ð½Ð¸Ñ Ð½Ð¾Ð²ÑÑ Ð´Ð°Ð½Ð½ÑÑ WAL. ÐапÑимеÑ, пÑи воÑÑÑановлении аÑÑ Ð¸Ð²Ð° можно ÑÑкоÑиÑÑ ÑеакÑÐ¸Ñ Ð½Ð° поÑвление нового Ñайла WAL, ÑменÑÑив знаÑение ÑÑого паÑамеÑÑа. Ð ÑиÑÑеме Ñ Ð½Ð¸Ð·ÐºÐ¾Ð¹ акÑивноÑÑÑÑ WAL ÑвелиÑение ÑÑого паÑамеÑÑа пÑиведÑÑ Ðº ÑокÑаÑÐµÐ½Ð¸Ñ ÑиÑла запÑоÑов, Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼ÑÑ Ð´Ð»Ñ Ð¾ÑÑÐ»ÐµÐ¶Ð¸Ð²Ð°Ð½Ð¸Ñ Ð°ÑÑ Ð¸Ð²Ð¾Ð² WAL, ÑÑо Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð¿Ð¾Ð»ÐµÐ·Ð½Ð¾ в облаÑнÑÑ Ð¾ÐºÑÑжениÑÑ , где ÑÑиÑÑваеÑÑÑ ÑиÑло обÑаÑений к инÑÑаÑÑÑÑкÑÑÑе.
РлогиÑеÑкой ÑепликаÑии ÑÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ñакже огÑаниÑÐ¸Ð²Ð°ÐµÑ ÑаÑÑоÑÑ Ð¿ÐµÑезапÑÑка неÑдаÑного ÑабоÑего пÑоÑеÑÑа пÑÐ¸Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ð¹ ÑепликаÑии или ÑабоÑего пÑоÑеÑÑа ÑÐ¸Ð½Ñ ÑонизаÑии ÑаблиÑÑ.
recovery_min_apply_delay(integer) #Ðо ÑмолÑÐ°Ð½Ð¸Ñ Ð²ÐµÐ´Ð¾Ð¼Ñй ÑеÑÐ²ÐµÑ Ð²Ð¾ÑÑÑÐ°Ð½Ð°Ð²Ð»Ð¸Ð²Ð°ÐµÑ Ð·Ð°Ð¿Ð¸Ñи WAL пеÑедаÑÑего наÑÑолÑко бÑÑÑÑо, наÑколÑко ÑÑо возможно. Ðногда полезно имеÑÑ Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ÑÑÑ Ð·Ð°Ð´Ð°ÑÑ Ð·Ð°Ð´ÐµÑÐ¶ÐºÑ Ð¿Ñи копиÑовании даннÑÑ , напÑимеÑ, Ð´Ð»Ñ ÑÑÑÑÐ°Ð½ÐµÐ½Ð¸Ñ Ð¾Ñибок, ÑвÑзаннÑÑ Ñ Ð¿Ð¾ÑеÑей даннÑÑ . ÐÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð¿Ð¾Ð·Ð²Ð¾Ð»ÑÐµÑ Ð¾ÑложиÑÑ Ð²Ð¾ÑÑÑановление на заданное вÑемÑ. ÐапÑимеÑ, еÑли ÑÑÑановиÑÑ Ð·Ð½Ð°Ñение
5min, ведомÑй ÑеÑÐ²ÐµÑ Ð±ÑÐ´ÐµÑ Ð²Ð¾ÑпÑоизводиÑÑ ÑикÑаÑÐ¸Ñ ÑÑанзакÑии не ÑанÑÑе, Ñем ÑеÑез 5 минÑÑ (ÑÑÐ´Ñ Ð¿Ð¾ его ÑиÑÑемнÑм ÑаÑам) поÑле вÑемени ÑикÑаÑии, ÑообÑÑнного ведÑÑим. ÐÑли ÑÑо знаÑение задаÑÑÑÑ Ð±ÐµÐ· ÐµÐ´Ð¸Ð½Ð¸Ñ Ð¸Ð·Ð¼ÐµÑениÑ, оно ÑÑиÑаеÑÑÑ Ð·Ð°Ð´Ð°Ð½Ð½Ñм в миллиÑекÑÐ½Ð´Ð°Ñ . ÐнаÑение по ÑмолÑÐ°Ð½Ð¸Ñ Ñавно нÑлÑ, Ñо еÑÑÑ Ð·Ð°Ð´ÐµÑжка не добавлÑеÑÑÑ.Ðозможна ÑиÑÑаÑиÑ, когда задеÑжка ÑепликаÑии Ð¼ÐµÐ¶Ð´Ñ ÑеÑвеÑами пÑевÑÑÐ°ÐµÑ Ð·Ð½Ð°Ñение ÑÑого паÑамеÑÑа. Ð ÑÑом ÑлÑÑае дополниÑелÑÐ½Ð°Ñ Ð·Ð°Ð´ÐµÑжка не добавлÑеÑÑÑ. ÐамеÑÑÑе, ÑÑо задеÑжка вÑÑиÑлÑеÑÑÑ ÐºÐ°Ðº ÑазниÑа Ð¼ÐµÐ¶Ð´Ñ Ð¼ÐµÑкой вÑемени, запиÑанной в WAL на ведÑÑем ÑеÑвеÑе, и ÑекÑÑим вÑеменем на ведомом. ÐапаздÑвание пеÑедаÑи, ÑвÑзанное Ñ Ð·Ð°Ð´ÐµÑжками в ÑеÑи или каÑкадной ÑепликаÑией, Ð¼Ð¾Ð¶ÐµÑ ÑÑÑеÑÑвенно ÑокÑаÑиÑÑ ÑеалÑное вÑÐµÐ¼Ñ Ð¾Ð¶Ð¸Ð´Ð°Ð½Ð¸Ñ. ÐÑли вÑÐµÐ¼Ñ Ð½Ð° главном и ведомом ÑеÑвеÑе не ÑÐ¸Ð½Ñ ÑонизиÑовано, ÑÑо Ð¼Ð¾Ð¶ÐµÑ Ð¿ÑиводиÑÑ Ðº пÑÐ¸Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð·Ð°Ð¿Ð¸Ñей Ñанее ожидаемого, однако ÑÑо не оÑÐµÐ½Ñ Ð²Ð°Ð¶Ð½Ð¾, поÑÐ¾Ð¼Ñ ÑÑо полезнÑе знаÑÐµÐ½Ð¸Ñ ÑÑого паÑамеÑÑа намного болÑÑе, Ñем обÑÑно бÑÐ²Ð°ÐµÑ ÑазниÑа во вÑемени Ð¼ÐµÐ¶Ð´Ñ Ð´Ð²ÑÐ¼Ñ ÑеÑвеÑами.
ÐадеÑжка пÑименÑеÑÑÑ Ð»Ð¸ÑÑ Ð´Ð»Ñ Ð·Ð°Ð¿Ð¸Ñей WAL, пÑедÑÑавлÑÑÑÐ¸Ñ ÑикÑаÑÐ¸Ñ ÑÑанзакÑий. ÐÑÑалÑнÑе запиÑи пÑоигÑÑваÑÑÑÑ Ð½ÐµÐ·Ð°Ð¼ÐµÐ´Ð»Ð¸ÑелÑно, Ñак как Ð¸Ñ ÑÑÑÐµÐºÑ Ð½Ðµ бÑÐ´ÐµÑ Ð·Ð°Ð¼ÐµÑен до пÑÐ¸Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ ÑооÑвеÑÑÑвÑÑÑей запиÑи о ÑикÑаÑии ÑÑанзакÑии, благодаÑÑ Ð¿Ñавилам видимоÑÑи MVCC.
ÐадеÑжка добавлÑеÑÑÑ, как ÑолÑко воÑÑÑÐ°Ð½Ð°Ð²Ð»Ð¸Ð²Ð°ÐµÐ¼Ð°Ñ Ð±Ð°Ð·Ð° даннÑÑ Ð´Ð¾ÑÑÐ¸Ð³Ð°ÐµÑ ÑоглаÑованного ÑоÑÑоÑниÑ, и иÑклÑÑаеÑÑÑ, когда ведÑÑий ÑеÑÐ²ÐµÑ Ð¿ÐµÑеклÑÑаеÑÑÑ Ð² Ñежим оÑновного. ÐоÑле пеÑеклÑÑÐµÐ½Ð¸Ñ Ð²ÐµÐ´ÑÑий ÑеÑÐ²ÐµÑ Ð·Ð°Ð²ÐµÑÑÐ°ÐµÑ Ð²Ð¾ÑÑÑановление незамедлиÑелÑно.
ÐапиÑи WAL Ð´Ð¾Ð»Ð¶Ð½Ñ Ñ ÑаниÑÑÑÑ Ð½Ð° ÑезеÑвном ÑеÑвеÑе, пока они не бÑдÑÑ Ð¿ÑимененÑ. Таким обÑазом, Ñем болÑÑе задеÑжка, Ñем болÑÑий обÑÑм Ñайлов WAL Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼Ð¾ накапливаÑÑ, и Ñем болÑÑе диÑкового пÑоÑÑÑанÑÑва поÑÑебÑеÑÑÑ Ð´Ð»Ñ ÐºÐ°Ñалога
pg_walна ведомом ÑеÑвеÑе.ÐаннÑй паÑамеÑÑ Ð¿ÑедназнаÑен Ð´Ð»Ñ Ð¿ÑÐ¸Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð² конÑигÑÑаÑиÑÑ Ñ Ð¿Ð¾Ñоковой ÑепликаÑией; однако еÑли он задан, он бÑÐ´ÐµÑ ÑÑиÑÑваÑÑÑÑ Ð²Ð¾ вÑÐµÑ ÑлÑÑаÑÑ , кÑоме воÑÑÑÐ°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð¿Ð¾Ñле ÑбоÑ. ÐадеÑжка, ÑÑÑÐ°Ð½Ð°Ð²Ð»Ð¸Ð²Ð°ÐµÐ¼Ð°Ñ ÑÑим паÑамеÑÑом, влиÑÐµÑ Ð¸ на ÑабоÑÑ Ð¼ÐµÑ Ð°Ð½Ð¸Ð·Ð¼Ð°
hot_standby_feedback, ÑÑо Ð¼Ð¾Ð¶ÐµÑ Ð¿ÑивеÑÑи к ÑаздÑÐ²Ð°Ð½Ð¸Ñ Ð±Ð°Ð·Ñ Ð½Ð° главном ÑеÑвеÑе; иÑполÑзоваÑÑ Ð´Ð°Ð½Ð½Ñй паÑамеÑÑ Ð¿Ñи вклÑÑении ÑÑого Ð¼ÐµÑ Ð°Ð½Ð¸Ð·Ð¼Ð° ÑледÑÐµÑ Ñ Ð¾ÑÑоÑожноÑÑÑÑ.ÐÑедÑпÑеждение
ÐÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð²Ð»Ð¸ÑÐµÑ Ð½Ð° ÑÐ¸Ð½Ñ ÑоннÑÑ ÑепликаÑиÑ, когда
synchronous_commitÐ¸Ð¼ÐµÐµÑ Ð·Ð½Ð°Ñениеremote_apply; каждÑйCOMMITбÑÐ´ÐµÑ Ð¶Ð´Ð°ÑÑ Ð¿Ð¾Ð´ÑвеÑÐ¶Ð´ÐµÐ½Ð¸Ñ Ð¿ÑименениÑ.ÐадаÑÑ ÑÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð¼Ð¾Ð¶Ð½Ð¾ ÑолÑко в
postgresql.confили в командной ÑÑÑоке пÑи запÑÑке ÑеÑвеÑа.sync_replication_slots(boolean) #ÐозволÑÐµÑ ÑизиÑеÑÐºÐ¾Ð¼Ñ ÑезеÑÐ²Ð½Ð¾Ð¼Ñ ÑеÑвеÑÑ ÑÐ¸Ð½Ñ ÑонизиÑоваÑÑ ÑлоÑÑ Ð»Ð¾Ð³Ð¸ÑеÑкой ÑепликаÑии Ð´Ð»Ñ Ð¾ÑÑабоÑки оÑказа Ñ Ð²ÐµÐ´ÑÑим ÑеÑвеÑом, ÑÑÐ¾Ð±Ñ Ð¿Ð¾Ð´Ð¿Ð¸ÑÑики логиÑеÑкой ÑепликаÑии могли возобновиÑÑ ÑепликаÑÐ¸Ñ Ñ Ð½Ð¾Ð²Ð¾Ð³Ð¾ ведÑÑего ÑеÑвеÑа поÑле оÑÑабоÑки оÑказа.
Ðо ÑмолÑÐ°Ð½Ð¸Ñ Ð¾ÑклÑÑÑн. ÐадаÑÑ ÑÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð¼Ð¾Ð¶Ð½Ð¾ ÑолÑко в
postgresql.confили в командной ÑÑÑоке пÑи запÑÑке ÑеÑвеÑа.
18.6.4. ÐодпиÑÑики #
ÐÑи паÑамеÑÑÑ ÑпÑавлÑÑÑ Ð¿Ð¾Ð²ÐµÐ´ÐµÐ½Ð¸ÐµÐ¼ подпиÑÑика логиÑеÑкой ÑепликаÑии. Ðа пÑбликÑÑÑем ÑеÑвеÑе они не игÑаÑÑ Ñоли. Ðа подÑобноÑÑÑми обÑаÑиÑеÑÑ Ðº РазделÑ 28.12.
max_active_replication_origins(integer) #УказÑваеÑ, ÑколÑко иÑÑоÑников ÑепликаÑии (Ñм. ÐлавÑ 48) можно оÑÑлеживаÑÑ Ð¾Ð´Ð½Ð¾Ð²Ñеменно, по ÑÑÑи огÑаниÑÐ¸Ð²Ð°Ñ ÐºÐ¾Ð»Ð¸ÑеÑÑво подпиÑок на логиÑеÑкÑÑ ÑепликаÑиÑ, коÑоÑÑе могÑÑ Ð±ÑÑÑ ÑÐ¾Ð·Ð´Ð°Ð½Ñ Ð½Ð° ÑеÑвеÑе. ÐÑли ÑÑÑановленное знаÑение бÑÐ´ÐµÑ Ð¼ÐµÐ½ÑÑе, Ñем ÑекÑÑее колиÑеÑÑво оÑÑлеживаемÑÑ Ð¸ÑÑоÑников ÑепликаÑии (показÑваемое в pg_replication_origin_status), ÑеÑÐ²ÐµÑ Ð½Ðµ запÑÑÑиÑÑÑ. ÐнаÑение по ÑмолÑÐ°Ð½Ð¸Ñ â
10. ÐÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð¼Ð¾Ð¶Ð½Ð¾ задаÑÑ ÑолÑко пÑи запÑÑке ÑеÑвеÑа. ÐнаÑение паÑамеÑÑаmax_active_replication_originsдолжно бÑÑÑ Ð½Ðµ менее ÑиÑла подпиÑок, добавлÑемого подпиÑÑикÑ, плÑÑ Ð½ÐµÐºÐ¾ÑоÑÑй ÑезеÑв Ð´Ð»Ñ ÑÐ¸Ð½Ñ ÑонизаÑии ÑаблиÑ.max_logical_replication_workers(integer) #ÐадаÑÑ Ð¼Ð°ÐºÑималÑно возможное ÑиÑло ÑабоÑÐ¸Ñ Ð¿ÑоÑеÑÑов логиÑеÑкой ÑепликаÑии. Ð ÑÑо ÑиÑло Ð²Ñ Ð¾Ð´ÑÑ ÐºÐ°Ðº ведÑÑие и паÑаллелÑнÑе ÑабоÑие пÑоÑеÑÑÑ, пÑименÑÑÑие изменениÑ, Ñак и пÑоÑеÑÑÑ, ÑÐ¸Ð½Ñ ÑонизиÑÑÑÑие ÑаблиÑÑ.
РабоÑие пÑоÑеÑÑÑ Ð»Ð¾Ð³Ð¸ÑеÑкой ÑепликаÑии беÑÑÑÑÑ Ð¸Ð· пÑла, конÑÑолиÑÑемого паÑамеÑÑом
max_worker_processes.ÐнаÑение по ÑмолÑÐ°Ð½Ð¸Ñ â 4. ÐÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð¼Ð¾Ð¶Ð½Ð¾ задаÑÑ ÑолÑко пÑи запÑÑке ÑеÑвеÑа.
max_sync_workers_per_subscription(integer) #ÐакÑималÑное ÑиÑло ÑабоÑÐ¸Ñ Ð¿ÑоÑеÑÑов, вÑполнÑÑÑÐ¸Ñ ÑÐ¸Ð½Ñ ÑонизаÑиÑ, Ð´Ð»Ñ Ð¾Ð´Ð½Ð¾Ð¹ подпиÑки. ÐÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ ÑпÑавлÑÐµÑ ÑÑепенÑÑ ÑаÑпаÑÐ°Ð»Ð»ÐµÐ»Ð¸Ð²Ð°Ð½Ð¸Ñ ÐºÐ¾Ð¿Ð¸ÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð½Ð°ÑалÑнÑÑ Ð´Ð°Ð½Ð½ÑÑ Ð² пÑоÑеÑÑе иниÑиализаÑии подпиÑки или пÑи добавлении новÑÑ ÑаблиÑ.
РнаÑÑоÑÑее вÑÐµÐ¼Ñ Ð¾Ð´Ð½Ñ ÑаблиÑÑ Ð¼Ð¾Ð¶ÐµÑ Ð¾Ð±ÑабаÑÑваÑÑ ÑолÑко один ÑабоÑий пÑоÑеÑÑ ÑÐ¸Ð½Ñ ÑонизаÑии.
РабоÑие пÑоÑеÑÑÑ ÑÐ¸Ð½Ñ ÑонизаÑии беÑÑÑÑÑ Ð¸Ð· пÑла, конÑÑолиÑÑемого паÑамеÑÑом
max_logical_replication_workers.ÐнаÑение по ÑмолÑÐ°Ð½Ð¸Ñ â 2. ÐадаÑÑ ÑÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð¼Ð¾Ð¶Ð½Ð¾ ÑолÑко в
postgresql.confили в командной ÑÑÑоке пÑи запÑÑке ÑеÑвеÑа.max_parallel_apply_workers_per_subscription(integer) #ÐакÑималÑное ÑиÑло паÑаллелÑнÑÑ ÑабоÑÐ¸Ñ Ð¿ÑоÑеÑÑов, пÑименÑÑÑÐ¸Ñ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ, Ð´Ð»Ñ Ð¾Ð´Ð½Ð¾Ð¹ подпиÑки. ÐÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ ÑпÑавлÑÐµÑ ÑÑепенÑÑ ÑаÑпаÑÐ°Ð»Ð»ÐµÐ»Ð¸Ð²Ð°Ð½Ð¸Ñ Ð´Ð»Ñ Ð¿Ð¾Ñоковой пеÑедаÑи незавеÑÑÑннÑÑ ÑÑанзакÑий Ñ Ð¿Ð°ÑамеÑÑом подпиÑки
streaming = parallel.РабоÑие пÑоÑеÑÑÑ Ð¿ÑÐ¸Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ð¹ беÑÑÑÑÑ Ð¸Ð· пÑла, конÑÑолиÑÑемого паÑамеÑÑом
max_logical_replication_workers.ÐнаÑение по ÑмолÑÐ°Ð½Ð¸Ñ â 2. ÐадаÑÑ ÑÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð¼Ð¾Ð¶Ð½Ð¾ ÑолÑко в
postgresql.confили в командной ÑÑÑоке пÑи запÑÑке ÑеÑвеÑа.