Replicação é a capacidade de criar cópias de uma instância do Cloud SQL ou de um banco de dados local e descarregar trabalho para as cópias.
Introdução
O principal motivo para usar a replicação é dimensionar o uso de dados em um banco de dados sem prejudicar o desempenho.
Outros motivos incluem:
- Migrando dados entre regiões
- Migração de dados entre plataformas
- Migrando dados de um banco de dados local para o Cloud SQL
Além disso, uma réplica pode ser promovida se a instância original for corrompida.
Ao se referir a uma instância do Cloud SQL, a instância replicada é chamada de instância primária e as cópias são chamadas de réplicas de leitura . A instância primária e as réplicas de leitura residem no Cloud SQL.
Ao se referir a um banco de dados local, o cenário de replicação é chamado de replicação de um servidor externo . Nesse cenário, o banco de dados replicado é o servidor de banco de dados de origem . As cópias que residem no Cloud SQL são chamadas de réplicas do Cloud SQL . Há também uma instância que representa o servidor de banco de dados de origem no Cloud SQL, chamada de instância de representação de origem .
Em um cenário de recuperação de desastres, você pode promover uma réplica para convertê-la em uma instância primária. Dessa forma, você pode usá-la no lugar de uma instância que esteja em uma região com interrupção. Você também pode promover uma réplica para substituir uma instância corrompida.
O Cloud SQL oferece suporte aos seguintes tipos de réplicas:
Ao usar a imposição de conectores , você pode usar apenas o Proxy de Autenticação do Cloud SQL ou os Conectores de Linguagem do Cloud SQL para se conectar a instâncias do Cloud SQL. Com a imposição de conectores, o Cloud SQL rejeita conexões diretas com o banco de dados. Não é possível criar réplicas de leitura para uma instância que tenha a imposição de conectores habilitada. Da mesma forma, se uma instância tiver réplicas de leitura, não será possível habilitar a imposição de conectores para ela.
Você também pode usar o Database Migration Service para replicação contínua de um servidor de banco de dados de origem para o Cloud SQL. Observação: o Cloud SQL permite que os usuários gerenciem sua própria replicação usando os recursos de replicação lógica do PostgreSQL.O Cloud SQL não oferece suporte à replicação entre dois servidores externos.
Ler réplicas
Use uma réplica de leitura para descarregar o trabalho de uma instância do Cloud SQL. A réplica de leitura é uma cópia exata da instância primária. Dados e outras alterações na instância primária são atualizados quase em tempo real na réplica de leitura.
Réplicas de leitura são somente leitura; você não pode gravar nelas. A réplica de leitura processa consultas, solicitações de leitura e tráfego analítico, reduzindo assim a carga na instância primária.
Você se conecta a uma réplica diretamente usando seu nome de conexão e endereço IP. Se você estiver se conectando a uma réplica usando um endereço IP privado, não precisará criar uma conexão privada VPC adicional para a réplica, pois a conexão é herdada da instância primária.
Para obter informações sobre como criar uma réplica de leitura, consulte Criação de réplicas de leitura . Para obter informações sobre como gerenciar uma réplica de leitura, consulte Gerenciamento de réplicas de leitura .
Como prática recomendada, coloque as réplicas de leitura em uma zona diferente da instância primária ao usar HA na sua instância primária. Essa prática garante que as réplicas de leitura continuem operando mesmo quando a zona que contém a instância primária estiver inativa. Consulte a Visão geral da alta disponibilidade para obter mais informações.
Selecionando um tipo de máquina apropriado
Réplicas de leitura podem ter um número diferente de vCPUs e memória em relação à instância primária. Monitore métricas na sua instância, como uso de CPU e memória, para garantir que a instância de réplica esteja dimensionada corretamente para sua carga de trabalho, especialmente se for menor que a instância primária. Uma instância de réplica subdimensionada está mais propensa a apresentar baixo desempenho, como eventos frequentes de falta de memória (OOM).
Capacidade de armazenamento em réplicas de leitura
Quando uma instância primária é redimensionada, todas as suas réplicas de leitura são redimensionadas, se necessário, para que tenham pelo menos a mesma capacidade de armazenamento que a instância primária atualizada.
Impacto no sinalizador max_connections
quando a réplica de leitura tem um tipo de máquina com menos memória que o primário
Em uma instância do PostgreSQL, se você não definir o sinalizador max_connections
com um valor de sua escolha, o Cloud SQL o definirá automaticamente com base na quantidade de memória na instância. Para obter mais informações, consulte sinalizadores compatíveis . O PostgreSQL exige que o valor de max_connections
seja sempre pelo menos tão grande em uma réplica de leitura quanto em sua primária. Portanto, se uma réplica de leitura tiver menos memória que sua primária e você não tiver definido o sinalizador max_connections
, ela poderá herdar um valor maior de max_connections
com base no tamanho da instância primária. Nessa situação, se você confiar na configuração max_connections
para limitar o número de conexões com a instância da réplica, ela poderá ficar sobrecarregada porque o valor é muito alto em relação ao tipo de máquina da instância. Para evitar isso, você pode fazer o seguinte:
- Redimensione a instância de réplica para um tipo de máquina maior.
- Configure seu aplicativo cliente para limitá-lo a um número de conexões menor que o valor de
max_connections
. - Defina o sinalizador
max_connections
no primário e na réplica para um valor apropriado.
Operações de índice de hash usando réplicas de leitura
Operações de índice de hash não utilizam registro de gravação antecipada para o PostgreSQL 9.6. O Cloud SQL tem apenas uma versão disponível, o PostgreSQL 10. Isso está documentado na caixa de aviso amarela na página de lançamento do PostgreSQL . Isso também se aplica às réplicas de leitura do Cloud SQL.
Como as atualizações do índice de hash não são propagadas para a réplica de leitura no PostgreSQL 9.6, elas não podem ser usadas pela réplica. Como solução alternativa, você pode evitar réplicas de leitura ou atualizar para uma versão principal do PostgreSQL (10 ou superior) .
Réplicas de leitura entre regiões
A replicação entre regiões permite criar uma réplica de leitura em uma região diferente da instância primária. Você cria uma réplica de leitura entre regiões da mesma forma que cria uma réplica na região .
Réplicas entre regiões:
- Melhore o desempenho de leitura disponibilizando réplicas mais próximas da região do seu aplicativo.
- Forneça capacidade adicional de recuperação de desastres para proteger contra uma falha regional.
- Permite migrar dados de uma região para outra.
Consulte Promoção de réplicas para migração regional ou recuperação de desastres para obter mais informações sobre réplicas entre regiões.
Réplicas de leitura em cascata
A replicação em cascata permite criar uma réplica de leitura sob outra réplica de leitura na mesma região ou em uma região diferente. Os seguintes cenários são casos de uso para o uso de réplicas em cascata:
- Recuperação de desastres : você pode usar uma hierarquia em cascata de réplicas de leitura para simular a topologia da sua instância primária e suas réplicas de leitura. Durante uma interrupção, a réplica de leitura selecionada é promovida a primária e as réplicas de leitura sob a nova instância primária continuam a replicar e ficam prontas para uso.
- Melhorias de desempenho : reduza a carga na instância primária transferindo o trabalho de replicação para várias réplicas de leitura.
- Leituras em escala : você pode ter mais réplicas para compartilhar a carga de leitura.
- Redução de custos : você pode reduzir os custos de rede usando uma única réplica em cascata com replicação entre regiões em outras regiões.
Terminologia
- Réplica em cascata : uma réplica de leitura que pode ter sua própria réplica.
- Níveis : você pode criar níveis de réplicas em uma hierarquia de réplicas em cascata. Por exemplo, se você adicionar quatro réplicas a uma instância, essas quatro réplicas ficarão no mesmo nível.
- Instâncias irmãs : múltiplas réplicas que replicam a partir da mesma instância primária. As réplicas irmãs estão no mesmo nível na hierarquia de réplicas. Uma réplica pode ter oficialmente até oito réplicas irmãs.
- Réplica folha : uma réplica de leitura que não possui réplicas próprias. Em uma hierarquia de replicação multinível, a réplica folha é o último nível.
- Promover: Uma ação que converte uma réplica, em qualquer nível da hierarquia, em uma instância primária. Quando promovida, a hierarquia de réplicas em cascata da réplica é mantida.
Configurar réplicas em cascata
Réplicas em cascata permitem adicionar réplicas de leitura a qualquer réplica existente. Você pode adicionar até quatro níveis de réplicas, incluindo a instância primária. Ao promover a réplica ao topo de uma hierarquia de réplicas em cascata, ela se torna uma instância primária e suas réplicas em cascata continuam a replicar.
Para planejar sua configuração, você precisa ter uma meta para o que as réplicas de leitura pretendem fazer. As próximas duas seções descrevem as configurações para recuperação de desastres e replicação multirregional.
Recuperação de desastres
Para entender como as réplicas em cascata ajudam você a se recuperar rapidamente durante uma interrupção, considere o seguinte cenário de replicação:
Configuração
Interrupção
Promoção
Se você quiser usar uma instância na Região B em uma configuração de recuperação de desastres e tiver:
- Réplicas na mesma região anexadas à instância primária (Réplica A)
- Réplicas em outras regiões (réplica em cascata) anexadas ao primário.
Você pode criar réplicas de leitura na réplica em cascata na Região B.
Na aba "Interrupção" , se houver uma interrupção na Região A, a réplica em cascata será promovida a instância primária. Ela já possui réplicas de leitura abaixo dela, reduzindo o objetivo de tempo de recuperação (RTO).
Na guia Promover , você vê que quando uma réplica em cascata é promovida, suas réplicas também são promovidas e continuam a replicar sob ela.
Replicação multirregional
Outro caso de uso para réplicas em cascata é distribuir capacidade de leitura para uma segunda região de forma econômica. Réplicas em cascata C e D podem ser criadas para replicar a partir da Réplica B. Os clientes podem distribuir consultas de leitura entre as réplicas B, C e D para reduzir a carga em cada réplica. O custo do tráfego de rede entre regiões é incorrido apenas uma vez, da instância primária para a Réplica B. A replicação de B para C e D utiliza transferência de rede dentro da região, que é gratuita.
Você pode criar uma hierarquia de até quatro instâncias usando réplicas em cascata para replicação multirregional:
Primário A → Réplica B → Réplica C e Réplica D
Restrições
- Não é possível excluir uma réplica que tenha réplicas abaixo dela. Para excluir a réplica, você deve começar com as réplicas folha e avançar na hierarquia.
- A dependência de região circular não é suportada. Para que a réplica de uma réplica em cascata esteja na mesma região da instância primária, a réplica em cascata também deve estar na mesma região.
Replicação lógica
O Cloud SQL permite que você configure suas próprias soluções de replicação usando os recursos de replicação lógica do PostgreSQL. A replicação lógica é uma solução flexível que permite:
- Replicação padrão de uma instância primária para uma réplica
- Replicação seletiva de apenas determinadas tabelas ou linhas
- Replicação entre as principais versões do PostgreSQL
- Replicação para bancos de dados não PostgreSQL
- Fluxos de trabalho de captura de dados alterados (CDC) onde todas as alterações do banco de dados são transmitidas para um consumidor
Para obter mais informações, consulte Configurando a replicação lógica . Essa página inclui informações sobre:
- Replicação lógica integrada
- A extensão pglógica
Casos de uso de replicação
Os seguintes casos de uso se aplicam a cada tipo de replicação.
Nome | Primário | Réplica | Benefícios e casos de uso | Mais informações |
---|---|---|---|---|
Ler réplica | Instância do Cloud SQL | Instância do Cloud SQL |
| |
Réplica de leitura entre regiões | Instância do Cloud SQL | Instância do Cloud SQL |
| |
Replicação lógica | Qualquer instância do PostgreSQL | Qualquer instância do PostgreSQL ou um consumidor externo |
|
Cobrança
- Uma réplica de leitura é cobrada com a mesma taxa de uma instância padrão do Cloud SQL. Não há cobrança pela replicação de dados.
- O preço de uma réplica de leitura entre regiões é o mesmo usado para criar uma nova instância do Cloud SQL na região. Consulte os preços de instâncias do Cloud SQL e selecione a região apropriada. Além do custo normal associado à instância, uma réplica entre regiões incorre em cobranças de transferência de dados entre regiões para logs de replicação enviados da instância primária para a instância de réplica, conforme descrito em Preços de Saída de Rede .
Referência rápida para réplicas de leitura do Cloud SQL
Tópico | Discussão |
---|---|
Backups | Você não pode configurar backups na réplica. |
Núcleos e memória | As réplicas de leitura podem usar um número diferente de núcleos e uma quantidade de memória diferente daquelas da instância primária. |
Excluindo a instância primária | Antes de excluir uma instância primária, você deve promover todas as suas réplicas de leitura para instâncias autônomas ou excluir as réplicas de leitura. |
Excluindo a réplica | Quando você exclui uma réplica, não há impacto no status da instância primária. |
Desabilitando o registro de gravação antecipada | Antes de desabilitar logs de gravação antecipada em uma instância primária, você deve promover ou excluir todas as suas réplicas de leitura. |
Failover | Uma instância primária só pode realizar failover para uma réplica se esta for uma réplica de recuperação de desastres. Réplicas de leitura não podem realizar failover de forma alguma durante uma interrupção. |
Alta disponibilidade | Réplicas de leitura permitem que você habilite alta disponibilidade nas réplicas. |
Balanceamento de carga | O Cloud SQL não oferece balanceamento de carga entre réplicas. Você pode optar por implementar o balanceamento de carga para sua instância do Cloud SQL. Você também pode usar o pool de conexões para distribuir consultas entre réplicas com sua configuração de balanceamento de carga para obter melhor desempenho. |
Janelas de manutenção | Réplicas de leitura compartilham janelas de manutenção com a instância primária. As réplicas seguem as configurações de manutenção da instância primária, incluindo a janela de manutenção, o reagendamento e o período de negação de manutenção. Durante a manutenção, o Cloud SQL atualiza todas as réplicas de leitura antes de atualizar a instância primária. |
Várias réplicas de leitura | O Cloud SQL oferece suporte a réplicas em cascata . Como resultado, você pode criar até 10 réplicas para uma única instância primária e criar réplicas dessas réplicas, em até quatro níveis, incluindo a instância primária. |
IP privado | Se você estiver se conectando a uma réplica usando um endereço IP privado, não precisará criar uma conexão privada VPC adicional para a réplica, pois ela é herdada da instância primária. |
Restaurando a instância primária | Não é possível restaurar a instância primária de uma réplica enquanto ela existir. Antes de restaurar uma instância a partir de um backup ou executar uma recuperação pontual nela, você deve promover ou excluir todas as suas réplicas. |
Configurações | As configurações da instância primária são propagadas para a réplica, incluindo a senha do usuário postgres e alterações na tabela de usuários. |
Parando uma réplica | Não é possível stop uma réplica. Você pode restart , delete ou disable replication nela, mas não pode interrompê-la como faria com uma instância primária. |
Atualizando uma réplica | Réplicas de leitura podem passar por uma atualização disruptiva a qualquer momento. |
Tabelas de usuários | Não é possível fazer alterações na réplica. Todas as alterações do usuário devem ser feitas na instância primária. |
O que vem a seguir
- Aprenda como criar uma réplica de leitura .
- Aprenda a configurar uma instância para alta disponibilidade .