Em 28-05-2013 11:35, Danilo Silva escreveu:
Pessoal, qual a conta que tem que ser feita para saber o tempo em que um
servidor slave está "defasado" em relação ao master?

master--> SELECT pg_current_xlog_location(); = 1B/2C1BDE74

slave--> SELECT pg_last_xlog_receive_location(); = 1B/2C1BE2F8

Determinar um "tempo" nem sempre é fácil
Os valores que você obtem com esta consulta está em bytes, em hexadecimal.

Eu normalmente sigo os passos abaixo:

1) Pra obter de forma mais precisa, utilize a visão pg_stat_replication disponível no servidor mestre, que mostra o estado de mestre e escravo na mesma linha e no mesmo momento.

2) Para determinar quantos bytes por segundo o servidor mestre está fazendo, extraia a consulta duas vezes num intervalo de tempo definido. Faça duas vezes:
SELECT now(), * FROM pg_stat_replication;

3) Determine a taxa em bytes/s (1 é a primeira consulta, 2 é a segunda):
taxa = (write_location1 - write_location2) / (now1 - now2)

4) Subtraia posição do mestre - posição do escravo e multiplique pelo valor acima:
atraso = taxa * (replay_location1 - replay_location2)

5) Note que se seu banco tem variação de carga, você deve fazer esse procedimento acima mais de uma vez ao dia.

[]s

__________________________________
Flavio Henrique A. Gurgel
Líder de Projetos Especiais
Consultoria, Projetos & Treinamentos 4LINUX
Tel1: +55-11.2125-4747 ou 2125-4748
www.4linux.com.br
email: fla...@4linux.com.br
______________________________
FREE SOFTWARE SOLUTIONS
_______________________________________________
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Reply via email to