57.21. pg_replication_slots #

Представление pg_replication_slots содержит список всех слотов репликации, существующих в данный момент в кластере баз данных, а также их текущее состояние.

За дополнительной информацией о слотах репликации обратитесь к Подразделу 26.2.6 и Главе 51.

Таблица 57.21. Столбцы pg_replication_slots

Тип столбца

Описание

slot_name name

Уникальный в рамках кластера идентификатор для слота репликации

plugin name

Базовое имя разделяемого объекта, содержащего модуль вывода, который используется этим логическим слотом, либо NULL для физических слотов.

slot_type text

Тип слота: physical (физический) или logical (логический)

datoid oid (ссылается на pg_database.oid)

OID базы данных, с которой связан этот слот, либо NULL. С базой данных могут быть связаны только логические слоты.

database name (ссылается на pg_database.datname)

Имя базы данных, с которой связан этот слот, либо NULL. С базой данных могут быть связаны только логические слоты.

temporary bool

True, если это временный слот репликации. Временные слоты не сохраняются на диск и автоматически удаляются при ошибке или завершении сеанса.

active bool

True, если в данный момент слот используется для передачи данных

active_pid int4

ID процесса сеанса, передающего данные для этого слота. NULL, если он не используется.

xmin xid

Старейшая транзакция, которая должна сохраняться в базе данных для этого слота. VACUUM не сможет удалять кортежи, удалённые более поздними транзакциями.

catalog_xmin xid

Старейшая транзакция, затрагивающая системные каталоги, которая должна сохраняться в базе данных для этого слота. VACUUM не сможет удалять кортежи, удалённые более поздними транзакциями.

restart_lsn pg_lsn

Адрес (LSN) старейшей записи в WAL, которая по-прежнему может быть нужна пользователям этого слота и поэтому не будет автоматически удаляться во время контрольной точки (при условии соблюдении ограничения max_slot_wal_keep_size). Принимает значение NULL, если LSN данного слота ещё не резервировался.

confirmed_flush_lsn pg_lsn

Адрес (LSN), до которого потребитель логического слота подтвердил получение данных. Данные, которые относятся к транзакциям, зафиксированным до этого LSN, уже недоступны. Для физических слотов — NULL.

wal_status text

Доступность файлов WAL, которые требуются для этого слота. Может принимать следующие значения:

  • reserved (резерв) означает, что объём требуемых файлов вписывается в max_wal_size.

  • extended (превышение) означает, что предел max_wal_size превышен, но файлы всё ещё сохраняются, потому что вписываются в wal_keep_size или нужны слоту репликации.

  • unreserved (нет резерва) означает, что для слота больше не сохраняются требуемые файлы WAL и некоторые из них будут удалены при следующей контрольной точке. Обычно это происходит, если для max_slot_wal_keep_size задано неотрицательное значение. Это состояние может смениться на reserved или extended.

  • lost (потеря) означает, что данный слот уже нельзя использовать.

safe_wal_size int8

Объём, который может быть записан в WAL, чтобы этот слот не оказался в состоянии «lost». Задаётся в байтах. Для потерянных слотов равен NULL, как и при max_slot_wal_keep_size равном -1.

two_phase bool

True, если слот используется для декодирования подготовленных транзакций. Для физических слотов всегда false.

two_phase_at pg_lsn

Адрес (LSN), c которого включается декодирование подготовленных транзакций. Значение NULL отображается для логических слотов, в которых two_phase равно false, а также для физических слотов.

inactive_since timestamptz

Время, когда слот перестал быть активным. Если данные по слоту передаются прямо сейчас, отобразится NULL. Если слот становится недействительным, это значение обновляться не будет. Для резервных слотов, которые синхронизируются с ведущего сервера (для которых поле synced содержит значение true), столбец inactive_since показывает время последней остановки синхронизации (см. Подраздел 51.2.3). NULL, если слот всегда синхронизировался. По этому значению можно понять, когда была прервана синхронизация резервного слота.

conflicting bool

True, если этот логический слот конфликтует с восстановлением (и поэтому аннулируется). При значении true в этом столбце обратитесь к столбцу invalidation_reason, чтобы узнать причину аннулирования. Для физических слотов всегда NULL.

invalidation_reason text

Причина аннулирования слота. Устанавливается как для логических, так и для физических слотов. NULL, если слот не аннулирован. Допустимые значения:

  • wal_removed означает, что необходимый файл WAL был удалён.

  • rows_removed означает, что необходимые строки были удалены. Устанавливается только для логических слотов.

  • wal_level_insufficient означает неподходящее значение параметра конфигурации wal_level на ведущем сервере для выполнения логического декодирования. Устанавливается только для логических слотов.

  • idle_timeout означает, что слот оставался неактивным дольше времени, заданного параметром idle_replication_slot_timeout.

