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