46.2. ÐонÑепÑии логиÑеÑкого декодиÑованиÑ
46.2.1. ÐогиÑеÑкое декодиÑование
ÐогиÑеÑкое декодиÑование â ÑÑо пÑоÑедÑÑа извлеÑÐµÐ½Ð¸Ñ Ð²ÑÐµÑ Ð¿Ð¾ÑÑоÑннÑÑ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ð¹, пÑоиÑÑ Ð¾Ð´ÑÑÐ¸Ñ Ð² ÑаблиÑÐ°Ñ Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ , в ÑоглаÑованном и понÑÑном ÑоÑмаÑе, коÑоÑÑй можно инÑеÑпÑеÑиÑоваÑÑ, не Ð¸Ð¼ÐµÑ Ð¿Ð¾Ð»Ð½Ð¾Ð³Ð¾ пÑедÑÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ Ð¾ внÑÑÑеннем ÑоÑÑоÑнии Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ .
Ð Postgres Pro логиÑеÑкое декодиÑование ÑеализÑеÑÑÑ Ð¿ÑÑÑм пеÑевода ÑодеÑжимого жÑÑнала пÑедзапиÑи, опиÑÑваÑÑего Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð½Ð° ÑÑовне Ñ ÑанениÑ, в ÑпеÑиалÑнÑÑ ÑоÑÐ¼Ñ ÑÑÐ¾Ð²Ð½Ñ Ð¿ÑиложениÑ, напÑимеÑ, в поÑок коÑÑежей или опеÑаÑоÑов SQL.
46.2.2. СлоÑÑ ÑепликаÑии
РконÑекÑÑе логиÑеÑкой ÑепликаÑии ÑÐ»Ð¾Ñ Ð¿ÑедÑÑавлÑÐµÑ Ð¿Ð¾Ñок изменений, коÑоÑÑе могÑÑ Ð±ÑÑÑ Ð²Ð¾ÑпÑÐ¾Ð¸Ð·Ð²ÐµÐ´ÐµÐ½Ñ ÐºÐ»Ð¸ÐµÐ½Ñом в Ñом поÑÑдке, в каком они пÑоиÑÑ Ð¾Ð´Ð¸Ð»Ð¸ на иÑÑ Ð¾Ð´Ð½Ð¾Ð¼ ÑеÑвеÑе. ЧеÑез каждÑй ÑÐ»Ð¾Ñ Ð¿ÐµÑедаÑÑÑÑ Ð¿Ð¾ÑледоваÑелÑноÑÑÑ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ð¹ в одной базе даннÑÑ .
ÐÑимеÑание
Ð Postgres Pro Ñакже еÑÑÑ ÑлоÑÑ Ð¿Ð¾Ñоковой ÑепликаÑии (Ñм. ÐодÑаздел 25.2.5), но они иÑполÑзÑÑÑÑÑ Ð½ÐµÑколÑко по-дÑÑгомÑ.
СлоÑÑ ÑепликаÑии назнаÑаеÑÑÑ Ð¸Ð´ÐµÐ½ÑиÑикаÑоÑ, ÑникалÑнÑй Ð´Ð»Ñ Ð²ÑÐµÑ Ð±Ð°Ð· даннÑÑ Ð² клаÑÑеÑе Postgres Pro. СлоÑÑ ÑÐ¾Ñ ÑанÑÑÑÑÑ Ð½ÐµÐ·Ð°Ð²Ð¸Ñимо Ð¾Ñ Ð¿Ð¾Ð´ÐºÐ»ÑÑений, иÑполÑзÑÑÑÐ¸Ñ Ð¸Ñ , и заÑиÑÐµÐ½Ñ Ð¾Ñ Ñбоев ÑеÑвеÑа.
ÐÑи обÑÑнÑÑ ÑÑловиÑÑ ÑеÑез логиÑеÑкий ÑÐ»Ð¾Ñ ÐºÐ°Ð¶Ð´Ð¾Ðµ изменение пеÑедаÑÑÑÑ ÑолÑко один Ñаз. ТекÑÑÐ°Ñ Ð¿Ð¾Ð·Ð¸ÑÐ¸Ñ Ð² каждом ÑлоÑе ÑÐ¾Ñ ÑанÑеÑÑÑ ÑолÑко в конÑÑолÑной ÑоÑке, Ñак ÑÑо в ÑлÑÑае ÑÐ±Ð¾Ñ ÑÐ»Ð¾Ñ Ð¼Ð¾Ð¶ÐµÑ Ð²ÐµÑнÑÑÑÑÑ Ðº пÑедÑдÑÑÐµÐ¼Ñ LSN, вÑледÑÑвие Ñего поÑледние Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð¼Ð¾Ð³ÑÑ Ð±ÑÑÑ Ð¿ÐµÑÐµÐ´Ð°Ð½Ñ Ð¿Ð¾Ð²ÑоÑно пÑи пеÑезапÑÑке ÑеÑвеÑа. Ðа иÑклÑÑение нежелаÑелÑнÑÑ ÑÑÑекÑов Ð¾Ñ Ð¿Ð¾Ð²ÑоÑной обÑабоÑки одного и Ñого же ÑообÑÐµÐ½Ð¸Ñ Ð¾ÑвеÑаÑÑ ÐºÐ»Ð¸ÐµÐ½ÑÑ Ð»Ð¾Ð³Ð¸ÑеÑкого декодиÑованиÑ. ÐлиенÑÑ Ð¼Ð¾Ð³ÑÑ Ð·Ð°Ð¿Ð¾Ð¼Ð¸Ð½Ð°ÑÑ Ð¿Ñи декодиÑовании, какой поÑледний LSN они Ñже полÑÑали, и пÑопÑÑкаÑÑ Ð¿Ð¾Ð²ÑоÑÑÑÑиеÑÑ Ð´Ð°Ð½Ð½Ñе или (пÑи иÑполÑзовании пÑоÑокола ÑепликаÑии) запÑаÑиваÑÑ, ÑÑÐ¾Ð±Ñ Ð´ÐµÐºÐ¾Ð´Ð¸Ñование наÑиналоÑÑ Ñ ÑÑого LSN, а не Ñ Ð¿Ð¾Ð·Ð¸Ñии, вÑбиÑаемой ÑеÑвеÑом. ÐÐ»Ñ ÑÑого ÑазÑабоÑан Ð¼ÐµÑ Ð°Ð½Ð¸Ð·Ð¼ оÑÑÐ»ÐµÐ¶Ð¸Ð²Ð°Ð½Ð¸Ñ ÑепликаÑии, о коÑоÑом можно ÑзнаÑÑ Ð¿Ð¾Ð´Ñобнее в опиÑании иÑÑоÑников ÑепликаÑии.
ÐÐ»Ñ Ð¾Ð´Ð½Ð¾Ð¹ Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ Ð¼Ð¾Ð³ÑÑ ÑÑÑеÑÑвоваÑÑ Ð½ÐµÑколÑко незавиÑимÑÑ ÑлоÑов. ÐаждÑй ÑÐ»Ð¾Ñ Ð¸Ð¼ÐµÐµÑ ÑобÑÑвенное ÑоÑÑоÑние, ÑÑо позволÑÐµÑ ÑазлиÑнÑм поÑÑебиÑелÑм полÑÑаÑÑ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ñ ÑазнÑÑ Ð¿Ð¾Ð·Ð¸Ñий в поÑоке изменений Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ . ÐÐ»Ñ Ð±Ð¾Ð»ÑÑинÑÑва пÑиложений ÐºÐ°Ð¶Ð´Ð¾Ð¼Ñ Ð¿Ð¾ÑÑебиÑÐµÐ»Ñ ÑÑебÑеÑÑÑ Ð¾ÑделÑнÑй ÑлоÑ.
Ð¡Ð»Ð¾Ñ Ð»Ð¾Ð³Ð¸ÑеÑкой ÑепликаÑии ниÑего не Ð·Ð½Ð°ÐµÑ Ð¾ ÑоÑÑоÑнии полÑÑаÑелÑ(ей). Ðозможно даже имеÑÑ Ð½ÐµÑколÑко ÑазлиÑнÑÑ Ð¿Ð¾ÑÑебиÑелей одного ÑлоÑа в ÑазнÑе моменÑÑ Ð²Ñемени; они пÑоÑÑо бÑдÑÑ Ð¿Ð¾Ð»ÑÑаÑÑ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ñ Ð¼Ð¾Ð¼ÐµÐ½Ñа, когда Ð¸Ñ Ð¿ÐµÑеÑÑал полÑÑаÑÑ Ð¿ÑедÑдÑÑий поÑÑебиÑелÑ. Ðо в лÑбой опÑеделÑннÑй Ð¼Ð¾Ð¼ÐµÐ½Ñ Ð¿Ð¾Ð»ÑÑаÑÑ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð¼Ð¾Ð¶ÐµÑ ÑолÑко один поÑÑебиÑелÑ.
ÐÑимеÑание
СлоÑÑ ÑепликаÑии ÑоÑ
ÑанÑÑÑÑÑ Ð¿Ñи ÑбоÑÑ
ÑеÑвеÑа и ниÑего не знаÑÑ Ð¾ ÑоÑÑоÑнии иÑ
поÑÑебиÑелÑ(ей). Ðни не даÑÑ ÑдалÑÑÑ ÑÑебÑемÑе ÑеÑÑÑÑÑ, даже когда не иÑполÑзÑÑÑÑÑ Ð½Ð¸ÐºÐ°ÐºÐ¸Ð¼ подклÑÑением. Ðа ÑÑо ÑÑ
Ð¾Ð´Ð¸Ñ Ð¼ÐµÑÑо в Ñ
ÑанилиÑе, Ñак как ни ÑегменÑÑ WAL, ни ÑÑебÑемÑе ÑÑÑоки из ÑиÑÑемнÑÑ
каÑалогов нелÑÐ·Ñ Ð±ÑÐ´ÐµÑ ÑдалиÑÑ Ð² ÑезÑлÑÑаÑе VACUUM, пока они нÑÐ¶Ð½Ñ ÑÑÐ¾Ð¼Ñ ÑлоÑÑ ÑепликаÑии. ÐоÑÑомÑ, еÑли ÑÐ»Ð¾Ñ Ð±Ð¾Ð»ÑÑе не ÑÑебÑеÑÑÑ, его ÑледÑÐµÑ Ð»Ð¸ÐºÐ²Ð¸Ð´Ð¸ÑоваÑÑ.
46.2.3. ÐодÑли вÑвода
ÐодÑли вÑвода пеÑеводÑÑ Ð´Ð°Ð½Ð½Ñе из внÑÑÑеннего пÑедÑÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ Ð² жÑÑнале пÑедзапиÑи в ÑоÑмаÑ, ÑÑÑÑаиваÑÑий поÑÑебиÑÐµÐ»Ñ ÑлоÑа ÑепликаÑии.
46.2.4. ÐкÑпоÑÑиÑованнÑе Ñнимки
Ðогда новÑй ÑÐ»Ð¾Ñ ÑепликаÑии ÑоздаÑÑÑÑ ÑеÑез инÑеÑÑÐµÐ¹Ñ Ð¿Ð¾Ñоковой ÑепликаÑии, ÑкÑпоÑÑиÑÑеÑÑÑ Ñнимок (Ñм. CREATE_REPLICATION_SLOT), коÑоÑÑй бÑÐ´ÐµÑ Ð¿Ð¾ÐºÐ°Ð·ÑваÑÑ Ñовно Ñо ÑоÑÑоÑние Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ
, Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð¿Ð¾Ñле коÑоÑого бÑдÑÑ Ð²ÐºÐ»ÑÑаÑÑÑÑ Ð² поÑок изменений. ÐÑполÑзÑÑ ÐµÐ³Ð¾, можно ÑоздаÑÑ Ð½Ð¾Ð²ÑÑ ÑепликÑ, воÑполÑзовавÑиÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð¾Ð¹ SET TRANSACTION SNAPSHOT, ÑÑÐ¾Ð±Ñ Ð¿Ð¾Ð»ÑÑиÑÑ ÑоÑÑоÑние Ð±Ð°Ð·Ñ Ð² Ð¼Ð¾Ð¼ÐµÐ½Ñ ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ ÑлоÑа. ÐоÑле ÑÑого даннÑÑ ÑÑанзакÑÐ¸Ñ Ð¼Ð¾Ð¶Ð½Ð¾ иÑполÑзоваÑÑ Ð´Ð»Ñ Ð²ÑгÑÑзки ÑоÑÑоÑÐ½Ð¸Ñ Ð±Ð°Ð·Ñ Ð½Ð° Ð¼Ð¾Ð¼ÐµÐ½Ñ ÑкÑпоÑÑа Ñнимка, а заÑем изменÑÑÑ ÑÑо ÑоÑÑоÑние, пÑименÑÑ ÑодеÑжимое ÑлоÑа, Ñак ÑÑо никакие Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð½Ðµ бÑдÑÑ Ð¿Ð¾ÑеÑÑнÑ.
Создание Ñнимка возможно не вÑегда. Ð ÑаÑÑноÑÑи, невозможно ÑоздаÑÑ Ñнимок пÑи подклÑÑении к гоÑÑÑÐµÐ¼Ñ ÑезеÑвÑ. ÐÑиложениÑ, коÑоÑÑм не ÑÑебÑеÑÑÑ ÑкÑпоÑÑ Ñнимка, могÑÑ Ð¿Ð¾Ð´Ð°Ð²Ð¸ÑÑ ÐµÐ³Ð¾, воÑполÑзовавÑиÑÑ Ñказанием NOEXPORT_SNAPSHOT.