failover bool

True, если для это логического слота включена возможность синхронизации с резервными серверами так, чтобы логическая репликация могла быть возобновлена с нового ведущего сервера после аварийного переключения. Для физических слотов всегда false.

synced bool

True, если этот логический слот был синхронизирован с ведущего сервера. На сервере горячего резерва слоты, для которых столбец synced содержит значение true, не могут использоваться для логического декодирования или быть удалены вручную. Для ведущего сервера значение в этом столбце роли не играет и по умолчанию false для всех слотов, однако может быть и true (если ранее этот узел был резервным, и после его повышения до ведущего значение в столбце осталось true).


57.21. pg_replication_slots #

The pg_replication_slots view provides a listing of all replication slots that currently exist on the database cluster, along with their current state.

For more on replication slots, see Section 26.2.6 and Chapter 51.

Table 57.21. pg_replication_slots Columns

Column Type

Description

slot_name name

A unique, cluster-wide identifier for the replication slot

plugin name

The base name of the shared object containing the output plugin this logical slot is using, or null for physical slots.

slot_type text

The slot type: physical or logical

datoid oid (references pg_database.oid)

The OID of the database this slot is associated with, or null. Only logical slots have an associated database.

database name (references pg_database.datname)

The name of the database this slot is associated with, or null. Only logical slots have an associated database.

temporary bool

True if this is a temporary replication slot. Temporary slots are not saved to disk and are automatically dropped on error or when the session has finished.

active bool

True if this slot is currently being streamed

active_pid int4

The process ID of the session streaming data for this slot. NULL if inactive.

xmin xid

The oldest transaction that this slot needs the database to retain. VACUUM cannot remove tuples deleted by any later transaction.

catalog_xmin xid

The oldest transaction affecting the system catalogs that this slot needs the database to retain. VACUUM cannot remove catalog tuples deleted by any later transaction.

restart_lsn pg_lsn

The address (LSN) of oldest WAL which still might be required by the consumer of this slot and thus won't be automatically removed during checkpoints unless this LSN gets behind more than max_slot_wal_keep_size from the current LSN. NULL if the LSN of this slot has never been reserved.

confirmed_flush_lsn pg_lsn

The address (LSN) up to which the logical slot's consumer has confirmed receiving data. Data corresponding to the transactions committed before this LSN is not available anymore. NULL for physical slots.

wal_status text

Availability of WAL files claimed by this slot. Possible values are:

  • reserved means that the claimed files are within max_wal_size.

  • extended means that max_wal_size is exceeded but the files are still retained, either by the replication slot or by wal_keep_size.

  • unreserved means that the slot no longer retains the required WAL files and some of them are to be removed at the next checkpoint. This typically occurs when max_slot_wal_keep_size is set to a non-negative value. This state can return to reserved or extended.

  • lost means that this slot is no longer usable.

safe_wal_size int8

The number of bytes that can be written to WAL such that this slot is not in danger of getting in state "lost". It is NULL for lost slots, as well as if max_slot_wal_keep_size is -1.

two_phase bool

True if the slot is enabled for decoding prepared transactions. Always false for physical slots.

two_phase_at pg_lsn

The address (LSN) from which the decoding of prepared transactions is enabled. NULL for logical slots where two_phase is false and for physical slots.

inactive_since timestamptz

The time when the slot became inactive. NULL if the slot is currently being streamed. If the slot becomes invalid, this value will never be updated. For standby slots that are being synced from a primary server (whose synced field is true), the inactive_since indicates the time when slot synchronization (see Section 51.2.3) was most recently stopped. NULL if the slot has always been synchronized. This helps standby slots track when synchronization was interrupted.

conflicting bool

True if this logical slot conflicted with recovery (and so is now invalidated). When this column is true, check invalidation_reason column for the conflict reason. Always NULL for physical slots.

invalidation_reason text

The reason for the slot's invalidation. It is set for both logical and physical slots. NULL if the slot is not invalidated. Possible values are:

  • wal_removed means that the required WAL has been removed.

  • rows_removed means that the required rows have been removed. It is set only for logical slots.

  • wal_level_insufficient means that the primary doesn't have a wal_level sufficient to perform logical decoding. It is set only for logical slots.

  • idle_timeout means that the slot has remained inactive longer than the configured idle_replication_slot_timeout duration.

failover bool

True if this is a logical slot enabled to be synced to the standbys so that logical replication can be resumed from the new primary after failover. Always false for physical slots.

synced bool

True if this is a logical slot that was synced from a primary server. On a hot standby, the slots with the synced column marked as true can neither be used for logical decoding nor dropped manually. The value of this column has no meaning on the primary server; the column value on the primary is default false for all slots but may (if leftover from a promoted standby) also be true.


FAQ