ALTER SUBSCRIPTION
Эта страница переведена при помощи нейросети GigaChat.
ALTER SUBSCRIPTION - изменение определения подписки.
Синтаксис
ALTER SUBSCRIPTION name CONNECTION 'conninfo'
ALTER SUBSCRIPTION name SET PUBLICATION publication_name [, ...] [ WITH ( publication_option [= value] [, ... ] ) ]
ALTER SUBSCRIPTION name ADD PUBLICATION publication_name [, ...] [ WITH ( publication_option [= value] [, ... ] ) ]
ALTER SUBSCRIPTION name DROP PUBLICATION publication_name [, ...] [ WITH ( publication_option [= value] [, ... ] ) ]
ALTER SUBSCRIPTION name REFRESH PUBLICATION [ WITH ( refresh_option [= value] [, ... ] ) ]
ALTER SUBSCRIPTION name ENABLE
ALTER SUBSCRIPTION name DISABLE
ALTER SUBSCRIPTION name SET ( subscription_parameter [= value] [, ... ] )
ALTER SUBSCRIPTION name SKIP ( skip_option = value )
ALTER SUBSCRIPTION name OWNER TO { new_owner | CURRENT_ROLE | CURRENT_USER | SESSION_USER }
ALTER SUBSCRIPTION name RENAME TO new_name
Описание
ALTER SUBSCRIPTION позволяет изменить большинство свойств подписки, которые могут быть указаны в CREATE SUBSCRIPTION.
Необходимо владеть подпиской для использования ALTER SUBSCRIPTION. Чтобы переименовать подписку или изменить владельца, нужно иметь разрешение CREATE на базе данных. Кроме того, чтобы изменить владельца, нужно иметь право SET ROLE к новой роли-владельцу. Если у подписки есть password_required=false, только суперпользователи могут ее модифицировать.
При обновлении публикации удаляются отношения, которые больше не входят в публикацию, а также удаляются слоты синхронизации таблиц, если такие имеются. Это необходимо для освобождения ресурсов, выделенных подписке на удаленном узле. В случае сетевых сбоев или других ошибок, из-за которых PostgreSQL не может удалить слоты, будет сообщено об ошибке. Чтобы продолжить, следует повторить операцию либо отключить слот от подписки и удалить подписку, как описано в разделе DROP SUBSCRIPTION.
Команды ALTER SUBSCRIPTION ... REFRESH PUBLICATION, ALTER SUBSCRIPTION ... {SET|ADD|DROP} PUBLICATION ... с опцией refresh как true и ALTER SUBSCRIPTION ... SET (failover = true|false) нельзя выполнять внутри блока транзакций.
Команды ALTER SUBSCRIPTION ... REFRESH PUBLICATION и ALTER SUBSCRIPTION ... {SET|ADD|DROP} PUBLICATION ... с опцией refresh как true также не могут выполняться при включенной двухфазной фиксации (two_phase) для подписки, за исключением случая, когда copy_data установлено в значение false. См. столбец subtwophasestate таблицы pg_subscription, чтобы узнать текущее состояние двухфазного режима.
Параметры
name- Задает имя подписки, свойства которой должны быть изменены.
CONNECTION conninfo- Заменяет строку подключения, указанную при создании подписки. Подробнее смотрите в описании CREATE SUBSCRIPTION.
SET PUBLICATION publication_nameADD PUBLICATION publication_nameDROP PUBLICATION publication_name- Изменяют список публикаций, на которые оформлена подписка.
SETзаменяет весь список,ADDдобавляет публикации,DROPудаляет их. Допускается указание несуществующих публикаций вADDиSET, чтобы их можно было создать позже. Подробнее смотрите в описании CREATE SUBSCRIPTION. По умолчанию команда также выполняетREFRESH PUBLICATION.В указании
publication_optionзадаются дополнительные параметры операции. Поддерживается:refresh(boolean) : Если значениеfalse, команда не будет обновлять информацию о таблицах. В этом случаеREFRESH PUBLICATIONнеобходимо выполнить отдельно. По умолчанию —true.
Кроме того, здесь могут задаваться параметры, относящиеся к REFRESH PUBLICATION и управляющие неявной операцией обновления.
REFRESH PUBLICATION- Получает недостающую информацию о таблицах с публикующего сервера. Запускает репликацию таблиц, добавленных в публикации после выполнения
CREATE SUBSCRIPTIONили последнего вызоваREFRESH PUBLICATION.В указании
refresh_optionзадаются дополнительные свойства операции обновления. Поддерживаются следующие параметры:copy_data(boolean) : Указывает, нужно ли копировать уже существующие данные из публикаций при старте репликации. По умолчанию —true.
Таблицы, на которые уже была оформлена подписка, не копируются, даже если изменилось условие фильтрации строк WHERE.
См. раздел «Примечания» для подробностей о том, как copy_data = true может взаимодействовать с параметром origin.
См. параметр binary команды CREATE SUBSCRIPTION для получения сведений о копировании существующих данных в двоичном формате.
ENABLE- Включает ранее отключенную подписку, запуская рабочий процесс логической репликации по завершении транзакции.
DISABLE- Отключает работающую подписку, останавливая рабочий процесс логической репликации по завершении транзакции.
SET ( subscription_parameter [= value] [, ... ] )- Этот пункт изменяет параметры, первоначально установленные командой
CREATE SUBSCRIPTION. За подробностями обратитесь к ее описанию. Параметры, которые могут быть изменены, этоslot_name,synchronous_commit,binary,streaming,disable_on_error,password_required,run_as_owner,originиfailover. Только суперпользователь может установить параметрpassword_required = false.
При изменении параметра slot_name значения свойств failover и two_phase указанного слота могут отличаться от соответствующих параметров подписки failover и two_phase. При создании слота убедитесь, что свойства слота failover и two_phase соответствуют соответствующим параметрам подписки. В противном случае слот на издателях может вести себя иначе, чем указано этими параметрами подписки. Например, слот на издателе может синхронизироваться резервными серверами даже при отключенной опции подписки failover или может быть отключен для синхронизации, несмотря на включение опции подписки failover.
SKIP ( skip_option = value )- Позволяет пропустить применение всех изменений удаленной транзакции. Если входящие данные нарушают ограничения, логическая репликация приостанавливается до устранения конфликта. С помощью команды
ALTER SUBSCRIPTION ... SKIPможно пропустить все изменения данных в рамках транзакции. Этот параметр не влияет на уже подготовленные транзакции при включенной двухфазной фиксации. После успешного пропуска или завершения транзакции LSN (хранящийся вpg_subscription.subskiplsn) сбрасывается. Подробнее смотрите раздел «Конфликты» о конфликтах логической репликации. Для использования этой команды требуются права суперпользователя.skip_option: Определяет свойства данной операции. Поддерживается следующий параметр:
lsn (pg_lsn) указывает конечный LSN удаленной транзакции, изменения которой нужно пропустить. Это LSN, в котором транзакция была зафиксирована или подготовлена. Пропуск отдельных подтранзакций не поддерживается. Указание NONE сбрасывает LSN.
new_owner- Задает имя нового владельца подписки.
new_name- Указывает новое имя подписки.
Если указан параметр типа boolean, часть = value можно опустить, что эквивалентно указанию TRUE.
Примеры
Изменение публикации, на которую оформлена подписка, insert_only:
ALTER SUBSCRIPTION mysub SET PUBLICATION insert_only;
Отключение подписки:
ALTER SUBSCRIPTION mysub DISABLE;
Совместимость
ALTER SUBSCRIPTION является расширением PostgreSQL.
Смотрите также
CREATE SUBSCRIPTION, DROP SUBSCRIPTION, CREATE PUBLICATION, ALTER PUBLICATION