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, и 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.

Параметры

имя #

Имя подписки, свойства которой изменяются.

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 и failover. Указать password_required = false может только суперпользователь.

При изменении slot_name параметры failover и two_phase указанного слота могут отличаться от параметров failover и two_phase, указанных в подписке. При создании слота убедитесь, что значения слота в параметрах failover и two_phase совпадают с указанными в подписке, иначе слот на публикующем сервере может вести себя по-другому: например, слот на публикующем сервере может синхронизироваться с резервными серверами даже при выключенном в подписке параметре failover и не синхронизироваться даже при включённом в подписке параметре failover.

SKIP ( параметр_пропуска = значение ) #

Пропускает применение всех изменений удалённой транзакции. Если входящие данные нарушают какие-либо ограничения, логическая репликация будет остановлена, пока конфликты не будут разрешены. Когда выполняется команда ALTER SUBSCRIPTION ... SKIP, рабочий процесс логической репликации пропускает все изменения данных в транзакции. Этот параметр не влияет на транзакции, которые уже подготовлены на стороне подписчика (в результате действия режима two_phase). После того, как рабочий процесс логической репликации успешно пропускает транзакцию или транзакция завершается, номер LSN (хранящийся в pg_subscription.subskiplsn) очищается. Подробнее конфликты логической репликации описаны в Разделе 28.6.

Параметр_пропуска определяет свойства данной операции. Поддерживается следующий параметр:

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.

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy