ALTER SUBSCRIPTION
ALTER SUBSCRIPTION â измениÑÑ Ð¾Ð¿Ñеделение подпиÑки
СинÑакÑиÑ
ALTER SUBSCRIPTIONимÑCONNECTION 'ÑÑÑока_подклÑÑениÑ' ALTER SUBSCRIPTIONимÑSET PUBLICATIONимÑ_пÑбликаÑии[, ...] [ WITH (паÑамеÑÑ_пÑбликаÑии[=знаÑение] [, ... ] ) ] ALTER SUBSCRIPTIONимÑADD PUBLICATIONимÑ_пÑбликаÑии[, ...] [ WITH (паÑамеÑÑ_пÑбликаÑии[=знаÑение] [, ... ] ) ] ALTER SUBSCRIPTIONимÑDROP PUBLICATIONимÑ_пÑбликаÑии[, ...] [ WITH (паÑамеÑÑ_пÑбликаÑии[=знаÑение] [, ... ] ) ] ALTER SUBSCRIPTIONимÑREFRESH PUBLICATION [ WITH (паÑамеÑÑ_обновлениÑ[=знаÑение] [, ... ] ) ] ALTER SUBSCRIPTIONимÑENABLE ALTER SUBSCRIPTIONимÑDISABLE ALTER SUBSCRIPTIONимÑSET (паÑамеÑÑ_подпиÑки[=знаÑение] [, ... ] ) ALTER SUBSCRIPTIONимÑSKIP (паÑамеÑÑ_пÑопÑÑка=знаÑение) ALTER SUBSCRIPTIONимÑOWNER TO {новÑй_владелеÑ| CURRENT_ROLE | CURRENT_USER | SESSION_USER } ALTER SUBSCRIPTIONимÑRENAME TOновое_имÑ
ÐпиÑание
ALTER SUBSCRIPTION Ð¼Ð¾Ð¶ÐµÑ Ð¼ÐµÐ½ÑÑÑ Ð¼Ð½Ð¾Ð³Ð¸Ðµ ÑвойÑÑва подпиÑки, коÑоÑÑе могÑÑ Ð·Ð°Ð´Ð°Ð²Ð°ÑÑÑÑ Ð² CREATE SUBSCRIPTION.
ЧÑÐ¾Ð±Ñ Ð²ÑполниÑÑ ALTER SUBSCRIPTION Ð´Ð»Ñ Ð¿Ð¾Ð´Ð¿Ð¸Ñки, нÑжно бÑÑÑ ÐµÑ Ð²Ð»Ð°Ð´ÐµÐ»ÑÑем. ЧÑÐ¾Ð±Ñ Ð¿ÐµÑеименоваÑÑ Ð¿Ð¾Ð´Ð¿Ð¸ÑÐºÑ Ð¸Ð»Ð¸ ÑмениÑÑ Ð²Ð»Ð°Ð´ÐµÐ»ÑÑа, необÑ
одимо имеÑÑ Ð¿Ñаво CREATE в базе даннÑÑ
. ÐÑоме Ñого, ÑÑÐ¾Ð±Ñ ÑмениÑÑ Ð²Ð»Ð°Ð´ÐµÐ»ÑÑа, необÑ
одимо имеÑÑ Ð¿Ñаво SET ROLE Ð´Ð»Ñ Ð½Ð¾Ð²Ð¾Ð¹ Ñоли-владелÑÑа. ÐÑли Ð´Ð»Ñ Ð¿Ð¾Ð´Ð¿Ð¸Ñки задано password_required=false, изменÑÑÑ ÐµÑ Ð¼Ð¾Ð³ÑÑ ÑолÑко ÑÑпеÑполÑзоваÑели.
ÐÑи обновлении подпиÑки пÑоизводиÑÑÑ Ñдаление оÑноÑений, коÑоÑÑе бÑли из Ð½ÐµÑ Ð¸ÑклÑÑенÑ, а Ñакже Ñдаление ÑлоÑов ÑÐ¸Ð½Ñ ÑонизаÑии ÑÑÐ¸Ñ ÑаблиÑ, еÑли ÑаковÑе имеÑÑÑÑ. ÐÑи ÑлоÑÑ Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼Ð¾ ÑдалÑÑÑ, ÑÑÐ¾Ð±Ñ Ð±Ñли оÑÐ²Ð¾Ð±Ð¾Ð¶Ð´ÐµÐ½Ñ ÑеÑÑÑÑÑ, вÑделеннÑе Ð´Ð»Ñ Ð´Ð°Ð½Ð½Ð¾Ð¹ подпиÑки на ÑдалÑнном ÑеÑвеÑе. ÐÑли по пÑиÑине ÑÐ±Ð¾Ñ Ð² ÑеÑи или какой-Ñо дÑÑгой оÑибки Postgres Pro не ÑÐ¼Ð¾Ð¶ÐµÑ ÑдалиÑÑ ÑÑи ÑлоÑÑ, вÑполнение ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ Ð±ÑÐ´ÐµÑ Ð¿ÑеÑвано оÑибкой. ÐÐ»Ñ ÑазÑеÑÐµÐ½Ð¸Ñ Ñакой ÑиÑÑаÑии можно либо попÑобоваÑÑ Ð¿Ð¾Ð²ÑоÑиÑÑ ÑÑÑ Ð¾Ð¿ÐµÑаÑиÑ, либо ÑазоÑваÑÑ ÑвÑÐ·Ñ ÑлоÑа Ñ Ð¿Ð¾Ð´Ð¿Ð¸Ñкой и ÑдалиÑÑ Ð¿Ð¾Ð´Ð¿Ð¸ÑкÑ, вÑполнив DROP SUBSCRIPTION.
ÐÐ¾Ð¼Ð°Ð½Ð´Ñ ALTER SUBSCRIPTION ... REFRESH PUBLICATION и ALTER SUBSCRIPTION ... {SET|ADD|DROP} PUBLICATION ... Ñ Ð¿Ð°ÑамеÑÑом refresh, ÑавнÑм true, не могÑÑ Ð²ÑполнÑÑÑÑÑ Ð²Ð½ÑÑÑи блока ÑÑанзакÑии. ÐÑи ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ Ñакже не могÑÑ Ð²ÑполнÑÑÑÑÑ, еÑли Ð´Ð»Ñ Ð¿Ð¾Ð´Ð¿Ð¸Ñки вклÑÑÑн Ñежим two_phase, за иÑклÑÑением ÑлÑÑаÑ, когда copy_data Ñавен false. СоÑÑоÑние Ñежима двÑÑ
Ñазной ÑикÑаÑии показÑваеÑÑÑ Ð² ÑÑолбÑе subtwophasestate каÑалога pg_subscription.
ÐаÑамеÑÑÑ
имÑÐÐ¼Ñ Ð¿Ð¾Ð´Ð¿Ð¸Ñки, ÑвойÑÑва коÑоÑой изменÑÑÑÑÑ.
CONNECTION 'ÑÑÑока_подклÑÑениÑ'ÐÑо пÑедложение заменÑÐµÑ ÑÑÑÐ¾ÐºÑ ÑоединениÑ, изнаÑалÑно ÑÑÑановленнÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð¾Ð¹ CREATE SUBSCRIPTION. Ðа дополниÑелÑнÑми ÑведениÑми обÑаÑиÑеÑÑ Ðº опиÑÐ°Ð½Ð¸Ñ ÑÑой командÑ.
SET PUBLICATIONимÑ_пÑбликаÑииADD PUBLICATIONимÑ_пÑбликаÑииDROP PUBLICATIONимÑ_пÑбликаÑииÐзменÑÐµÑ ÑпиÑок пÑбликаÑий, на коÑоÑÑе оÑоÑмлена подпиÑка. ÐÑедложение
SETполноÑÑÑÑ Ð·Ð°Ð¼ÐµÐ½ÑÐµÑ Ð¾Ð´Ð¸Ð½ ÑпиÑок пÑбликаÑий дÑÑгим,ADDдобавлÑÐµÑ Ð¿ÑбликаÑии к ÑпиÑÐºÑ Ð¿ÑбликаÑий, аDROPÑдалÑÐµÑ Ð¿ÑбликаÑии из ÑÑого ÑпиÑка. Ð ÑоÑмаÑADDиSETдопÑÑкаеÑÑÑ Ñказание неÑÑÑеÑÑвÑÑÑÐ¸Ñ Ð¿ÑбликаÑий в ÑаÑÑÑÑе на Ñо, ÑÑо они бÑдÑÑ Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ñ Ð¿Ð¾Ð·Ð¶Ðµ. Ðа подÑобноÑÑÑми обÑаÑиÑеÑÑ Ðº опиÑÐ°Ð½Ð¸Ñ CREATE SUBSCRIPTION. Ðо ÑмолÑÐ°Ð½Ð¸Ñ ÑÑа команда Ñакже вÑполнÑÐµÑ Ð´ÐµÐ¹ÑÑвиеREFRESH PUBLICATION.Ð Ñказании
паÑамеÑÑ_пÑбликаÑиизадаÑÑÑÑ Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸ÑелÑнÑе ÑвойÑÑва опеÑаÑии. ÐоддеÑживаÑÑÑÑ ÑледÑÑÑие паÑамеÑÑÑ:refresh(boolean)Со знаÑением
falseÐ´Ð°Ð½Ð½Ð°Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð° не бÑÐ´ÐµÑ Ð¾Ð±Ð½Ð¾Ð²Ð»ÑÑÑ Ð¸Ð½ÑоÑмаÑÐ¸Ñ Ð¾ ÑаблиÑÐ°Ñ . Ð ÑÑом ÑлÑÑае ÑледÑÐµÑ Ð²ÑполниÑÑREFRESH PUBLICATIONоÑделÑно. ÐнаÑение по ÑмолÑÐ°Ð½Ð¸Ñ âtrue.
ÐÑоме Ñого, здеÑÑ Ð¼Ð¾Ð³ÑÑ Ð·Ð°Ð´Ð°Ð²Ð°ÑÑÑÑ Ð¿Ð°ÑамеÑÑÑ, оÑноÑÑÑиеÑÑ Ðº
REFRESH PUBLICATIONи ÑпÑавлÑÑÑие неÑвной опеÑаÑией обновлениÑ.REFRESH PUBLICATIONСÑиÑÑÐ²Ð°ÐµÑ Ð½ÐµÐ´Ð¾ÑÑаÑÑÑÑ Ð¸Ð½ÑоÑмаÑÐ¸Ñ Ð¾ ÑаблиÑÐ°Ñ Ñ Ð¿ÑбликÑÑÑего ÑеÑвеÑа. Ð ÑезÑлÑÑаÑе пÑоизводиÑÑÑ ÑепликаÑÐ¸Ñ ÑаблиÑ, добавленнÑÑ Ð² пÑбликаÑии, на коÑоÑÑе оÑоÑмлена подпиÑка, поÑле
CREATE SUBSCRIPTIONили поÑледнего вÑзоваREFRESH PUBLICATION.Ð Ñказании
паÑамеÑÑ_обновлениÑзадаÑÑÑÑ Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸ÑелÑнÑе ÑвойÑÑва опеÑаÑии обновлениÑ. ÐоддеÑживаÑÑÑÑ ÑледÑÑÑие паÑамеÑÑÑ:copy_data(boolean)ÐпÑеделÑеÑ, Ð´Ð¾Ð»Ð¶Ð½Ñ Ð»Ð¸ копиÑоваÑÑÑÑ Ñже ÑÑÑеÑÑвÑÑÑие даннÑе в пÑбликаÑиÑÑ , на коÑоÑÑе оÑоÑмлÑеÑÑÑ Ð¿Ð¾Ð´Ð¿Ð¸Ñка, когда наÑинаеÑÑÑ ÑепликаÑиÑ. ÐнаÑение по ÑмолÑÐ°Ð½Ð¸Ñ â
true.ТаблиÑÑ, Ð²Ñ Ð¾Ð´Ð¸Ð²Ñие в подпиÑÐºÑ Ñанее, не копиÑÑÑÑÑÑ, даже еÑли пÑедложение
WHEREÑилÑÑÑа ÑÑÑок ÑаблиÑÑ Ð¸Ð·Ð¼ÐµÐ½Ð¸Ð»Ð¾ÑÑ Ñ Ð¼Ð¾Ð¼ÐµÐ½Ñа подпиÑки.ÐодÑобнее взаимодейÑÑвие
copy_data = trueÑ Ð¿Ð°ÑамеÑÑомoriginопиÑано в ÐамеÑаниÑ.ЧÑÐ¾Ð±Ñ Ð¿Ð¾Ð»ÑÑиÑÑ Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸ÑелÑнÑе ÑÐ²ÐµÐ´ÐµÐ½Ð¸Ñ Ð¾ копиÑовании Ñже ÑÑÑеÑÑвÑÑÑÐ¸Ñ Ð´Ð°Ð½Ð½ÑÑ Ð² двоиÑном ÑоÑмаÑе, обÑаÑиÑеÑÑ Ðº опиÑÐ°Ð½Ð¸Ñ Ð¿Ð°ÑамеÑÑа
binaryкомандÑCREATE SUBSCRIPTION.
ENABLEÐклÑÑÐ°ÐµÑ Ñанее оÑклÑÑÑннÑÑ Ð¿Ð¾Ð´Ð¿Ð¸ÑкÑ, запÑÑÐºÐ°Ñ Ð¿ÑоÑеÑÑ Ð»Ð¾Ð³Ð¸ÑеÑкой ÑепликаÑии в конÑе ÑÑанзакÑии.
DISABLEÐÑклÑÑÐ°ÐµÑ Ð°ÐºÑивнÑÑ Ð¿Ð¾Ð´Ð¿Ð¸ÑкÑ, оÑÑÐ°Ð½Ð°Ð²Ð»Ð¸Ð²Ð°Ñ Ð¿ÑоÑеÑÑ Ð»Ð¾Ð³Ð¸ÑеÑкой ÑепликаÑии в конÑе ÑÑанзакÑии.
SET (паÑамеÑÑ_подпиÑки[=знаÑение] [, ... ] )ÐÑо пÑедложение изменÑÐµÑ Ð¿Ð°ÑамеÑÑÑ, изнаÑалÑно ÑÑÑановленнÑе командой CREATE SUBSCRIPTION. Ðа подÑобноÑÑÑми обÑаÑиÑеÑÑ Ðº ÐµÑ Ð¾Ð¿Ð¸ÑаниÑ. Ðанное пÑедложение позволÑÐµÑ Ð¸Ð·Ð¼ÐµÐ½Ð¸ÑÑ Ð¿Ð°ÑамеÑÑÑ
slot_name,synchronous_commit,binary,streaming,disable_on_error,password_required,run_as_ownerиorigin. УказаÑÑpassword_required = falseÐ¼Ð¾Ð¶ÐµÑ ÑолÑко ÑÑпеÑполÑзоваÑелÑ.SKIP (паÑамеÑÑ_пÑопÑÑка=знаÑение)ÐÑопÑÑÐºÐ°ÐµÑ Ð¿Ñименение вÑÐµÑ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ð¹ ÑдалÑнной ÑÑанзакÑии. ÐÑли Ð²Ñ Ð¾Ð´ÑÑие даннÑе наÑÑÑаÑÑ ÐºÐ°ÐºÐ¸Ðµ-либо огÑаниÑениÑ, логиÑеÑÐºÐ°Ñ ÑепликаÑÐ¸Ñ Ð±ÑÐ´ÐµÑ Ð¾ÑÑановлена, пока конÑликÑÑ Ð½Ðµ бÑдÑÑ ÑазÑеÑенÑ. Ðогда вÑполнÑеÑÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð°
ALTER SUBSCRIPTION ... SKIP, ÑабоÑий пÑоÑеÑÑ Ð»Ð¾Ð³Ð¸ÑеÑкой ÑепликаÑии пÑопÑÑÐºÐ°ÐµÑ Ð²Ñе Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð´Ð°Ð½Ð½ÑÑ Ð² ÑÑанзакÑии. ÐÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð½Ðµ влиÑÐµÑ Ð½Ð° ÑÑанзакÑии, коÑоÑÑе Ñже подгоÑÐ¾Ð²Ð»ÐµÐ½Ñ Ð½Ð° ÑÑоÑоне подпиÑÑика (в ÑезÑлÑÑаÑе дейÑÑÐ²Ð¸Ñ Ñежимаtwo_phase). ÐоÑле Ñого, как ÑабоÑий пÑоÑеÑÑ Ð»Ð¾Ð³Ð¸ÑеÑкой ÑепликаÑии ÑÑпеÑно пÑопÑÑÐºÐ°ÐµÑ ÑÑанзакÑÐ¸Ñ Ð¸Ð»Ð¸ ÑÑанзакÑÐ¸Ñ Ð·Ð°Ð²ÐµÑÑаеÑÑÑ, Ð½Ð¾Ð¼ÐµÑ LSN (Ñ ÑанÑÑийÑÑ Ð²pg_subscription.subskiplsn) оÑиÑаеÑÑÑ. ÐодÑобнее конÑликÑÑ Ð»Ð¾Ð³Ð¸ÑеÑкой ÑепликаÑии опиÑÐ°Ð½Ñ Ð² Разделе 29.5.ÐаÑамеÑÑ_пÑопÑÑкаопÑеделÑÐµÑ ÑвойÑÑва данной опеÑаÑии. ÐоддеÑживаеÑÑÑ ÑледÑÑÑий паÑамеÑÑ:lsn(pg_lsn)УказÑÐ²Ð°ÐµÑ LSN завеÑÑÐµÐ½Ð¸Ñ ÑдалÑнной ÑÑанзакÑии, Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ ÐºÐ¾ÑоÑой Ð´Ð¾Ð»Ð¶Ð½Ñ Ð±ÑÑÑ Ð¿ÑопÑÑÐµÐ½Ñ Ð¿ÑоÑеÑÑом логиÑеÑкой ÑепликаÑии. LSN завеÑÑÐµÐ½Ð¸Ñ â ÑÑо LSN, Ñ ÐºÐ¾ÑоÑÑм ÑÑанзакÑÐ¸Ñ Ð·Ð°ÑикÑиÑована либо подгоÑовлена. ÐÑопÑÑк оÑделÑнÑÑ Ð¿Ð¾Ð´ÑÑанзакÑий не поддеÑживаеÑÑÑ. ÐнаÑение
NONEÑбÑаÑÑÐ²Ð°ÐµÑ Ñанее ÑÑÑановленнÑй LSN.
новÑй_владелеÑÐÐ¼Ñ Ð¿Ð¾Ð»ÑзоваÑелÑ, назнаÑаемого новÑм владелÑÑем подпиÑки.
новое_имÑÐовое Ð¸Ð¼Ñ Ð¿Ð¾Ð´Ð¿Ð¸Ñки.
ÐÑли Ð´Ð»Ñ Ð¿Ð°ÑамеÑÑа Ñипа boolean опÑÑÑиÑÑ = знаÑение, ÑÑо ÑавнознаÑно ÑÐºÐ°Ð·Ð°Ð½Ð¸Ñ Ð·Ð½Ð°ÑÐµÐ½Ð¸Ñ TRUE.
ÐÑимеÑÑ
Ðзменение подпиÑки, заклÑÑаÑÑееÑÑ Ð² подпиÑÑвании на пÑбликаÑÐ¸Ñ insert_only:
ALTER SUBSCRIPTION mysub SET PUBLICATION insert_only;
ÐÑклÑÑение (оÑÑановка) подпиÑки:
ALTER SUBSCRIPTION mysub DISABLE;
СовмеÑÑимоÑÑÑ
ALTER SUBSCRIPTION ÑвлÑеÑÑÑ ÑаÑÑиÑением Postgres Pro.