2016-10-26 11:55 GMT-02:00 Cleiton Luiz Domazak <[email protected]>:

>
>
> 2016-10-26 11:45 GMT-02:00 Flavio Henrique Araque Gurgel <[email protected]
> >:
>
>>
>>
>> Em qua, 26 de out de 2016 às 15:27, Cleiton Luiz Domazak <
>> [email protected]> escreveu:
>>
>>> 2016-10-26 11:19 GMT-02:00 Cleiton Luiz Domazak <
>>> [email protected]>:
>>>
>>>
>>>
>>> 2016-10-26 11:13 GMT-02:00 Flavio Henrique Araque Gurgel <
>>> [email protected]>:
>>>
>>>
>>>
>>> O que quer dizer com "não existissem"? Eles não cairam no seu bucket?
>>>
>>>
>>> Sim, nem no bucket e nem no archive_status, é como eles tivessem sido
>>> criados pelo banco, mas não existissem para o archive_command
>>>
>>>
>>> Pergunta : Seu banco está escrevendo?
>>> Qual o resultado de:
>>> select pg_current_xlog_location();
>>> ?
>>> Se você fizer um:
>>> select pg_switch_xlog();
>>> Há um arquivamento feito?
>>>
>>>
>>> Sim, o arquivamento está funcionando.
>>>
>>>
>> Eu não perguntei se o arquivamento está funcionando.
>> A pergunta foi: seu banco está escrevendo?
>> Por isso pedi o teste do pg_switch_xlog.
>>
>
> O que quis dizer é que estão sendo arquivados os wals, e a escrita não
> importa nesse caso, pois o timeout está setado para 60 segundos.
>
>>
>>
>>>
>>> postgres=# \x
>>> Expanded display is on.
>>> postgres=# SELECT *,
>>> postgres-#     current_setting('archive_mode')::BOOLEAN
>>> postgres-#         AND (last_failed_wal IS NULL
>>> postgres(#             OR last_failed_wal <= last_archived_wal)
>>> postgres-#         AS is_archiving,
>>> postgres-#     CAST (archived_count AS NUMERIC)
>>> postgres-#         / EXTRACT (EPOCH FROM age(now(), stats_reset))
>>> postgres-#         AS current_archived_wals_per_second
>>> postgres-# FROM pg_stat_archiver;
>>> -[ RECORD 1 ]--------------------+------------------------------
>>> archived_count                   | 147
>>> last_archived_wal                | 000000010000011B00000078
>>> last_archived_time               | 2016-10-26 11:19:04.131357-02
>>> <04%2013%2013%2057%2002>
>>> failed_count                     | 0
>>> last_failed_wal                  |
>>> last_failed_time                 |
>>> stats_reset                      | 2016-10-26 08:52:26.66709-02
>>> is_archiving                     | t
>>> current_archived_wals_per_second | 0.0166593669872578
>>>
>>> Note que não há nenhum arquivamento falho.
>>
>
> Sim, e ainda mais por isso que gostaria de entender o pq desses arquivos
> não arquivados e não falhados.
>
>>
>>> O que reparei agora, é que alguns archives desses que não são
>>> processados, acabaram sendo arquivados.
>>>
>>> # cat ../pg_log/postgresql-Wed.log | grep '000000010000011B0000006F'
>>>         DETAIL: Uploading "pg_xlog/000000010000011B0000006F" to
>>> "s3://bkp-postgresql-wale-local-hmg/wal_005/000000010000011B
>>> 0000006F.lzo".
>>>         STRUCTURED: time=2016-10-26T13:10:01.724498-00
>>> <01%2072%2044%2098%2000> pid=54026 action=push-wal
>>> key=s3://bkp-postgresql-wale-local-hmg/wal_005/000000010000011B0000006F.lzo
>>> prefix= seg=000000010000011B0000006F state=begin
>>>         DETAIL: Archiving to "s3://bkp-postgresql-wale-loca
>>> l-hmg/wal_005/000000010000011B0000006F.lzo" complete at 1577.14KiB/s.
>>>         STRUCTURED: time=2016-10-26T13:10:02.240725-00
>>> <02%2024%2007%2025%2000> pid=54026 action=push-wal
>>> key=s3://bkp-postgresql-wale-local-hmg/wal_005/000000010000011B0000006F.lzo
>>> prefix= rate=1577.14 seg=000000010000011B0000006F state=complete
>>>
>>>
>>> Minha dúvida é, pq eles foram criados e não processados pelo
>>> archive_command, e agora, depois de 2 horas depois são arquivados?
>>>
>>
>> Provavelmente porque seu banco não teve escrita no período e, agora, veio
>> uma rajada de escrita qualquer. Banco que não escreve não gera wal e não
>> faz checkpoint.
>> Para forçar arquivamento, você precisa configurar a GUC archive_timeout.
>> Note que isso vai forçar o banco a arquivar 16MiB, mesmo sem necessidade se
>> o arquivo estiver parcialmente cheio.
>>
>
> No .conf que enviei, o meu archive_timeout está setado para 60 segundos.
>
>>
>>
>>>
>>> E uma curiosidade, a diretório pg_xlog, está sempre com 130 arquivos(wal
>>> segments), não importa o horário.
>>>
>>> Meu wal_keep_segments está setado para 30.
>>>
>>
>> A quantidade de arquivos depende de outras configurações, dependendo da
>> sua versão.
>> Até 9.4, depende de checkpoint_segments e checkpoint_completion_target
>> (normalmente a quantidade de arquivos é igual a
>> 2*checkpoint_segments+checkpoint_segments*checkpoint_
>> completion_target+wal_keep_segments).
>> A partir da 9.5 depende de max_wal_size.
>>
>
> Vou conferir se bate com os valores.
>
>
Será que não são justamente os arquivos gerados pelo timeout que não são
processados, por não possuírem nenhuma escrita? E acabam sendo arquivados
somente quando é feita a "limpa" dos mais antigos?


>
>
>> []s
>> Flavio Gurgel
>>
>> _______________________________________________
>> pgbr-geral mailing list
>> [email protected]
>> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>>
>
>
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a