30.2. ÐодпиÑка
ÐодпиÑка â ÑÑо пÑинимаÑÑÐ°Ñ ÑÑоÑона логиÑеÑкой ÑепликаÑии. Узел, на коÑоÑом опÑеделÑеÑÑÑ Ð¿Ð¾Ð´Ð¿Ð¸Ñка, назÑваеÑÑÑ Ð¿Ð¾Ð´Ð¿Ð¸ÑÑиком. Ð ÑвойÑÑÐ²Ð°Ñ Ð¿Ð¾Ð´Ð¿Ð¸Ñки опÑеделÑеÑÑÑ Ð¿Ð¾Ð´ÐºÐ»ÑÑение к дÑÑгой базе даннÑÑ Ð¸ Ð½Ð°Ð±Ð¾Ñ Ð¿ÑбликаÑий (из одной или неÑколÑÐºÐ¸Ñ ), на коÑоÑÑе подпиÑÑик Ñ Ð¾ÑÐµÑ Ð¿Ð¾Ð´Ð¿Ð¸ÑаÑÑÑÑ.
Ðаза даннÑÑ Ð¿Ð¾Ð´Ð¿Ð¸ÑÑика ÑабоÑÐ°ÐµÑ Ñак же, как и ÑкземплÑÑ Ð»Ñбой дÑÑгой Ð±Ð°Ð·Ñ Postgres Pro, и Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð¿ÑбликÑÑÑей Ð´Ð»Ñ Ð´ÑÑÐ³Ð¸Ñ Ð±Ð°Ð·, еÑли в ней опÑÐµÐ´ÐµÐ»ÐµÐ½Ñ ÑобÑÑвеннÑе подпиÑки.
Узел подпиÑÑика Ð¼Ð¾Ð¶ÐµÑ Ð¿Ð¾Ð´Ð¿Ð¸ÑÑваÑÑÑÑ Ð½Ð° неÑколÑко подпиÑок, еÑли ÑÑебÑеÑÑÑ. Родной паÑе пÑбликÑÑÑий ÑеÑвеÑ/подпиÑÑик могÑÑ Ð±ÑÑÑ Ð¾Ð¿ÑÐµÐ´ÐµÐ»ÐµÐ½Ñ Ð½ÐµÑколÑко подпиÑок, но пÑи ÑÑом нÑжно позабоÑиÑÑÑÑ Ð¾ Ñом, ÑÑÐ¾Ð±Ñ Ð¿ÑбликÑемÑе обÑекÑÑ Ð² ÑазнÑÑ Ð¿Ð¾Ð´Ð¿Ð¸ÑÐºÐ°Ñ Ð½Ðµ пеÑекÑÑвалиÑÑ.
ÐÐ·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð² каждой подпиÑке бÑдÑÑ Ð¿ÑÐ¸Ñ Ð¾Ð´Ð¸ÑÑ ÑеÑез один ÑÐ»Ð¾Ñ ÑепликаÑии (Ñм. ÐодÑаздел 25.2.6). ÐополниÑелÑнÑе ÑлоÑÑ ÑепликаÑии могÑÑ Ð¿Ð¾ÑÑебоваÑÑÑÑ Ð´Ð»Ñ Ð½Ð°ÑалÑной ÑÐ¸Ð½Ñ ÑонизаÑии Ñже ÑÑÑеÑÑвÑÑÑÐ¸Ñ Ð´Ð°Ð½Ð½ÑÑ ÑаблиÑ.
ÐодпиÑка логиÑеÑкой ÑепликаÑии Ð¼Ð¾Ð¶ÐµÑ Ð¿ÑедÑÑавлÑÑÑ Ñобой ведомÑй Ñзел Ð´Ð»Ñ ÑинÑ
Ñонной ÑепликаÑии (Ñм. ÐодÑаздел 25.2.8). Ð ÑÑом ÑлÑÑае именем ведомого Ñзла по ÑмолÑÐ°Ð½Ð¸Ñ Ð±ÑÐ´ÐµÑ Ð¸Ð¼Ñ Ð¿Ð¾Ð´Ð¿Ð¸Ñки. ÐÑÑгое Ð¸Ð¼Ñ Ð¼Ð¾Ð¶Ð½Ð¾ задаÑÑ Ð² ÑвойÑÑве application_name в ÑÑÑоке подклÑÑÐµÐ½Ð¸Ñ Ð´Ð»Ñ Ð´Ð°Ð½Ð½Ð¾Ð¹ подпиÑки.
ÐодпиÑки могÑÑ Ð±ÑÑÑ Ð²ÑгÑÑÐ¶ÐµÐ½Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð¾Ð¹ pg_dump, еÑли ÐµÑ Ð²ÑполнÑÐµÑ ÑÑпеÑполÑзоваÑелÑ. РпÑоÑивном ÑлÑÑае вÑдаÑÑÑÑ Ð¿ÑедÑпÑеждение и подпиÑки пÑопÑÑкаÑÑÑÑ, Ñак как обÑÑнÑм полÑзоваÑелÑм не ÑазÑеÑено ÑиÑаÑÑ Ð²ÑÑ Ð¸Ð½ÑоÑмаÑÐ¸Ñ Ð¾ подпиÑкаÑ
из каÑалога pg_subscription.
ÐодпиÑки добавлÑÑÑÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð¾Ð¹ CREATE SUBSCRIPTION и могÑÑ Ð±ÑÑÑ Ð¾ÑÑановленÑ/Ð²Ð¾Ð·Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ñ Ð² лÑбой Ð¼Ð¾Ð¼ÐµÐ½Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð¾Ð¹ ALTER SUBSCRIPTION, а Ñакже ÑÐ´Ð°Ð»ÐµÐ½Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð¾Ð¹ DROP SUBSCRIPTION.
Ðогда подпиÑка ÑдалÑеÑÑÑ Ð¸ пеÑеÑоздаÑÑÑÑ, инÑоÑмаÑÐ¸Ñ Ð¾ ÑÐ¸Ð½Ñ ÑонизаÑии ÑеÑÑеÑÑÑ. ÐÑо ознаÑаеÑ, ÑÑо поÑле ÑÑого даннÑе Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼Ð¾ ÑÐ¸Ð½Ñ ÑонизиÑоваÑÑ Ð·Ð°Ð½Ð¾Ð²Ð¾.
ÐпÑÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ñ ÑÑ ÐµÐ¼Ñ Ð½Ðµ ÑеплиÑиÑÑÑÑÑÑ, а пÑбликÑемÑе ÑаблиÑÑ Ð´Ð¾Ð»Ð¶Ð½Ñ ÑÑÑеÑÑвоваÑÑ Ð² базе подпиÑÑика. ÐбÑекÑами ÑепликаÑии могÑÑ Ð±ÑÑÑ ÑолÑко обÑÑнÑе ÑаблиÑÑ. Так, напÑимеÑ, нелÑÐ·Ñ Ð¿ÑоизвеÑÑи ÑепликаÑÐ¸Ñ Ð² пÑедÑÑавление.
ТаблиÑÑ Ð¿ÑбликаÑии ÑопоÑÑавлÑÑÑÑÑ Ñ ÑаблиÑами подпиÑÑика по полноÑÑÑÑ Ð·Ð°Ð´Ð°Ð½Ð½Ñм именам ÑаблиÑ. РепликаÑÐ¸Ñ Ð² ÑаблиÑÑ Ñ Ð´ÑÑгими именами на ÑÑоÑоне подпиÑÑика не поддеÑживаеÑÑÑ.
СÑолбÑÑ ÑÐ°Ð±Ð»Ð¸Ñ Ñакже ÑопоÑÑавлÑÑÑÑÑ Ð¿Ð¾ именам. ÐоÑÑдок ÑÑолбÑов в ÑаблиÑе подпиÑÑика Ð¼Ð¾Ð¶ÐµÑ Ð¾ÑлиÑаÑÑÑÑ Ð¾Ñ Ð¿Ð¾ÑÑдка ÑÑолбÑов в пÑбликаÑии. Также могÑÑ Ð½Ðµ ÑовпадаÑÑ ÑÐ¸Ð¿Ñ ÑÑолбÑов; доÑÑаÑоÑно ÑолÑко возможноÑÑи пÑеобÑÐ°Ð·Ð¾Ð²Ð°Ð½Ð¸Ñ ÑекÑÑового пÑедÑÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ Ð´Ð°Ð½Ð½ÑÑ
в Ñелевой Ñип. ÐапÑимеÑ, даннÑе ÑÑолбÑа Ñипа integer могÑÑ ÑеплиÑиÑоваÑÑÑÑ Ð² ÑÑÐ¾Ð»Ð±ÐµÑ Ñипа bigint. Ð¦ÐµÐ»ÐµÐ²Ð°Ñ ÑаблиÑа Ð¼Ð¾Ð¶ÐµÑ Ñакже ÑодеÑжаÑÑ Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸ÑелÑнÑе ÑÑолбÑÑ, оÑÑÑÑÑÑвÑÑÑие в пÑбликÑемой ÑаблиÑе. Такие ÑÑолбÑÑ Ð±ÑдÑÑ Ð·Ð°Ð¿Ð¾Ð»Ð½ÐµÐ½Ñ Ð·Ð½Ð°ÑениÑми по ÑмолÑаниÑ, заданнÑми в опÑеделении Ñелевой ÑаблиÑÑ.
30.2.1. УпÑавление ÑлоÑами ÑепликаÑии
Ðак бÑло Ñказано Ñанее, ÐºÐ°Ð¶Ð´Ð°Ñ (акÑивнаÑ) подпиÑка полÑÑÐ°ÐµÑ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð¸Ð· ÑлоÑа ÑепликаÑии на ÑдалÑнной ÑÑоÑоне (ÑÑоÑоне пÑбликаÑии). ÐбÑÑно ÑдалÑннÑй ÑÐ»Ð¾Ñ ÑепликаÑии ÑоздаÑÑÑÑ Ð°Ð²ÑомаÑиÑеÑки, когда подпиÑка ÑоздаÑÑÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð¾Ð¹ CREATE SUBSCRIPTION, и ÑдалÑеÑÑÑ Ð°Ð²ÑомаÑиÑеÑки, когда она ÑдалÑеÑÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð¾Ð¹ DROP SUBSCRIPTION. Ðднако в некоÑоÑÑÑ
ÑиÑÑаÑиÑÑ
Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð¿Ð¾Ð»ÐµÐ·Ð½Ð¾ или необÑ
одимо манипÑлиÑоваÑÑ Ð¿Ð¾Ð´Ð¿Ð¸Ñкой и нижележаÑим ÑлоÑом по оÑделÑноÑÑи. ÐапÑимеÑ, Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ñ Ñакие ÑÑенаÑии:
ÐÑи Ñоздании подпиÑки ÑÐ»Ð¾Ñ ÑепликаÑии Ð¼Ð¾Ð¶ÐµÑ Ñже ÑÑÑеÑÑвоваÑÑ. Ð ÑÑом ÑлÑÑае подпиÑÐºÑ Ð¼Ð¾Ð¶Ð½Ð¾ ÑоздаÑÑ Ñ Ð¿Ð°ÑамеÑÑом
create_slot = false, ÑÑÐ¾Ð±Ñ Ð¾Ð½Ð° бÑла ÑвÑзана Ñ ÑÑÑеÑÑвÑÑÑим ÑлоÑом.ÐÑи Ñоздании подпиÑки ÑдалÑннÑй Ñзел Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð½ÐµÐ´Ð¾ÑÑÑпен или Ð½Ð°Ñ Ð¾Ð´Ð¸ÑÑÑÑ Ð² неÑабоÑем ÑоÑÑоÑнии. Ð ÑÑом ÑлÑÑае подпиÑÐºÑ Ð¼Ð¾Ð¶Ð½Ð¾ ÑоздаÑÑ Ñ Ñказанием
connect = false. ÐÑи ÑÑом подклÑÑение к ÑдалÑÐ½Ð½Ð¾Ð¼Ñ ÑÐ·Ð»Ñ Ð½Ðµ бÑÐ´ÐµÑ ÑÑÑанавливаÑÑÑÑ. ÐÑÐ¾Ñ Ð²Ð°ÑÐ¸Ð°Ð½Ñ Ð¸ÑполÑзÑÐµÑ pg_dump. ЧÑÐ¾Ð±Ñ Ð°ÐºÑивиÑоваÑÑ ÑакÑÑ Ð¿Ð¾Ð´Ð¿Ð¸ÑÐºÑ Ð²Ð¿Ð¾ÑледÑÑвии, ÑдалÑннÑй ÑÐ»Ð¾Ñ ÑепликаÑии нÑжно бÑÐ´ÐµÑ ÑоздаÑÑ Ð²ÑÑÑнÑÑ.ÐÑи ликвидаÑии пÑбликаÑии Ð¼Ð¾Ð¶ÐµÑ Ð¿Ð¾ÑÑебоваÑÑÑÑ ÑÐ¾Ñ ÑаниÑÑ ÑÐ»Ð¾Ñ ÑепликаÑии. ÐапÑимеÑ, ÑÑо полезно, когда нÑжно пеÑенеÑÑи Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ Ð¿Ð¾Ð´Ð¿Ð¸ÑÑика на дÑÑгой Ñзел и акÑивиÑоваÑÑ ÐµÑ Ñам. Ð ÑÑом ÑлÑÑае ÑазоÑвиÑе ÑвÑÐ·Ñ Ð¿Ð¾Ð´Ð¿Ð¸Ñки Ñо ÑлоÑом, иÑполÑзÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ
ALTER SUBSCRIPTION, пÑежде Ñем ÑдалÑÑÑ Ð¿Ð¾Ð´Ð¿Ð¸ÑкÑ.ÐÑи ликвидаÑии подпиÑки ÑдалÑннÑй Ñзел Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð½ÐµÐ´Ð¾ÑÑÑпен. Ð ÑÑом ÑлÑÑае ÑазоÑвиÑе ÑвÑÐ·Ñ Ð¿Ð¾Ð´Ð¿Ð¸Ñки Ñо ÑлоÑом, иÑполÑзÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ
ALTER SUBSCRIPTION, пÑежде Ñем пÑÑаÑÑÑÑ ÑдалÑÑÑ Ð¿Ð¾Ð´Ð¿Ð¸ÑкÑ. ÐÑли ÑдалÑннÑй ÑкземплÑÑ Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ Ð¿ÑекÑаÑил ÑÑÑеÑÑвование, болÑÑе никакие дейÑÑÐ²Ð¸Ñ Ð½Ðµ ÑÑебÑÑÑÑÑ. ÐÑли же ÑкземплÑÑ ÑдалÑнной Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ Ð¿ÑоÑÑо оказалÑÑ Ð½ÐµÐ´Ð¾ÑÑÑпнÑм, ÑÐ»Ð¾Ñ ÑепликаÑии нÑжно бÑÐ´ÐµÑ ÑдалиÑÑ Ð²ÑÑÑнÑÑ; в пÑоÑивном ÑлÑÑае пÑбликÑÑÑий ÑеÑÐ²ÐµÑ Ð¿ÑÐ¾Ð´Ð¾Ð»Ð¶Ð¸Ñ ÑÐ¾Ñ ÑанÑÑÑ WAL и Ð¼Ð¾Ð¶ÐµÑ Ð² конÑе конÑов заполниÑÑ Ð²ÑÑ Ð¼ÐµÑÑо на диÑке. Такие ÑлÑÑаи заÑлÑживаÑÑ Ñамого ÑеÑÑÑзного ÑазбиÑаÑелÑÑÑва.