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_name
ADD PUBLICATION publication_name
DROP 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