29.7. ÐÑÑ Ð¸ÑекÑÑÑа #
ÐогиÑеÑÐºÐ°Ñ ÑепликаÑÐ¸Ñ Ð½Ð°ÑинаеÑÑÑ Ñ ÐºÐ¾Ð¿Ð¸ÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ñнимка даннÑÑ Ð² базе даннÑÑ Ð¿ÑбликаÑии. Ðо завеÑÑении ÑÑой опеÑаÑии Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð½Ð° ÑÑоÑоне пÑбликаÑии пеÑедаÑÑÑÑ Ð¿Ð¾Ð´Ð¿Ð¸ÑÑÐ¸ÐºÑ Ð² ÑеалÑном вÑемени, когда они пÑоиÑÑ Ð¾Ð´ÑÑ. ÐодпиÑÑик пÑименÑÐµÑ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð² Ñом же поÑÑдке, в каком они вноÑÑÑÑÑ Ð½Ð° Ñзле пÑбликаÑии, Ñак ÑÑо Ð´Ð»Ñ Ð¿ÑбликаÑий в ÑÐ°Ð¼ÐºÐ°Ñ Ð¾Ð´Ð½Ð¾Ð¹ подпиÑки гаÑанÑиÑÑеÑÑÑ ÑÑанзакÑÐ¸Ð¾Ð½Ð½Ð°Ñ ÑелоÑÑноÑÑÑ.
ÐогиÑеÑÐºÐ°Ñ ÑепликаÑÐ¸Ñ Ð¿Ð¾ÑÑÑоена по ÑÑ
еме, подобной ÑизиÑеÑкой поÑоковой ÑепликаÑии (Ñм. ÐодÑаздел 25.2.5). Ðна ÑеализÑеÑÑÑ Ð¿ÑоÑеÑÑами walsender (пеÑедаÑи WAL) и apply (пÑименениÑ). ÐÑоÑеÑÑ walsender запÑÑÐºÐ°ÐµÑ Ð»Ð¾Ð³Ð¸ÑеÑкое декодиÑование (опиÑанное в Ðлаве 48) WAL и загÑÑÐ¶Ð°ÐµÑ ÑÑандаÑÑнÑй модÑÐ»Ñ Ð²Ñвода логиÑеÑкого декодиÑÐ¾Ð²Ð°Ð½Ð¸Ñ (pgoutput). ÐÑÐ¾Ñ Ð¼Ð¾Ð´ÑÐ»Ñ Ð¿ÑеобÑазÑÐµÑ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ, ÑÑиÑÑваемÑе из WAL, в пÑоÑокол логиÑеÑкой ÑепликаÑии (Ñм. Раздел 54.5) и оÑÑилÑÑÑовÑÐ²Ð°ÐµÑ Ð´Ð°Ð½Ð½Ñе ÑоглаÑно ÑпеÑиÑикаÑии пÑбликаÑии. ÐаÑем даннÑе поÑледоваÑелÑно пеÑедаÑÑÑÑ Ð¿Ð¾ пÑоÑÐ¾ÐºÐ¾Ð»Ñ Ð»Ð¾Ð³Ð¸ÑеÑкой ÑепликаÑии ÑабоÑÐµÐ¼Ñ Ð¿ÑоÑеÑÑÑ Ð¿ÑÐ¸Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ð¹, коÑоÑÑй ÑопоÑÑавлÑÐµÑ Ð´Ð°Ð½Ð½Ñе Ñ Ð»Ð¾Ð³Ð¸ÑеÑкими ÑаблиÑами и пÑименÑÐµÑ Ð¾ÑделÑнÑе Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð¿Ð¾ меÑе иÑ
поÑÑÑплениÑ, ÑоÑ
ÑанÑÑ ÑÑанзакÑионнÑй поÑÑдок.
ÐÑоÑеÑÑ Ð¿ÑÐ¸Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ð¹ в базе даннÑÑ
подпиÑÑика вÑегда вÑполнÑеÑÑÑ Ñо знаÑением session_replication_role ÑавнÑм replica. ÐÑо ознаÑаеÑ, ÑÑо по ÑмолÑÐ°Ð½Ð¸Ñ ÑÑиггеÑÑ Ð¸ пÑавила не бÑдÑÑ ÑÑабаÑÑваÑÑ Ð½Ð° подпиÑÑике. ÐÑи желании полÑзоваÑели могÑÑ Ð²ÐºÐ»ÑÑиÑÑ ÑÑиггеÑÑ Ð¸ пÑавила Ð´Ð»Ñ ÑаблиÑÑ, иÑполÑзÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ ALTER TABLE Ñ Ð¿ÑедложениÑми ENABLE TRIGGER и ENABLE RULE.
ÐÑоÑеÑÑ Ð¿ÑÐ¸Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð»Ð¾Ð³Ð¸ÑеÑкой ÑепликаÑии в наÑÑоÑÑее вÑÐµÐ¼Ñ Ð²ÑзÑÐ²Ð°ÐµÑ ÑолÑко ÑÑиггеÑÑ ÑÑÐ¾Ð²Ð½Ñ ÑÑÑок, но не ÑÑиггеÑÑ Ð¾Ð¿ÐµÑаÑоÑов. Ðднако наÑалÑÐ½Ð°Ñ ÑинÑ
ÑонизаÑÐ¸Ñ ÑаблиÑÑ Ñеализована как команда COPY и поÑÑÐ¾Ð¼Ñ Ð²ÑзÑÐ²Ð°ÐµÑ ÑÑиггеÑÑ Ð´Ð»Ñ INSERT и ÑÑÐ¾Ð²Ð½Ñ ÑÑÑок, и ÑÑÐ¾Ð²Ð½Ñ Ð¾Ð¿ÐµÑаÑоÑа.
29.7.1. ÐаÑалÑнÑй Ñнимок #
ÐаÑалÑнÑе даннÑе ÑÑÑеÑÑвÑÑÑÐ¸Ñ ÑÐ°Ð±Ð»Ð¸Ñ Ð² подпиÑке помеÑаÑÑÑÑ Ð² Ñнимок и копиÑÑÑÑÑÑ Ð² паÑаллелÑном ÑкземплÑÑе пÑоÑеÑÑа пÑÐ¸Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð¾Ñобого вида. ÐÑÐ¾Ñ Ð¿ÑоÑеÑÑ ÑоздаÑÑ ÑобÑÑвеннÑй ÑÐ»Ð¾Ñ ÑепликаÑии и пÑÐ¾Ð¸Ð·Ð²Ð¾Ð´Ð¸Ñ ÐºÐ¾Ð¿Ð¸Ñование ÑÑÑеÑÑвÑÑÑÐ¸Ñ Ð´Ð°Ð½Ð½ÑÑ . Ðак ÑолÑко копиÑование бÑÐ´ÐµÑ Ð·Ð°ÐºÐ¾Ð½Ñено, ÑодеÑжимое ÑаблиÑÑ ÑÑÐ°Ð½ÐµÑ Ð²Ð¸Ð´Ð¸Ð¼Ñм Ð´Ð»Ñ Ð´ÑÑÐ³Ð¸Ñ ÑеÑвеÑнÑÑ Ð¿ÑоÑеÑÑов. Ðогда ÑÑÑеÑÑвÑÑÑие даннÑе бÑдÑÑ ÑкопиÑованÑ, ÑÑÐ¾Ñ ÑабоÑий пÑоÑеÑÑ Ð¿ÐµÑÐµÑ Ð¾Ð´Ð¸Ñ Ð² Ñежим ÑÐ¸Ð½Ñ ÑонизаÑии, в коÑоÑом ÑаблиÑа пÑиводиÑÑÑ Ð² ÑÐ¸Ð½Ñ ÑонизиÑованное ÑоÑÑоÑние Ð´Ð»Ñ Ð¾Ñновного пÑоÑеÑÑа пÑименениÑ, Ñо еÑÑÑ Ð¿ÐµÑедаÑÑ Ð²Ñе изменениÑ, пÑоизоÑедÑие во вÑÐµÐ¼Ñ Ð½Ð°ÑалÑного копиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð´Ð°Ð½Ð½ÑÑ , иÑполÑзÑÑ ÑÑандаÑÑнÑÑ Ð»Ð¾Ð³Ð¸ÑеÑкÑÑ ÑепликаÑиÑ. Ðа ÑÑом ÑÑапе ÑÐ¸Ð½Ñ ÑонизаÑии Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð¿ÑименÑÑÑÑÑ Ð¸ ÑикÑиÑÑÑÑÑÑ Ð² Ñом же поÑÑдке, ÑÑо и на ÑÑоÑоне пÑбликаÑии. Ðо завеÑÑении ÑÐ¸Ð½Ñ ÑонизаÑии ÑпÑавление ÑепликаÑией ÑÑой ÑаблиÑÑ Ð²Ð¾Ð·Ð²ÑаÑаеÑÑÑ Ð³Ð»Ð°Ð²Ð½Ð¾Ð¼Ñ Ð¿ÑоÑеÑÑÑ, коÑоÑÑй пÑÐ¾Ð´Ð¾Ð»Ð¶Ð°ÐµÑ ÑепликаÑÐ¸Ñ Ð² обÑÑном Ñежиме.
ÐÑимеÑание
ÐаÑамеÑÑ Ð¿ÑбликаÑии publish влиÑÐµÑ ÑолÑко на Ñо, какие опеÑаÑии DML бÑдÑÑ ÑеплиÑиÑоваÑÑÑÑ. Ðн не влиÑÐµÑ Ð½Ð° копиÑование ÑÑÑеÑÑвÑÑÑиÑ
даннÑÑ
ÑÐ°Ð±Ð»Ð¸Ñ Ð¿Ñи наÑалÑной ÑинÑ
ÑонизаÑии даннÑÑ
.