我正在尝试测量系统中的复制时间延迟。(postgresql 10.1)
我在查询中组合使用了pg_last_xact_timestamp()、pg_last_receive_lsn()和pg_last_replay_lsn()函数来检查延迟。
(以如何从this链接进行测量为例)
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()。它如何找出以秒为单位的复制延迟。我是否使用了错误的方法来以秒为单位测量延迟?
发布于 2018-08-06 13:54:38
你是在说pg_last_xact_replay_timestamp吗?这为您提供了在备用服务器上重放的最后一个事务在主服务器上提交的时间。
如果您知道总是有一些活动正在被复制,那么这可以用来测量复制延迟。如果没有这样的活动,则无法根据该值判断复制延迟。
您可以通过定期调用txid_current()来确保始终存在活动,或者您可以以字节为单位测量复制延迟。
发布于 2021-03-24 07:52:05
如果你使用"repmgr“包,它会在后台运行一个守护进程并为你监控。
https://stackoverflow.com/questions/51699620
复制相似问题