postgresql - 在 postgresql 中测量复制滞后
问题描述
我试图测量我系统中的复制时间延迟。(postgresql 10.1)
我在查询中使用pg_last_xact_timestamp()
,pg_last_receive_lsn()
和pg_last_replay_lsn()
函数的组合来检查滞后。
(以如何从此链接进行测量为例)
postgres=# SELECT now(), pg_last_wal_receive_lsn(), pg_last_wal_replay_lsn(), EXTRACT (EPOCH FROM now() - pg_last_xact_replay_timestamp())::INT;
now | pg_last_wal_receive_lsn | pg_last_wal_replay_lsn | date_part
----------------------------------+-------------------------+------------------------+-----------
2018-08-06 07:00:36.540959+05:30 | 4/99B84030 | 4/99B84030 | 223
从第 2 列和第 3 列可以看出,最后一次接收 lsn 和重播 lsn 是相同的,这意味着系统是同步的。但我无法理解是什么pg_last_xact_replay_timestamp()
。它如何在几秒钟内找出复制滞后。我是否使用错误的方法来衡量几秒钟内的滞后?
解决方案
你在谈论pg_last_xact_replay_timestamp
吗?这为您提供了在备用数据库上重放的最后一个事务在主数据库上提交的时间。
如果您知道总是有一些活动正在被复制,这可以用来衡量复制滞后。如果没有此类活动,则无法从该值中分辨出复制滞后。
您可以通过定期调用来确保始终有活动txid_current()
,或者您可以测量复制延迟(以字节为单位)。
推荐阅读
- django - 缩进错误 - Django,试图解决意外的关键字参数“force_insert”错误
- python - 执行 sklearn 余弦相似度时如何保留索引和列名?
- javascript - 如何将 thymeleaf 变量从 thymeleaf 对象创建的 id 传递到 javascript
- azure - 在 ADF 中参数化 Azure Blob 存储链接服务
- python - 你如何从 etree 对象中获取原始文本
- javascript - 使用js和php在wordpress上根据时区显示时间
- python - 我可以在不比较默认值的情况下检查是否没有给出参数吗?
- python - Django-SES BotoServerError: 403 Forbidden
- jestjs - 无法更改使用 genMockFromModule 创建的节点模块模拟
- powershell - 如何使 PS 脚本针对 csv 的每一行运行?