复制槽(Replication slot)是 PostgreSQL 数据库的特有机制,用于避免在流复制中出现数据丢失或重复复制的问题,提高数据复制的可靠性。
复制槽的类型
复制槽根据类型分为物理复制槽(Physical replication slot)和逻辑复制槽(Logic replication slot)。
物理复制槽一般结合流复制一起使用,可以防止备库需要的 WAL 日志在主库被删除,确保主库在所有的备库收到 WAL 日志之前不会删除 WAL 日志。主库会根据备库返回的信息确认出不再需要的 WAL 日志,再进行清理。
逻辑复制槽是 PostgreSQL 自身提供的 WAL 解析功能,用来记录和切换事务,保证不会丢事务或者重发事务。
复制槽的状态
复制槽的状态有活跃(ACTIVE)和非活跃(INACTIVE)两种。当非活跃的逻辑复制槽因未及时清理而过多时,会导致 WAL 日志不断堆积,占用大量存储空间,甚至可能写满磁盘导致实例锁定无法写入数据,进而影响业务。云数据库 PostgreSQL 版支持通过控制台或 Open API 来删除非活跃的复制槽,减少 WAL 日志对磁盘空间的占用。关于清理复制槽的更多详细信息,请参见删除复制槽。
云数据库 PostgreSQL 版支持通过控制台或 Open API 查看实例下的复制槽,关于查看实例复制槽的更多详细信息,请参见查看复制槽列表。