29.6. ÐгÑаниÑÐµÐ½Ð¸Ñ #
ÐогиÑеÑÐºÐ°Ñ ÑепликаÑÐ¸Ñ Ð² наÑÑоÑÑее вÑÐµÐ¼Ñ Ð¸Ð¼ÐµÐµÑ Ð¾Ð³ÑаниÑÐµÐ½Ð¸Ñ Ð¸ недоÑÑаÑки, опиÑаннÑе ниже. Ðни могÑÑ Ð±ÑÑÑ ÑÑÑÑÐ°Ð½ÐµÐ½Ñ Ð² бÑдÑÑÐ¸Ñ Ð²ÑпÑÑÐºÐ°Ñ .
Ð¡Ñ ÐµÐ¼Ð° Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ Ð¸ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ DDL не ÑеплиÑиÑÑÑÑÑÑ. ÐзнаÑалÑнÑÑ ÑÑ ÐµÐ¼Ñ Ð¼Ð¾Ð¶Ð½Ð¾ ÑкопиÑоваÑÑ, воÑполÑзовавÑиÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð¾Ð¹
pg_dump --schema-only. ÐоÑледÑÑÑие Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ ÑÑ ÐµÐ¼Ñ Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼Ð¾ бÑÐ´ÐµÑ ÑÐ¸Ð½Ñ ÑонизиÑоваÑÑ Ð²ÑÑÑнÑÑ. (ÐамеÑÑÑе, однако, ÑÑо ÑÑ ÐµÐ¼Ñ Ð½Ðµ обÑзаÑелÑно Ð´Ð¾Ð»Ð¶Ð½Ñ Ð±ÑÑÑ Ð°Ð±ÑолÑÑно иденÑиÑнÑми на Ð¾Ð±ÐµÐ¸Ñ ÑÑоÑÐ¾Ð½Ð°Ñ ÑепликаÑии.) ÐÑли опÑÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ñ ÑÑ ÐµÐ¼Ñ Ð² иÑÑ Ð¾Ð´Ð½Ð¾Ð¹ базе даннÑÑ Ð¼ÐµÐ½ÑÑÑÑÑ, логиÑеÑÐºÐ°Ñ ÑепликаÑÐ¸Ñ ÑабоÑÐ°ÐµÑ Ð½Ð°Ð´Ñжно â когда даннÑе поÑле Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ ÑÑ ÐµÐ¼Ñ Ð¿ÑибÑваÑÑ Ð½Ð° ÑÑоÑÐ¾Ð½Ñ Ð¿Ð¾Ð´Ð¿Ð¸ÑÑика, но не впиÑÑваÑÑÑÑ Ð² ÑÑ ÐµÐ¼Ñ ÐµÐ³Ð¾ ÑаблиÑ, вÑдаÑÑÑÑ Ð¾Ñибка, ÑÑебÑÑÑÐ°Ñ Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ ÑÑ ÐµÐ¼Ñ. Ðо Ð¼Ð½Ð¾Ð³Ð¸Ñ ÑлÑÑаÑÑ Ð²Ð¾Ð·Ð½Ð¸ÐºÐ½Ð¾Ð²ÐµÐ½Ð¸Ðµ ÑÐ°ÐºÐ¸Ñ Ð¾Ñибок можно пÑедÑпÑедиÑÑ, ÑнаÑала пÑименÑÑ Ð´Ð¾Ð¿Ð¾Ð»Ð½ÑÑÑие Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð½Ð° подпиÑÑике.ÐаннÑе поÑледоваÑелÑноÑÑей не ÑеплиÑиÑÑÑÑÑÑ. ÐаннÑе в ÑÑолбÑÐ°Ñ serial или ÑÑолбÑÐ°Ñ Ð¸Ð´ÐµÐ½ÑиÑикаÑии, вÑдаваемÑе поÑледоваÑелÑноÑÑÑми, конеÑно, бÑдÑÑ ÑеплиÑиÑÐ¾Ð²Ð°Ð½Ñ Ð² ÑоÑÑаве ÑаблиÑÑ, но Ñама поÑледоваÑелÑноÑÑÑ Ð½Ð° подпиÑÑике бÑÐ´ÐµÑ ÑÐ¾Ñ ÑанÑÑÑ ÑÑаÑÑовое знаÑение. ÐÑли подпиÑÑик иÑполÑзÑеÑÑÑ Ð² каÑеÑÑве Ð±Ð°Ð·Ñ ÑолÑко Ð´Ð»Ñ ÑÑениÑ, обÑÑно ÑÑо не ÑвлÑеÑÑÑ Ð¿Ñоблемой. ÐÑли же, однако, пÑедÑÑмаÑÑиваеÑÑÑ Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ÑÑÑ Ð¿ÐµÑеклÑÑÐµÐ½Ð¸Ñ Ð½Ð° Ð±Ð°Ð·Ñ Ð¿Ð¾Ð´Ð¿Ð¸ÑÑика некоÑоÑÑм обÑазом, ÑекÑÑие знаÑÐµÐ½Ð¸Ñ Ð² ÑÑÐ¸Ñ Ð¿Ð¾ÑледоваÑелÑноÑÑÑÑ Ð½Ñжно бÑÐ´ÐµÑ Ð¾Ð±Ð½Ð¾Ð²Ð¸ÑÑ, либо ÑкопиÑовав ÑекÑÑие даннÑе из Ð±Ð°Ð·Ñ Ð¿ÑбликаÑии (веÑоÑÑно, Ñ Ð¿Ñименением
pg_dump), либо вÑбÑав доÑÑаÑоÑно болÑÑие знаÑÐµÐ½Ð¸Ñ Ð¸Ð· ÑÐ°Ð¼Ð¸Ñ ÑаблиÑ.РепликаÑÐ¸Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´
TRUNCATEподдеÑживаеÑÑÑ, но опÑÑÑоÑение гÑÑпп ÑаблиÑ, ÑоединÑннÑÑ Ð²Ð½ÐµÑними клÑÑами, ÑÑÐ¾Ð¸Ñ Ð²ÑполнÑÑÑ Ñ Ð¾ÑÑоÑожноÑÑÑÑ. ÐÑи ÑепликаÑии дейÑÑвиÑTRUNCATEподпиÑÑик опÑÑÑоÑÐ¸Ñ ÑÑ Ð¶Ðµ гÑÑÐ¿Ð¿Ñ ÑаблиÑ, коÑоÑÐ°Ñ Ð±Ñла опÑÑÑоÑена на пÑбликÑÑÑем ÑеÑвеÑе (ÑвнÑм обÑазом или в ÑезÑлÑÑаÑеCASCADE), иÑклÑÑÐ°Ñ ÑаблиÑÑ, не Ð²Ñ Ð¾Ð´ÑÑие в подпиÑкÑ. ÐÐ°Ð½Ð½Ð°Ñ Ð¾Ð¿ÐµÑаÑÐ¸Ñ Ð·Ð°Ð²ÐµÑÑиÑÑÑ ÐºÐ¾ÑÑекÑно, еÑли вÑе заÑÑонÑÑÑе ÑаблиÑÑ Ð²ÐºÐ»ÑÑÐµÐ½Ñ Ð² Ð¾Ð´Ð½Ñ Ð¸ ÑÑ Ð¶Ðµ подпиÑкÑ. ÐÑли же некоÑоÑÑе ÑаблиÑÑ, подлежаÑие опÑÑÑоÑÐµÐ½Ð¸Ñ Ð½Ð° подпиÑÑике, ÑвÑÐ·Ð°Ð½Ñ Ð¿Ð¾ внеÑÐ½ÐµÐ¼Ñ ÐºÐ»ÑÑÑ Ñ ÑаблиÑами, не Ð²Ñ Ð¾Ð´ÑÑими в даннÑÑ Ð¿Ð¾Ð´Ð¿Ð¸ÑкÑ, опеÑаÑÐ¸Ñ Ð¾Ð¿ÑÑÑоÑÐµÐ½Ð¸Ñ Ð½Ð° ÑеÑвеÑе-подпиÑÑике завеÑÑиÑÑÑ Ð¾Ñибкой.ÐолÑÑие обÑекÑÑ (Ñм. ÐлавÑ 34) не ÑеплиÑиÑÑÑÑÑÑ. ÐÑо огÑаниÑение нелÑÐ·Ñ Ð¾Ð±Ð¾Ð¹Ñи никак, кÑоме как Ñ ÑаниÑÑ Ð´Ð°Ð½Ð½Ñе в обÑÑнÑÑ ÑаблиÑÐ°Ñ .
РепликаÑÐ¸Ñ Ð¿Ð¾Ð´Ð´ÐµÑживаеÑÑÑ ÑолÑко Ð´Ð»Ñ ÑаблиÑ, вклÑÑÐ°Ñ ÑекÑиониÑованнÑе. ÐÑи попÑÑке ÑеплиÑиÑоваÑÑ Ð¾ÑноÑÐµÐ½Ð¸Ñ Ð´ÑÑгого Ñода, напÑимеÑ, пÑедÑÑавлениÑ, маÑпÑедÑÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ Ð¸Ð»Ð¸ ÑÑоÑонние ÑаблиÑÑ, бÑÐ´ÐµÑ Ð²Ñдана оÑибка.
ÐÑи ÑепликаÑии Ð¼ÐµÐ¶Ð´Ñ ÑекÑиониÑованнÑми ÑаблиÑами Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð¿Ð¾ ÑмолÑÐ°Ð½Ð¸Ñ ÑакÑиÑеÑки ÑеплиÑиÑÑÑÑÑÑ Ð¸Ð· конеÑнÑÑ ÑекÑий на ÑÑоÑоне пÑбликаÑии, поÑÑÐ¾Ð¼Ñ ÑооÑвеÑÑÑвÑÑÑие ÑелевÑе ÑаблиÑÑ Ð´Ð¾Ð»Ð¶Ð½Ñ ÑÑÑеÑÑвоваÑÑ Ð¸ на ÑÑоÑоне подпиÑÑика. Ðни могÑÑ Ð±ÑÑÑ Ñоже конеÑнÑми ÑекÑиÑми, могÑÑ Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸ÑелÑно ÑазбиваÑÑÑÑ Ð½Ð° ÑекÑии или могÑÑ Ð±ÑÑÑ Ð´Ð°Ð¶Ðµ незавиÑимÑми ÑаблиÑами. Ðа ÑÑоÑоне пÑбликаÑии Ñакже Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ñказано, ÑÑо Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð±ÑдÑÑ ÑеплиÑиÑоваÑÑÑÑ ÐºÐ°Ðº пÑоизоÑедÑие в коÑневой ÑекÑиониÑованной ÑаблиÑе (Ñ ÐµÑ Ð¸Ð¼ÐµÐ½ÐµÐ¼ и ÑÑ ÐµÐ¼Ð¾Ð¹), а не в Ñой конеÑной ÑекÑии, где они ÑакÑиÑеÑки имели меÑÑо (Ñм. паÑамеÑÑ
publish_via_partition_rootкомандÑCREATE PUBLICATION).