Replicação sincrona

Lists: pgsql-pt-geral
From: Cleiton Luiz Domazak <cleitondomazak(at)gmail(dot)com>
To: pgsql-pt-geral(at)lists(dot)postgresql(dot)org
Subject: Replicação sincrona
Date: 2019-02-20 15:35:07
Message-ID: CAKx1C8G5ezjwMz3yk62Qv5Q8gYgzqi8ua4_biBkuVUJOMKYh1A@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-pt-geral

Boa tarde.

Tem um ambiente em que a demanda do sistema necessita de leitura
consistente à replica.

Tenho por exemplo 1 nó master e 2 replicas. A carga é distribuida entre o
nó master e 1 das replicas via pgPool, e a segunda replica é apenas para
tirar backups, até ai tudo perfeito.

Porém agora precisamos ativar a replicação sincrona nesta replica, porém já
tive muitos problemas no passado com essa abordagem pois o PostgreSQL não
lida bem com falhas de comunicação ou falhas nas replicas sincronas,
fazendo com que as transações fiquem em lock no Master.

Minha dúvida é: Alguém usa replicas sincronas e como faz para lidar com
isso? O PostgreSQL na versões mais atuais possui algum mecaninsmo de
"timeout" na replicação que faça que as transações não fiquem em lock
aguardando o "ack" da replica sincrona?


From: Flavio Henrique Araque Gurgel <fhagur(at)gmail(dot)com>
To: Cleiton Luiz Domazak <cleitondomazak(at)gmail(dot)com>
Cc: pgsql-pt-geral(at)lists(dot)postgresql(dot)org
Subject: Re: Replicação sincrona
Date: 2019-02-20 19:47:13
Message-ID: CAGHTAePwNYKPJKnQpAOaNUiUPKaDFXqmpYBEgN-teQiEv707Ww@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-pt-geral

> Boa tarde.
>
> Tem um ambiente em que a demanda do sistema necessita de leitura consistente à replica.
>
> Tenho por exemplo 1 nó master e 2 replicas. A carga é distribuida entre o nó master e 1 das replicas via pgPool, e a segunda replica é apenas para tirar backups, até ai tudo perfeito.
>
> Porém agora precisamos ativar a replicação sincrona nesta replica, porém já tive muitos problemas no passado com essa abordagem pois o PostgreSQL não lida bem com falhas de comunicação ou falhas nas replicas sincronas, fazendo com que as transações fiquem em lock no Master.
>
> Minha dúvida é: Alguém usa replicas sincronas e como faz para lidar com isso? O PostgreSQL na versões mais atuais possui algum mecaninsmo de "timeout" na replicação que faça que as transações não fiquem em lock aguardando o "ack" da replica sincrona?

A partir da versão 10, existe replicação por lista (n primeiros
servidores) ou quórum (n servidores) síncronos, com uma configuração
de timeout (no caso de um servidor dar timeout, o próximo da lista
assume ou um outro do quórum).

Então, acho que você precisa observar qual versão utilisou em seu
"problema no passado" e verificar as configurações que usou.
Lembrando que em caso de consultas no servidor standby, a replicação
física pode continuar síncrona (chegada do dado no standby) porém
pausada.
Talvez você tenha que considerar usar replicação lógica síncrona.

[]s
Flavio Gurgel


From: Cleiton Domazak <cleitondomazak(at)gmail(dot)com>
To: Flavio Henrique Araque Gurgel <fhagur(at)gmail(dot)com>
Cc: pgsql-pt-geral(at)lists(dot)postgresql(dot)org
Subject: Re: Replicação sincrona
Date: 2019-02-21 08:32:36
Message-ID: 4CB64A54-F15C-46EE-9911-C5B1DDDBD945@gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-pt-geral

Sent from my iPhone

On 20 Feb 2019, at 19:47, Flavio Henrique Araque Gurgel <fhagur(at)gmail(dot)com> wrote:

>> Boa tarde.
>>
>> Tem um ambiente em que a demanda do sistema necessita de leitura consistente à replica.
>>
>> Tenho por exemplo 1 nó master e 2 replicas. A carga é distribuida entre o nó master e 1 das replicas via pgPool, e a segunda replica é apenas para tirar backups, até ai tudo perfeito.
>>
>> Porém agora precisamos ativar a replicação sincrona nesta replica, porém já tive muitos problemas no passado com essa abordagem pois o PostgreSQL não lida bem com falhas de comunicação ou falhas nas replicas sincronas, fazendo com que as transações fiquem em lock no Master.
>>
>> Minha dúvida é: Alguém usa replicas sincronas e como faz para lidar com isso? O PostgreSQL na versões mais atuais possui algum mecaninsmo de "timeout" na replicação que faça que as transações não fiquem em lock aguardando o "ack" da replica sincrona?
>
> A partir da versão 10, existe replicação por lista (n primeiros
> servidores) ou quórum (n servidores) síncronos, com uma configuração
> de timeout (no caso de um servidor dar timeout, o próximo da lista
> assume ou um outro do quórum).
>
> Então, acho que você precisa observar qual versão utilisou em seu
> "problema no passado" e verificar as configurações que usou.
> Lembrando que em caso de consultas no servidor standby, a replicação
> física pode continuar síncrona (chegada do dado no standby) porém
> pausada.
> Talvez você tenha que considerar usar replicação lógica síncrona.

Obrigado Flávio, de fato estou utilizando a versão 10 e já estamos testando essa configuração, porém dessa forma eu teria que ter no mínimo 2 réplicas síncronas, e estava tentando evitar esse custo adicional, mas acredito que não terá outra forma realmente.
>
> []s
> Flavio Gurgel