PostgreSQL 13.1 中文入门教程 PostgreSQL pg_replication_slots

2024-02-25 开发教程 PostgreSQL 13.1 中文入门教程 匿名 2

pg_replication_slots视图提供了当前存在于数据库集簇上的所有复制槽的列表,其中也包括复制槽的当前状态。

更多关于复制槽的信息,请见第 26.2.6 节和第 48 章。

表 51.81. pg_replication_slotsColumns

列类型

描述

slot_namename

一个唯一的、集簇范围内的复制槽标识符

pluginname

包含这个逻辑槽正在使用的输出插件的共享对象基础名称,对于物理槽为空值。

slot_typetext

槽类型 - physical或者logical

datoidoid(参考 pg_database.oid)

与这个槽相关的数据库的OID,或者为空值。只有逻辑槽具有相关的数据库。

databasename(参考 pg_database.datname)

与这个槽相关的数据库的名称,或者为空值。只有逻辑槽具有相关的数据库。

temporarybool

如果这是一个临时复制槽则为真。临时槽不会被保存在磁盘上并且会在出错或会话结束时自动被删除掉。

activebool

如果这个槽当前正在被使用则为真

active_pidint4

如果槽当前正在被使用,则记录使用这个槽的会话的进程 ID。如果不活动则为NULL

xminxid

这个槽要需要数据库保留的最旧事务。VACUUM不能移除被其后续事务删除的元组。

catalog_xminxid

这个槽要需要数据库保留的影响系统目录的最旧事务。VACUUM不能移除被其后续事务删除的目录元组。

restart_lsnpg_lsn

可能仍被这个槽的消费者要求的最旧WAL地址(LSN),并且因此不会在检查点期间自动被移除。 如果这个槽的LSN从未被保留过,则为NULL

confirmed_flush_lsnpg_lsn

代表逻辑槽的消费者已经确认接收数据到什么位置的地址(LSN)。 比这个地址更旧的数据已经不再可用。对于物理槽这里是NULL

wal_statustext

此插槽声称的 WAL 文件的可用性。可能的值为:

  • reserved意味着声称的文件包含 max_wal_size

  • extended意味着max_wal_size已超出,但文件仍保留,通过复制插槽或wal_keep_size

  • unreserved意味着该插槽不再保留所需的 WAL 文件,并且将在下一个检查点删除其中一些文件。 此状态可以返回到reservedextended

  • lost意味着某些需要的 WAL 文件已被删除,并且此插槽不再可用。

最后两种状态仅在max_slot_wal_keep_size为非负值时才看到。 如果restart_lsn为 NULL,则此字段为空。

safe_wal_sizeint8

可写入 WAL 的字节数,以便此插槽不会处于"丢失"状态的危险中。 对丢失插槽它是NULL,以及如果max_slot_wal_keep_size-1