我已成功运行流复制,并希望在主从之间监视它。我知道我可以得到两个值:
master: select pg_current_xlog_location()
standby: select pg_last_xlog_receive_location()
但是我不确定如何处理两者返回的十六进制值。这是以字节为单位的大小吗?我如何计算差异?这种差异告诉我什么?
谢谢
我已成功运行流复制,并希望在主从之间监视它。我知道我可以得到两个值:
master: select pg_current_xlog_location()
standby: select pg_last_xlog_receive_location()
但是我不确定如何处理两者返回的十六进制值。这是以字节为单位的大小吗?我如何计算差异?这种差异告诉我什么?
谢谢
如果pg_current_xlog_location()
给你一个类似的值64/A8EB6C20
,这意味着你的 xlog 位置是 64A8EB6C20 十六进制,这实际上是一个字节数。要计算差异,您可以减去这两个值。(由于奇怪的历史原因,该序列中的某些值被跳过,但只要你只比较相等,你就可以了。)
在 PostgreSQL 9.2 中,您可以使用该函数pg_xlog_location_diff
为您完成所有这些工作。
这些数字是什么意思?它们是预写日志流量。实际上,它大约是您写入数据库的数据量。您需要运行您的应用程序并了解您的设置可以保持哪些值以及什么是适当的延迟。