Em 28 de maio de 2013 12:01, Flavio Henrique Araque Gurgel < fla...@4linux.com.br> escreveu:
> 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. > > > Existe alguma forma de efetuar as contas direto pelo banco (psql, pgadmin, afins) ou tem que ser na mão? Outra coisa, está correto a subtração de now1 - now2 (valor menor subtraído com valor maior)? O mesmo para replay_location1 - replay_location2. []s Danilo
_______________________________________________ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral