A replicação é a capacidade de criar cópias de uma instância do Cloud SQL ou de uma base de dados no local e transferir o trabalho para as cópias.
Introdução
O principal motivo para usar a replicação é dimensionar a utilização de dados numa base de dados sem degradar o desempenho.
Exemplos de outros motivos:
- Migrar dados entre regiões
- Migrar dados entre plataformas
- Migrar dados de uma base de dados no local para o Cloud SQL
Além disso, pode ser promovida uma réplica se a instância original ficar danificada.
Quando se refere a uma instância do Cloud SQL, a instância replicada é denominada instância principal e as cópias são denominadas réplicas de leitura. A instância principal e as réplicas de leitura residem no Cloud SQL.
Quando se refere a uma base de dados no local, o cenário de replicação é denominado replicação a partir de um servidor externo. Neste cenário, a base de dados que é replicada é o servidor da base de dados de origem. As cópias que residem no Cloud SQL são denominadas réplicas do Cloud SQL. Também existe uma instância que representa o servidor de base de dados de origem no Cloud SQL denominada instância de representação de origem.
Num cenário de recuperação de desastres, pode promover uma réplica para a converter numa instância principal. Desta forma, pode usá-la em vez de uma instância que esteja numa região com uma indisponibilidade. Também pode promover uma réplica para substituir uma instância danificada.
O Cloud SQL suporta os seguintes tipos de réplicas:
Ao usar a aplicação de conetores, pode aplicar a utilização apenas do proxy Auth do Cloud SQL ou dos conetores de linguagem do Cloud SQL para ligar a instâncias do Cloud SQL. Com a aplicação do conetor, o Cloud SQL rejeita ligações diretas à base de dados. Não pode criar réplicas de leitura para uma instância com a aplicação do conector ativada. Da mesma forma, se uma instância tiver réplicas de leitura, não pode ativar a aplicação de conectores para a instância.
Também pode usar o Database Migration Service para a replicação contínua de um servidor de base de dados de origem para o Cloud SQL. Nota: o Cloud SQL permite que os utilizadores geram a sua própria replicação através das funcionalidades de replicação lógica do PostgreSQL.O Cloud SQL não suporta a replicação entre dois servidores externos.
Réplicas de leitura
Usa uma réplica de leitura para descarregar trabalho de uma instância do Cloud SQL. A réplica de leitura é uma cópia exata da instância principal. Os dados e outras alterações na instância principal são atualizados quase em tempo real na réplica de leitura.
As réplicas de leitura são só de leitura; não pode escrever nelas. A réplica de leitura processa consultas, pedidos de leitura e tráfego de estatísticas, reduzindo assim a carga na instância principal.
Estabelece ligação a uma réplica diretamente através do respetivo nome de ligação e endereço IP. Se estiver a estabelecer ligação a uma réplica através de um endereço IP privado, não precisa de criar uma ligação privada de VPC adicional para a réplica, porque a ligação é herdada da instância principal.
Para obter informações sobre como criar uma réplica de leitura, consulte o artigo Criar réplicas de leitura. Para ver informações sobre a gestão de uma réplica de leitura, consulte o artigo Gerir réplicas de leitura.
Como prática recomendada, coloque as réplicas de leitura numa zona diferente da instância principal quando usar a HA na instância principal. Esta prática garante que as réplicas de leitura continuam a funcionar quando a zona que contém a instância principal tem uma indisponibilidade. Consulte a Vista geral da alta disponibilidade para mais informações.
Selecionar um tipo de máquina adequado
As réplicas de leitura podem ter um número diferente de vCPUs e memória em relação ao primário. Deve monitorizar as métricas na sua instância, como a utilização de CPU e memória, para garantir que a instância de réplica tem o tamanho correto para a respetiva carga de trabalho, especialmente se for mais pequena do que a instância principal. Uma instância de réplica com tamanho inferior ao necessário é mais propensa a um desempenho fraco, como eventos frequentes de falta de memória (OOM).
Capacidade de armazenamento em réplicas de leitura
Quando o tamanho de uma instância principal é alterado, o tamanho de todas as respetivas réplicas de leitura também é alterado, se necessário, para que tenham, pelo menos, a mesma capacidade de armazenamento que a instância principal atualizada.
Impacto na flag max_connections
quando a réplica de leitura tem um tipo de máquina com menos memória do que a principal
Numa instância do PostgreSQL, se não definir a flag max_connections
para um valor à sua escolha, o Cloud SQL define-a automaticamente com base na quantidade de memória na instância. Para mais informações, consulte as flags suportadas. O PostgreSQL requer que o valor de max_connections
seja sempre, pelo menos, tão grande numa réplica de leitura quanto no respetivo servidor principal. Por conseguinte, se uma réplica de leitura tiver menos memória do que a respetiva instância principal e não tiver definido a flag max_connections
, pode herdar um valor maior de max_connections
com base no tamanho da instância principal. Nesta situação, se depender da definição max_connections
para limitar o número de ligações à instância de réplica, esta pode ficar sobrecarregada porque o valor é demasiado elevado em relação ao tipo de máquina da instância. Para evitar esta situação, pode fazer qualquer uma das seguintes ações:
- Redimensione a instância da réplica para um tipo de máquina maior.
- Configure a aplicação cliente para a limitar a um determinado número de ligações
inferior ao valor de
max_connections
. - Defina a flag
max_connections
na principal e na réplica para um valor adequado.
Operações de índice de hash com réplicas de leitura
As operações de índice de hash não usam o registo de escrita antecipada para o PostgreSQL 9.6. O Cloud SQL tem apenas uma versão disponível no PostgreSQL 10. Isto está documentado na caixa de aviso amarelo na página de lançamento do PostgreSQL. Isto também se aplica às réplicas de leitura do Cloud SQL.
Uma vez que as atualizações do índice de hash não são propagadas para a réplica de leitura no PostgreSQL 9.6, não podem ser usadas pela réplica. Como solução alternativa, pode abster-se de ter 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-lhe criar uma réplica de leitura numa região diferente da instância principal. Crie 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 perto da região da sua aplicação.
- Oferecer capacidade de recuperação de desastres adicional para proteção contra uma falha regional.
- Permitem-lhe migrar dados de uma região para outra.
Consulte o artigo Promover réplicas para migração regional ou recuperação de desastres para mais informações sobre as réplicas entre regiões.
Réplicas de leitura em cascata
A replicação em cascata permite-lhe criar uma réplica de leitura sob outra réplica de leitura na mesma região ou numa região diferente. Os seguintes cenários são exemplos de utilização de réplicas em cascata:
- Recuperação de desastres: pode usar uma hierarquia em cascata de réplicas de leitura para simular a topologia da sua instância principal e das respetivas réplicas de leitura. Durante uma interrupção, a réplica de leitura selecionada é promovida a principal e as réplicas de leitura na nova principal continuam a ser replicadas e estão prontas para utilização.
- Melhorias no desempenho: reduza a carga na instância principal transferindo o trabalho de replicação para várias réplicas de leitura.
- Escalar leituras: pode ter mais réplicas para partilhar a carga de leitura.
- Redução de custos: pode reduzir os custos de rede usando uma única réplica em cascata com replicação entre regiões noutras regiões.
Terminologia
- Réplica em cascata: uma réplica de leitura que pode ter a sua própria réplica.
- Níveis: pode criar níveis de réplicas numa hierarquia de réplicas em cascata. Por exemplo, se adicionar quatro réplicas a uma instância, essas quatro réplicas estão ao mesmo nível.
- Instâncias secundárias: várias réplicas que são replicadas a partir da mesma instância principal. Os elementos irmãos estão no mesmo nível na hierarquia da réplica. Uma réplica pode ter oficialmente até oito irmãos.
- Réplica folha: uma réplica de leitura que não tem réplicas próprias. Numa hierarquia de replicação de vários níveis, a réplica de folha é o último nível.
- Promover: uma ação que converte uma réplica, a qualquer nível na hierarquia, numa instância principal. Quando é promovida, a hierarquia de réplicas em cascata da réplica é mantida.
Configure réplicas em cascata
As réplicas em cascata permitem-lhe adicionar réplicas de leitura a quaisquer réplicas existentes. Pode adicionar até quatro níveis de réplicas, incluindo a instância principal. Quando promove a réplica na parte superior de uma hierarquia de réplicas em cascata, esta torna-se uma instância principal e as respetivas réplicas em cascata continuam a ser replicadas.
Para planear a configuração, tem de ter um objetivo para o que as réplicas de leitura se destinam a fazer. As duas secções seguintes descrevem as configurações para recuperação de desastres e replicação em várias regiões.
Recuperação de desastres
Para compreender como as réplicas em cascata ajudam a recuperar rapidamente durante uma indisponibilidade, considere o seguinte cenário de replicação:
Configuração
Indisponível
Promoção
Se quiser usar uma instância na região B numa configuração de recuperação de desastres e tiver:
- Réplicas na mesma região anexadas à instância principal (Réplica A)
- Réplicas noutras regiões (réplica em cascata) anexadas à principal.
Pode criar réplicas de leitura na réplica em cascata na região B.
No separador Interrupção, se houver uma interrupção na região A, a réplica em cascata é promovida a uma instância principal. Já tem réplicas de leitura abaixo, o que reduz o objetivo de tempo de recuperação (RTO).
No separador Promover, vê que, quando uma réplica em cascata é promovida, as respetivas réplicas também são promovidas e continuam a ser replicadas abaixo da mesma.
Replicação multirregião
Outro exemplo de utilização de réplicas em cascata é distribuir a capacidade de leitura para uma segunda região de forma rentável. É possível criar réplicas em cascata C e D que replicam a partir da réplica B. Os clientes podem distribuir consultas de leitura por 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 principal para a réplica B. A replicação de B para C e D usa a transferência de rede na região, que é gratuita.
Pode criar uma hierarquia de até quatro instâncias através de réplicas em cascata para a replicação em várias regiões:
Principal A → Réplica B → Réplica C e réplica D
Restrições
- Não pode eliminar uma réplica que tenha réplicas abaixo. Para eliminar a réplica, tem de começar pelas réplicas de folhas e avançar na hierarquia.
- A dependência de regiões circulares não é suportada. Para ter a réplica de uma réplica em cascata na mesma região que a instância principal, a réplica em cascata também tem de estar na mesma região.
Replicação lógica
O Cloud SQL permite-lhe configurar as suas próprias soluções de replicação através das funcionalidades 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 principal para uma réplica
- Replicação seletiva apenas de determinadas tabelas ou linhas
- Replicação entre versões principais do PostgreSQL
- Replicação para bases de dados não PostgreSQL
- Fluxos de trabalho de captura de dados de alterações (CDC) em que todas as alterações à base de dados são transmitidas para um consumidor
Para mais informações, consulte o artigo Configurar a replicação lógica. Essa página inclui informações sobre:
- Replicação lógica integrada
- A extensão pglogical
Exemplos de utilização de replicação
Os seguintes exemplos de utilização aplicam-se a cada tipo de replicação.
Nome | Primary | Réplica | Vantagens e exemplos de utilização | 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 autónoma ou principal do PostgreSQL | Qualquer instância do PostgreSQL ou um consumidor externo |
|
Faturação
- Uma réplica de leitura é cobrada à mesma taxa que uma instância padrão do Cloud SQL. Não existe qualquer custo para a replicação de dados.
- O preço de uma réplica de leitura entre regiões é o mesmo que o de criar uma nova instância do Cloud SQL na região. Consulte os preços das instâncias do Cloud SQL e selecione a região adequada. Além do custo normal associado à instância, uma réplica entre regiões incorre em encargos de transferência de dados entre regiões para registos de replicação enviados da instância principal para a instância de réplica, conforme descrito em Preços de saída da rede.
Referência rápida para réplicas de leitura do Cloud SQL
Tópico | Debate |
---|---|
Cópias de segurança | Não pode configurar cópias de segurança 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 dos da instância principal. |
Eliminar a instância principal | Antes de poder eliminar uma instância principal, tem de promover todas as respetivas réplicas de leitura a instâncias autónomas ou eliminar as réplicas de leitura. |
Eliminar a réplica | Quando elimina uma réplica, não existe qualquer impacto no estado da instância principal. |
Desativar o registo antecipado | Antes de poder desativar os registos antecipados numa instância principal, tem de promover ou eliminar todas as respetivas réplicas de leitura. |
Failover | Uma instância principal só pode fazer failover para uma réplica se esta for uma réplica de recuperação de desastres. As réplicas de leitura não conseguem fazer failover de forma alguma durante uma indisponibilidade. |
Alta disponibilidade | As réplicas de leitura permitem-lhe ativar a alta disponibilidade nas réplicas. |
Balanceamento de carga | O Cloud SQL não oferece equilíbrio de carga entre réplicas. Pode optar por implementar o equilíbrio de carga para a sua instância do Cloud SQL. Também pode usar a agrupamento de ligações para distribuir consultas por réplicas com a configuração de equilíbrio de carga para um melhor desempenho. |
Períodos de manutenção | As réplicas de leitura partilham os períodos de manutenção com a instância principal. As réplicas seguem as definições de manutenção da instância principal, incluindo o período de manutenção, o reagendamento e o período de manutenção recusado. Durante a manutenção, o Cloud SQL atualiza primeiro todas as réplicas de leitura antes de atualizar a instância principal. |
Várias réplicas de leitura | O Cloud SQL suporta réplicas em cascata. Como resultado, pode criar até 10 réplicas para uma única instância principal e criar réplicas dessas réplicas, até quatro níveis, incluindo a instância principal. |
IP privado | Se estiver a estabelecer ligação a uma réplica através de um endereço IP privado, não precisa de criar uma ligação privada de VPC adicional para a réplica, uma vez que é herdada da instância principal. |
Restaurar a instância principal | Não pode restaurar a instância principal de uma réplica enquanto a réplica existir. Antes de restaurar uma instância a partir de uma cópia de segurança ou executar uma recuperação num momento específico, tem de promover ou eliminar todas as respetivas réplicas. |
Definições | As definições da instância principal são propagadas para a réplica, incluindo a palavra-passe do utilizador postgres e as alterações à tabela de utilizadores. |
Parar uma réplica | Não pode stop uma réplica. Pode restart ,
delete ou disable replication , mas não pode
pará-la como faria com uma instância principal. |
Atualizar uma réplica | As réplicas de leitura podem sofrer uma atualização disruptiva em qualquer altura. |
Tabelas de utilizadores | Não pode fazer alterações na réplica. Todas as alterações de utilizadores têm de ser feitas na instância principal. |
O que se segue?
- Saiba como criar uma réplica de leitura.
- Saiba como configurar uma instância para alta disponibilidade.