A réplica somente leitura
Uma Databases for PostgreSQL réplica somente leitura replica todos os seus dados da implantação líder para a implantação da réplica por meio de replicação assíncrona. Como o nome sugere, as réplicas somente leitura suportam transações de leitura e podem ser usadas para balancear os bancos de dados que têm as operações pesadas de leitura e gravação. A réplica somente leitura tem um único membro de dados do PostgreSQL e é faturada nas mesmas taxas de consumo por membro que o líder.
A réplica somente leitura de alta disponibilidade
Uma réplica somente de leitura de alta disponibilidade oferece benefícios como escalabilidade de leitura aprimorada, maior disponibilidade, latência de leitura reduzida, recursos de backup e recuperação de desastres e a capacidade de distribuir o tráfego de leitura com eficiência. Ele contribui para uma infraestrutura de banco de dados mais robusta e responsiva para o seu aplicativo. Para obter mais informações, consulte A Databases for PostgreSQL réplica somente leitura de alta disponibilidade.
O líder
Na guia Réplicas somente leitura de uma Databases for PostgreSQL implantação antes de qualquer réplica somente leitura ser provisionada, o painel central indica que não existem réplicas de leitura e exibe um botão Criar.
Se uma implementação é um líder e possui uma réplica de leitura que já está anexada a ele, então a área de janela Replicação tem uma lista de implementações de réplicas e um link para cada um deles. Clique no ícone de engrenagem à direita do nome da implantação da réplica somente leitura para gerenciá-la.
Provisionando uma réplica somente leitura
Os recursos para implementações do PostgreSQL são alocados por implementação e as implementações normais têm dois membros. Como uma réplica somente leitura tem apenas um membro e o provisionamento atualmente usa valores que são metade dos valores solicitados para memória e armazenamento, o provisionamento pode falhar. A interface do usuário da web não pode modificar o valor para armazenamento e usa automaticamente o valor da implantação líder, que é reduzido pela metade. Se isso não for suficiente para acomodar seus dados, você precisará usar a API ou a CLI para especificar o dobro do armazenamento que deseja provisionar. (O mesmo se aplica à memória, embora uma quantidade menor de memória possa não impedir que a restauração seja bem-sucedida.) Uma atualização está em andamento para corrigir esta situação.
Provisionamento por meio da interface do usuário
Forneça uma réplica somente leitura na guia Réplicas de leitura do líder clicando em Criar réplica somente leitura. A instância de origem é preenchida automaticamente. O nome da réplica somente leitura é gerado automaticamente no campo Nome do serviço, mas é possível renomeá-lo livremente. É possível escolher a região na qual implementá-la e sua alocação de memória inicial. O tamanho do disco, a versão e os terminais públicos ou privados são configurados automaticamente para corresponder às configurações da implementação líder.
Se você usar o Key Protect, o Bring Your Own Key (BYOK) será suportado apenas ao provisionar por meio da CLI e da API. Caso contrário, a réplica somente leitura será criptografada com uma chave gerada.
Provisionamento por meio da CLI
O fornecimento de uma réplica somente leitura por meio da CLI e da API funciona de forma semelhante ao fornecimento de uma implementação padrão do Databases for PostgreSQL.
O provisionamento é tratado pelo Controlador de recursos e usa um parâmetro {"remote_leader_id": "crn:v1:..."} para especificar o líder da réplica que você está provisionando.
Para provisionar uma réplica somente leitura por meio da CLI, use um comando como:
ibmcloud resource service-instance-create <REPLICA_NAME_OR_CRN> databases-for-postgresql standard <REGION> \
-p \ '{
"remote_leader_id": "crn:v1:bluemix:public:databases-for-postgresql:us-south:a/54e8ffe85dcedf470db5b5ee6ac4a8d8:1b8f53db-fc2d-4e24-8470-f82b15c71819::",
"members_memory_allocation_mb": "2048",
"members_disk_allocation_mb": "10240"
}'
Você deve especificar tanto a quantidade de RAM quanto a quantidade de disco, lembrando-se de que o tamanho mínimo é de 2 GB de RAM e 10 GB de disco. É possível, opcionalmente, especificar se a réplica somente leitura usará terminais públicos ou privados. Não é possível especificar uma versão para a réplica somente leitura. A versão é configurada automaticamente para a mesma versão principal da implementação líder.
Provisionando através da API
O provisionamento de uma réplica somente leitura por meio da API funciona de forma semelhante ao provisionamento de uma implantação padrão Databases for PostgreSQL.
O provisionamento é tratado pelo Controlador de recursos e usa um parâmetro {"remote_leader_id": "crn:v1:..."} para especificar o líder da réplica que você está provisionando.
Para provisionar uma réplica somente leitura por meio da API, use um comando como:
curl -X POST \
https://resource-controller.cloud.ibm.com/v2/resource_instances \
-H 'Authorization: Bearer <>' \
-H 'Content-Type: application/json' \
-d '{
"name": "<REPLICA_NAME_OR_CRN>",
"target": "<REGION>",
"resource_group": "<RESOURCE_GROUP_ID>",
"resource_plan_id": "databases-for-postgresql-standard",
"parameters": {
"remote_leader_id": "crn:v1:bluemix:public:databases-for-postgresql:us-south:a/54e8ffe85dcedf470db5b5ee6ac4a8d8:1b8f53db-fc2d-4e24-8470-f82b15c71819::",
"members_memory_allocation_mb": "2048",
"members_disk_allocation_mb": "10240"
}
}'
Você deve especificar tanto a quantidade de RAM quanto a quantidade de disco, lembrando-se de que o tamanho mínimo é de 2 GB de RAM e 10 GB de disco. É possível, opcionalmente, especificar se a réplica somente leitura usará terminais públicos ou privados. Não é possível especificar uma versão para a réplica somente leitura. A versão é configurada automaticamente para a mesma versão principal da implementação líder.
A réplica somente leitura
Na guia Réplicas de leitura de uma réplica somente leitura, a Replicação contém seu nome e região, bem como o nome e a região de seu líder. Ela também tem botões para ressincronizar a réplica somente leitura e promovê-la.
Verificando o status da replicação
Você deve monitorar a replicação, pois o status da replicação não é monitorado automaticamente.
Verifique o status de replicação de uma réplica somente leitura com psql, mas apenas a partir de seu líder. Conecte-se à implementação líder com o psql usando as credenciais do administrador. Depois de conectado, execute o seguinte comando:
SELECT * from pg_stat_replication;
Ao monitorar a saída para atraso de replicação, observe que o application_name refere-se ao ID da formação ou ao nome do recurso da nuvem (CRN). Procure um sync_state valor “async”, um state valor “Streaming”
durante a replicação e estatísticas de tempo. Para obter mais informações, consulte pg_stat_replication.
Usuários e privilégios da réplica somente leitura
-
Qualquer usuário no líder, mesmo aqueles presentes antes da provisão da réplica somente leitura, poderá efetuar login e executar leituras em uma réplica somente leitura com os mesmos privilégios para objetos que tiver no líder.
-
Se você tiver mais de uma réplica somente leitura anexada a um líder, um usuário criado no líder também será criado em todas as outras réplicas somente leitura.
-
Os usuários criados no líder persistem na réplica somente leitura quando ela é promovida para uma implementação independente, incluindo o usuário
admin. Quando a réplica somente leitura é promovida, os usuários e os privilégios para todos os usuários no líder são transferidos para a implementação promovida. -
As operações de gravação na réplica somente leitura para todos os usuários não são filtradas ou rejeitadas, mas falham no nível do banco de dados.
Também é possível criar usuários com acesso à réplica somente leitura e sem acesso ao líder por meio da réplica somente leitura. Se você tiver mais de uma réplica somente leitura anexada a um líder, um usuário criado em qualquer umas das réplicas somente leitura também será criado em todas as outras réplicas somente leitura.
Os usuários da réplica somente leitura criados em uma réplica somente leitura são capazes de conectar-se às réplicas e executar leituras. Os usuários da réplica somente leitura não são capazes de conectar-se e executar operações no líder. Eles também não persistem quando uma réplica somente leitura é promovida para uma implementação independente.
O líder atribui privilégios aos usuários criados pela réplica somente leitura. Os usuários são membros do grupo ibm-cloud-base-user-ro e a função ibm-cloud-base-user é designada a eles. Eles têm acesso a todos os
objetos criados por outros membros deste grupo, incluindo quaisquer usuários no líder que foram criados por meio de Credenciais de Serviço, CLI ou API. De acordo com os privilégios do ibm-cloud-base-user, um usuário
criado por réplica somente leitura não tem acesso a objetos criados pelo usuário administrador ou por outros usuários criados por meio do psql. Para obter mais informações, consulte a página Funções e privilégios do PostgreSQL.
Ressincronizando uma réplica somente leitura
Se for necessário ressincronizar uma réplica somente leitura, clique no botão Ressincronizar a réplica somente leitura. A ressincronização é uma operação disruptiva e executá-la derruba e reconstrói os dados na réplica somente leitura. A réplica somente leitura não é capaz de executar outras operações ou consultas durante a execução de uma ressincronização. As consultas não são roteadas novamente para o líder, portanto, todas as conexões com a réplica somente leitura falharão até que a ressincronização dela seja concluída.
O período de tempo de ressincronização de uma réplica somente leitura varia, mas o processo pode ser de longa execução.
Ressincronização de uma réplica somente leitura por meio da CLI
Para iniciar uma ressincronização por meio da CLI, use o comando cdb read-replica-resync.
ibmcloud cdb read-replica-resync <DEPLOYMENT_NAME_OR_CRN>
Ressincronização de uma réplica somente leitura por meio da API
Para iniciar uma ressincronização por meio da API, envie um POST para o terminal /deployments/{id}/remotes/resync.
curl -X POST \
https://api.{region}.databases.cloud.ibm.com/v4/ibm/deployments/{id}/remotes/resync \
-H 'Authorization: Bearer <>'
Promovendo uma réplica somente leitura
É possível promover uma réplica somente leitura para um cluster independente que pode aceitar operações de gravação, bem como operações de leitura. Se algo acontecer com a implementação líder, a réplica somente leitura poderá ser promovida para um cluster independente e começar a aceitar gravações de seu aplicativo. A promoção de um cluster de réplica de leitura para um cluster autônomo será mais rápida se o cluster de réplica de leitura já tiver mais de um membro de dados.
Na promoção, a réplica somente leitura finaliza a conexão dela com o líder e torna-se uma implementação independente do Databases for PostgreSQL. A implementação pode começar a aceitar e executar operações de leitura e gravação; os backups são ativados e o próprio usuário administrativo dela é emitido. Um novo membro de dados é incluído para que a implementação se torne um cluster com dois membros de dados. Isso aumenta o custo, uma vez que é faturado na mesmo taxa de consumo por membro, mas a implementação tem dois membros, em vez de um.
Ao promover uma réplica somente leitura, é possível ignorar o backup inicial que normalmente seria realizado na promoção. Ignorar o backup inicial significa que sua réplica se torna disponível mais rapidamente, mas sem nenhum backup imediato disponível. Será possível iniciar um backup sob demanda após a conclusão do processo de promoção.
Quando uma réplica somente leitura é promovida para uma implementação independente, não é possível revertê-la para uma réplica somente leitura ou uni-la novamente a um líder.
Promoção de uma réplica somente leitura na interface do usuário
Para promover uma réplica somente leitura a partir da interface do usuário, clique em Promover réplica somente leitura.
Promoção de uma réplica somente leitura na CLI
Para promover por meio da CLI, use o comando cdb read-replica-promote.
ibmcloud cdb read-replica-promote <DEPLOYMENT_NAME_OR_CRN>
Promoção de uma réplica somente leitura por meio da API
Para promover por meio da API, envie um POST para o terminal /deployments/{id}/remotes/promotion.
curl -X POST \
https://api.{region}.databases.cloud.ibm.com/v4/ibm/deployments/{id}/remotes/promotion \
-H 'Authorization: Bearer <>' \
-H 'Content-Type: application/json' \
-d '{"promotion": {}}' \
Para promover e ignorar o backup inicial após a promoção, configure também skip_initial_backup no corpo JSON.
curl -X POST \
https://api.{region}.databases.cloud.ibm.com/v4/ibm/deployments/{id}/remotes/promotion \
-H 'Authorization: Bearer <>' \
-H 'Content-Type: application/json' \
-d '{"promotion": {"skip_initial_backup": true}}' \
Tempo para conclusão
A tarefa de promoção será concluída apenas quando o banco de dados estiver altamente disponível. No entanto, a disponibilidade de leitura/gravação ocorre após cerca de 10 minutos com uma grande ressalva: o banco de dados não está altamente disponível até que a tarefa seja concluída.
O tempo de promoção completo de uma réplica de leitura é determinado de duas maneiras possíveis pelo tamanho dos dados:
- As réplicas de leitura são membros únicos. Quando promovidas, a especificação de formação é mudada para dois membros, o que cria uma segunda réplica. O horário de criação dessa réplica depende do tamanho dos dados. A criação da réplica é executada a 25 MB/s para evitar a saturação da rede. Conforme os bancos de dados crescem, é possível que a criação demore bem mais. A tarefa não é concluída até que a criação dessa réplica seja concluída.
- Se você optar por fazer backup como parte da promoção, esse backup também precisará ser concluído antes que a tarefa seja concluída. Mais uma vez, isso depende do tamanho do banco de dados.
Não há nenhum membro de alta disponibilidade até que a tarefa de promoção seja concluída. Da mesma forma, se você tiver selecionado um backup inicial, não haverá nenhum backup até que o segundo ponto seja concluído ou um backup manual seja criado.
Fazendo upgrade durante a promoção
Se for necessário fazer upgrade para uma nova versão principal do banco de dados, isso será possível ao promover uma réplica somente leitura para uma implementação independente. Para obter mais informações, consulte Atualização para uma nova versão principal.
Considerações sobre a réplica somente leitura
-
A réplica somente leitura pode existir na mesma região que a formação de origem ou em uma diferente, permitindo que seus dados sejam replicados nas regiões.
-
Uma réplica somente leitura deve ter a mesma versão principal de seu líder.
-
Os backups ficam desativados em réplicas somente leitura. Os backups são realizados apenas em implementações líderes.
-
As réplicas podem ser restauradas para outras regiões, exceto para regiões habilitadas para a nuvem da UE (atualmente
eu-deepar-01), que só podem ser restauradas entre si (por exemplo,par-01as réplicas podem ser restauradas paraeu-dee vice-versa). -
Há um limite de cinco réplicas somente leitura por líder.
-
A réplica somente leitura não participa de eleições do líder->seguidor para o cluster líder e o failover para a réplica somente leitura não é automatizado. A promoção da réplica somente leitura para uma implementação completa é uma tarefa manual iniciada pelo usuário.
-
O tamanho mínimo de uma réplica somente leitura é 2 GB de RAM e 10 GB de disco. Isso será verdade mesmo se sua implementação líder for menor.
-
As réplicas somente leitura não são escaladas automaticamente para corresponder ao líder. Se a quantia de dados armazenada ultrapassar o disco alocado para suas implementações, escale o disco nas réplicas somente leitura e, em seguida, o líder. Escalar a réplica somente leitura primeiro assegura que você não fique sem espaço nas réplicas somente leitura. Se você tiver escalado o disco do líder para desempenho e não para espaço, não será necessário escalar as réplicas somente leitura.
-
A replicação é assíncrona e pode estar sujeita a atraso de replicação. Por padrão, não há comunicação consistente entre o primário e a réplica. É possível que uma réplica somente leitura fique tão atrasada que precise ser sincronizada novamente. O atraso da replicação pode ser maior quando a réplica está em uma região distante geograficamente de seu líder.
-
Uma réplica somente leitura é uma implantação com um único membro de dados e não possui alta disponibilidade interna. Ela está propensa a interrupções provisórias e ao tempo de inatividade durante a manutenção. Se você tiver aplicativos que dependem de réplicas somente leitura, certifique-se de ter lógica para tentar novamente as consultas com falha ou balanceamento de carga sobre diversas réplicas somente leitura.
Status da réplica somente leitura em atualizações de versão principal no local
Com a introdução de atualizações de versão principais no local em nosso Databases for PostgreSQL serviço, as réplicas somente leitura podem ajudar a manter a continuidade das transações de leitura e se mostrarem especialmente úteis durante os processos de atualização. No entanto, observe que esse recurso ainda não é aplicável a réplicas somente leitura no momento. Ainda assim, se o seu serviço precisar ler dados da instância em que a atualização está em andamento, você pode considerar a criação de uma instância em espera e atualizar os detalhes de conexão do seu aplicativo para apontar para a instância em espera. Isso garante que você tenha uma cópia atualizada do seu banco de dados antes de iniciar a atualização. A instância em espera também pode ser promovida e usada como instância primária se a atualização no local não for concluída com sucesso.
Durante uma atualização de versão principal no local, a instância de origem e suas réplicas somente leitura perdem a funcionalidade de replicação, e a replicação não é restaurada automaticamente após a atualização (observe também que a alteração de versão as torna incompatíveis). No entanto, as réplicas somente leitura permanecem totalmente operacionais como instâncias independentes. Portanto, você pode promover com segurança uma réplica somente leitura para uma instância primária a qualquer momento, independentemente do resultado da atualização. Em caso de falha na atualização, promover uma réplica somente leitura permite restaurar rapidamente seu banco de dados.