Ego*_*gor 12 postgresql database-replication
正如文档所说 -restart_lsn是:
最旧的 WAL 的地址 (LSN) 仍然可能被该槽的使用者所需要,因此在检查点期间不会自动删除,除非该 LSN 落后于当前 LSN 超过 max_slot_wal_keep_size 。如果该槽的 LSN 从未被保留,则为 NULL。
并且confirmed_flush_lsn是:
逻辑槽的使用者已确认接收数据的地址 (LSN)。比这更旧的数据不再可用。物理插槽为 NULL。
我不明白的事情(在逻辑槽的情况下)是 - 这两个属性如何相互连接?confirmed_flush_lsn描述说较旧的日志已被删除,但restart_lsn听起来并不是100%正确。restart_lsn如果不是,并且在和 之间存在一定数量的事务日志confirmed_flush_lsn- 这个数量可能是多少?它是一些预定义的且不可变的值,比如说几个 MB,还是它真的可以提高到max_slot_wal_keep_size?它是如何决定的——什么WAL still might be required by the consumer和不是什么?
Lau*_*lbe 17
confirmed_flush_lsn是 WAL 中消费者已经收到解码数据的最新位置,因此逻辑解码不会发出早于该位置的数据。
然而,逻辑解码可能仍然需要比旧的 WAL 来计算所需的信息,WAL 来自之前 confirmed_flush_lsn开始的事务。因此有restart_lsn,它标志着服务器必须保留 WAL 才能继续解码的点。
| 归档时间: |
|
| 查看次数: |
6501 次 |
| 最近记录: |