O wiki do PostgreSQL tem essa informação em sua página na replicação de streaming :
You can calculate the replication lag by comparing the current WAL write location on the primary with the last WAL location received/replayed by the standby. They can be retrieved using pg_current_xlog_location on the primary and the pg_last_xlog_receive_location / pg_last_xlog_replay_location on the standby, respectively.
Essas funções retornam uma string com o formato id/offset
, em que id
e offset
são números hexadecimais. Para convertê-los em números de 64 bits para fins de comparação, você pode usar essa fórmula, tirada do check_postgres Plugin Nagios:
0xff000000 * from_hex(id) + from_hex(offset)
Em um script bash, isso pode ser feito com esta função:
xlog_location_to_64bits()
{
id="${1%%/*}"
offset="${1##*/}"
echo $((0xFF000000 * 0x$id + 0x$offset))
}
Subtrair o valor no escravo do valor no mestre fornece o atraso de replicação em bytes.