Esta página descreve como criar uma réplica de leitura para uma instância do Cloud SQL.
Para configurar uma instância do Cloud SQL para atuar como publicador para um subscritor externo, consulte o artigo Configurar réplicas externas.
Uma réplica de leitura é uma cópia da instância principal que reflete as alterações à instância principal quase em tempo real, em circunstâncias normais. Pode usar uma réplica de leitura para descarregar pedidos de leitura ou tráfego de estatísticas da instância principal.
Além disso, para recuperação de desastres, pode fazer uma migração regional. Se uma réplica for uma réplica entre regiões, pode fazer uma comutação por falha para outra região; especificamente, pode promover uma réplica para uma instância autónoma (neste caso, as réplicas existentes não considerariam essa instância como principal).
Para mais informações sobre o funcionamento da replicação, consulte o artigo Replicação no Cloud SQL.
Antes de começar
Se estiver a criar a primeira réplica para esta instância, certifique-se de que a instância cumpre os requisitos das instâncias principais. Saiba mais.
Crie uma réplica de leitura
Ao criar uma réplica de leitura, tenha em atenção as seguintes considerações:- Pode criar um máximo de 8 réplicas de leitura por instância principal.
- Se não for especificada uma edição, a edição Enterprise do Cloud SQL é a predefinição.
- Se, ao criar uma réplica de leitura ou uma réplica em cascata, a instância principal for uma instância da edição Cloud SQL Enterprise Plus, tem de indicar a edição e o nível que quer usar.
Seguem-se os passos para criar uma réplica de leitura.
Consola
-
Na Google Cloud consola, aceda à página Instâncias do Cloud SQL.
- Encontre a instância para a qual quer criar uma réplica e, de seguida, abra o menu
more actions
junto à ficha. - Selecione Criar réplica de leitura.
Se não vir essa escolha, significa que a instância é uma réplica. Não pode criar uma réplica de uma réplica.
Na secção Personalize a sua instância, atualize as definições da réplica. Comece por clicar em Mostrar opções de configuração para apresentar os grupos de definições. Em seguida, expanda os grupos pretendidos para rever e personalizar as definições. Um Resumo de todas as opções que selecionar é apresentado à direita. A personalização destas definições é opcional. As predefinições são atribuídas em todos os casos em que não são feitas personalizações.
Para mais detalhes sobre cada definição, consulte a página Acerca das definições da instância.
- Clique em Criar réplica.
O Cloud SQL cria uma cópia de segurança, se necessário, e cria a réplica. Regressa à página da instância para o servidor principal.
gcloud
Crie a réplica:
gcloud sql instances create REPLICA_NAME \ --master-instance-name=PRIMARY_INSTANCE_NAME
Se necessário, pode especificar um tamanho de nível diferente através do parâmetro --tier
.
Pode especificar uma região diferente através do parâmetro --region
.
Se a instância principal tiver apenas um endereço IP interno, adicione o parâmetro
--no-assign-ip
ao comando.
Pode adicionar mais parâmetros para outras definições da instância. Para saber mais, consulte o artigo gcloud sql instances create.
Tem de criar a réplica na mesma rede VPC
que a instância principal. Também pode especificar um allocated-ip-range-name
nessa rede de VPC. Se não for especificado nenhum intervalo, a réplica é criada num intervalo aleatório.
Terraform
Para criar uma réplica de leitura, use um recurso do Terraform.
REST v1beta4
Use o método
insert
do recurso instances para criar a réplica de leitura. As propriedades region
e databaseVersion têm de ser iguais às da base de dados principal.
Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
- project-id: o ID do projeto
- database-version: string da versão de enumeração (por exemplo, SQLSERVER_2017_ENTERPRISE)
- primary-instance-name: o nome da instância principal
- primary-instance-region: a região da instância principal
- replica-region: a região da instância de réplica
- replica-name: o nome da instância de réplica
- machine-type: string enum do tipo de máquina. Por exemplo: "db-custom-1-3840"
Pode usar o campo sqlNetworkArchitecture
para aplicar a utilização da nova arquitetura de rede à instância no momento da criação, mesmo que o projeto não esteja totalmente atualizado.
Para mais detalhes sobre a nova arquitetura de rede e as respetivas implicações, consulte os artigos
Atualize uma instância para a nova arquitetura de rede e Atribua um intervalo de endereços IP.
Método HTTP e URL:
POST https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances
Corpo JSON do pedido:
{ "masterInstanceName": "primary-instance-name", "project": "project-id", "databaseVersion": "database-version", "name": "replica-name", "region": "replica-region", "settings": { "tier": "machine-type", "settingsVersion": 0, }, "sqlNetworkArchitecture": "NEW_NETWORK_ARCHITECTURE" }
Para enviar o seu pedido, expanda uma destas opções:
Deve receber uma resposta JSON semelhante à seguinte:
Crie uma réplica de leitura de uma instância com o Private Service Connect ativado
Para criar uma réplica de leitura de uma instância com o Private Service Connect ativado, use a CLI gcloud ou a API. Pode criar esta réplica na mesma região ou numa região diferente da instância principal (réplica de leitura entre regiões).
A réplica de leitura não pode ser replicada a partir de uma instância com um tipo de conetividade diferente. Por exemplo, uma instância com o Private Service Connect ativado só pode ser replicada a partir de outra instância do Private Service Connect. Também não pode ser replicada a partir de uma instância que suporte ligações IP externas ou de uma instância configurada com acesso a serviços privados.
gcloud
Para criar uma réplica de leitura de uma instância, use o comando gcloud sql instances create
:
gcloud sql instances create REPLICA_INSTANCE_NAME \ --master-instance-name=PRIMARY_INSTANCE_NAME \ --project=PROJECT_ID \ --region=REGION_NAME \ --enable-private-service-connect \ --allowed-psc-projects=ALLOWED_PROJECTS \ --availability-type=AVAILABILITY_TYPE \ --no-assign-ip
Faça as seguintes substituições:
- REPLICA_INSTANCE_NAME: o nome da instância de réplica.
- PRIMARY_INSTANCE_NAME: o nome da instância principal.
- PROJECT_ID: o ID ou o número do projeto do Google Cloud projeto que contém a instância.
- REGION_NAME: o nome da região da instância da réplica.
ALLOWED_PROJECTS: uma lista de IDs ou números de projetos permitidos, separados por vírgulas. Se um projeto não estiver incluído nesta lista, não pode usá-lo para criar uma instância e ativar o Private Service Connect para o mesmo.
O Cloud SQL não copia os projetos permitidos para a instância principal para a réplica. Para cada réplica, tem de criar um ponto final do Private Service Connect. Se estiver a usar o proxy Auth do Cloud SQL ou os conetores de linguagem do Cloud SQL, crie uma zona DNS e um registo DNS para as réplicas.
- AVAILABILITY_TYPE: ative a elevada disponibilidade para a instância. Para este parâmetro, especifique um dos seguintes valores:
REGIONAL
: ative a alta disponibilidade. Esta opção é recomendada para instâncias de produção. A instância comuta para outra zona na região selecionada.ZONAL
: não oferecem capacidade de comutação por falha. Este é o valor predefinido.
Para mais informações sobre como definir e remover a elevada disponibilidade para instâncias, consulte os artigos Configure uma instância existente para elevada disponibilidade e Desative a elevada disponibilidade para uma instância.
REST v1
Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
- PRIMARY_INSTANCE_NAME: o nome da instância principal.
- PROJECT_ID: o ID ou o número do projeto do Google Cloud projeto que contém a instância.
- REPLICA_INSTANCE_NAME: o nome da instância de réplica.
- REGION_NAME: o nome da região da instância da réplica.
- MACHINE_TYPE: o tipo de máquina da instância.
- AVAILABILITY_TYPE: ative a elevada disponibilidade para a instância. Para este parâmetro, especifique um dos seguintes valores:
REGIONAL
: ative a alta disponibilidade. Esta opção é recomendada para instâncias de produção. A instância comuta para outra zona na região selecionada.ZONAL
: não oferecem capacidade de comutação por falha. Este é o valor predefinido.
Para mais informações sobre como definir e remover a elevada disponibilidade para instâncias, consulte os artigos Configure uma instância existente para elevada disponibilidade e Desative a elevada disponibilidade para uma instância.
ALLOWED_PROJECTS: uma lista de IDs ou números de projetos permitidos, separados por vírgulas. Se um projeto não estiver incluído nesta lista, não pode usá-lo para criar uma instância e ativar o Private Service Connect para o mesmo.
O Cloud SQL não copia os projetos permitidos para a instância principal para a réplica. Para cada réplica, tem de criar um ponto final do Private Service Connect. Se estiver a usar o proxy Auth do Cloud SQL ou os conectores de linguagem do Cloud SQL, tem de criar uma zona DNS e um registo DNS para as réplicas.
Método HTTP e URL:
POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances
Corpo JSON do pedido:
{ "masterInstanceName": "PRIMARY_INSTANCE_NAME", "project": "PROJECT_ID", "databaseVersion": "SQLSERVER_2019_STANDARD", "name": "REPLICA_INSTANCE_NAME", "region": "REGION_NAME", "kind": "sql#instance", "settings": { "tier": "MACHINE_TYPE", "availabilityType": "AVAILABILITY_TYPE", "settingsVersion": 0, "ipConfiguration": { "ipv4Enabled": false, "pscConfig": { "allowedConsumerProjects": [ALLOWED_PROJECTS], "pscEnabled": true } }, "kind": "sql#settings", "pricingPlan": "PER_USE", "replicationType": "ASYNCHRONOUS", "tier": "MACHINE_TYPE" } }
Para enviar o seu pedido, expanda uma destas opções:
Deve receber uma resposta JSON semelhante à seguinte:
{ "kind": "sql#operation", "targetLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/REPLICA_INSTANCE_NAME", "status": "PENDING", "user": "user@example.com", "insertTime": "2020-01-16T02:32:12.281Z", "operationType": "CREATE_REPLICA", "name": "OPERATION_ID", "targetId": "REPLICA_INSTANCE_NAME", "selfLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/operations/OPERATION_ID", "targetProject": "PROJECT_ID" }
REST v1beta4
Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
- PRIMARY_INSTANCE_NAME: o nome da instância principal.
- PROJECT_ID: o ID ou o número do projeto do Google Cloud projeto que contém a instância.
- REPLICA_INSTANCE_NAME: o nome da instância de réplica.
- REGION_NAME: o nome da região da instância da réplica.
- MACHINE_TYPE: o tipo de máquina da instância.
- AVAILABILITY_TYPE: ative a elevada disponibilidade para a instância. Para este parâmetro, especifique um dos seguintes valores:
REGIONAL
: ative a alta disponibilidade. Esta opção é recomendada para instâncias de produção. A instância comuta para outra zona na região selecionada.ZONAL
: não oferecem capacidade de comutação por falha. Este é o valor predefinido.
Para mais informações sobre como definir e remover a elevada disponibilidade para instâncias, consulte os artigos Configure uma instância existente para elevada disponibilidade e Desative a elevada disponibilidade para uma instância.
ALLOWED_PROJECTS: uma lista de IDs ou números de projetos permitidos, separados por vírgulas. Se um projeto não estiver incluído nesta lista, não pode usá-lo para criar uma instância e ativar o Private Service Connect para o mesmo.
O Cloud SQL não copia os projetos permitidos para a instância principal para a réplica. Para cada réplica, tem de criar um ponto final do Private Service Connect. Se estiver a usar o proxy Auth do Cloud SQL ou os conectores de linguagem do Cloud SQL, tem de criar uma zona DNS e um registo DNS para as réplicas.
Método HTTP e URL:
PATCH https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances
Corpo JSON do pedido:
{ "masterInstanceName": "PRIMARY_INSTANCE_NAME", "project": "PROJECT_ID", "databaseVersion": "SQLSERVER_2019_STANDARD", "name": "REPLICA_INSTANCE_NAME", "region": "REGION_NAME", "kind": "sql#instance", "settings": { "tier": "MACHINE_TYPE", "availabilityType": "AVAILABILITY_TYPE", "settingsVersion": 0, "ipConfiguration": { "ipv4Enabled": false, "pscConfig": { "allowedConsumerProjects": [ALLOWED_PROJECTS], "pscEnabled": true } }, "kind": "sql#settings", "pricingPlan": "PER_USE", "replicationType": "ASYNCHRONOUS", "tier": "MACHINE_TYPE" } }
Para enviar o seu pedido, expanda uma destas opções:
Deve receber uma resposta JSON semelhante à seguinte:
{ "kind": "sql#operation", "targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/REPLICA_INSTANCE_NAME", "status": "PENDING", "user": "user@example.com", "insertTime": "2020-01-16T02:32:12.281Z", "operationType": "CREATE_REPLICA", "name": "OPERATION_ID", "targetId": "REPLICA_INSTANCE_NAME", "selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/operations/OPERATION_ID", "targetProject": "PROJECT_ID" }
Crie réplicas em cascata
Esta secção descreve como criar e gerir réplicas em cascata.
Para informações sobre o funcionamento das réplicas em cascata, consulte o artigo Réplicas em cascata.
Antes de começar
A instância principal tem de ter uma réplica em cascata. A secção seguinte indica os passos para criar uma réplica em cascata.
Passos para criar uma réplica em cascata
Quando cria uma réplica em cascata, tem de criar a réplica numa região diferente da instância principal.
Configura uma réplica em cascata definindo a flag cascadable-replica
.
gcloud
Crie a nova réplica especificando a instância principal com a flag --master-instance-name
e usando a flag --cascadable-replica
:
gcloud sql instances create REPLICA_NAME \ --master-instance-name=PRIMARY_INSTANCE_NAME \ --cascadable-replica \ --region=REGION
Substitua o seguinte:
- REPLICA_NAME: o ID exclusivo da réplica que está a criar.
- PRIMARY_INSTANCE_NAME: o nome da instância principal.
- REGION: a região onde quer criar a nova réplica. Esta região tem de ser diferente da região da instância principal.
Tem de criar a réplica na mesma rede VPC que a instância principal. Também pode especificar um nome de intervalo de IPs alocado nessa rede VPC. Se não for especificado nenhum intervalo, a réplica é criada num intervalo aleatório.
Pode adicionar mais parâmetros para outras definições da instância. Por exemplo,
- Pode especificar um tamanho de nível da máquina diferente através do parâmetro
--tier
. - Se a instância principal tiver apenas um endereço IP privado, adicione o parâmetro
--no-assign-ip
ao comando.
Para mais informações sobre como adicionar parâmetros para as definições da instância, consulte o artigo gcloud sql instances create.
Depois de criar a réplica em cascata, pode criar uma réplica em cascata.
curl
- Para criar uma réplica em cascata na instância principal,
edite o seguinte exemplo de código JSON e guarde-o num ficheiro denominado
request.json
.Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
- PROJECT_ID: o ID do projeto.
- DATABASE_VERSION: string enum da versão da base de dados. Por exemplo,
SQLSERVER_2017_ENTERPRISE.
- PRIMARY_INSTANCE_NAME: o nome da instância principal.
- PRIMARY_INSTANCE_REGION: a região da instância principal.
- REPLICA_REGION: a região da instância de réplica.
- REPLICA_NAME: o nome da instância de réplica.
- MACHINE_TYPE: string enum do tipo de máquina. Por exemplo,
db-custom-2-3840
.
{ "masterInstanceName": "PRIMARY_INSTANCE_NAME", "project": "PROJECT_ID", "databaseVersion": "DATABASE_VERSION" "name": "REPLICA_NAME", "region": "REPLICA_REGION", "settings": { "tier": "MACHINE_TYPE", "settingsVersion": 0, } "replicaConfiguration": { "cascadableReplica": true } }
- Na secção
replicaConfiguration
, certifique-se de que o campocascadadableReplica
está definido comotrue
. - Execute o seguinte comando:
curl -X POST -H "Authorization: Bearer "$(gcloud auth print-access-token) -H "Content-Type: application/json; charset=utf-8" -d @request.json "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances"
Depois de criar a réplica em cascata, pode criar uma réplica em cascata.
Terraform
Para criar uma réplica em cascata, use um recurso do Terraform.
O exemplo seguinte cria uma instância principal e uma réplica em cascata que pode atribuir como a réplica de recuperação de desastres (RD) quando efetua uma operação de transferência como parte da recuperação de desastres (RD) avançada.
Passos para criar uma réplica em cascata
Quando cria uma réplica em cascata, tem de criar a réplica na mesma região que a réplica em cascata. Configura uma réplica em cascata indicando o nome da réplica em cascata no parâmetro–master-instance-name
.
Consola
-
Na Google Cloud consola, aceda à página Instâncias do Cloud SQL.
- Clique no separador Réplicas para a réplica que vai atuar como principal para a réplica que quer criar.
- Clique em Criar réplica.
- Na página Criar réplica de leitura, atualize o ID da instância e quaisquer outras opções de configuração, incluindo o nome, a região e a zona.
- Clique em Criar.
O Cloud SQL cria uma réplica. Regressa à página da instância da réplica principal.
- Siga os passos 4 a 6 para cada nova réplica em cascata que quer criar.
gcloud
- Crie a nova réplica especificando a instância de réplica em cascata na flag
--master-instance-name
: - REPLICA_NAME: o ID exclusivo da réplica que está a criar
- CASCADABLE_REPLICA_NAME: o nome da réplica hierárquica
- Depois de criar a réplica em cascata, pode ver que as alterações feitas à instância principal são replicadas em todas as réplicas na cadeia de réplicas em cascata.
gcloud sql instances create REPLICA_NAME \ --master-instance-name=CASCADABLE_REPLICA_NAME \
curl
- Para criar uma réplica em cascata na réplica em cascata, edite o seguinte exemplo de código JSON e guarde-o num ficheiro denominado
request.json
:{ "masterInstanceName": "CASCADABLE_REPLICA_NAME", "project": "PROJECT_ID", "name": "REPLICA_NAME", "region": "REPLICA_REGION", "settings": { "tier": "MACHINE_TYPE", } }
- Execute o seguinte comando:
curl -X POST -H "Authorization: Bearer "$(gcloud auth print-access-token) -H "Content-Type: application/json; charset=utf-8" -d @request.json "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances"
Resolver problemas
Problema | Resolução de problemas |
---|---|
A réplica de leitura não começou a ser replicada na criação. | Provavelmente, existe um erro mais específico nos ficheiros de registo. Inspeccione os registos nos Registos na nuvem para encontrar o erro real. |
Não é possível criar uma réplica de leitura: erro invalidFlagValue. | Uma das flags no pedido é inválida. Pode ser uma flag que
forneceu explicitamente ou uma que foi definida para um valor predefinido.
Primeiro, verifique se o valor da flag Se a flag |
Não é possível criar uma réplica de leitura: erro desconhecido. | Provavelmente, existe um erro mais específico nos ficheiros de registo.
Inspeccione os registos nos
Registos na nuvem para encontrar o erro real.
Se o erro for: |
O disco está cheio. | O tamanho do disco da instância principal pode ficar cheio durante a criação da réplica. Edite a instância principal para a atualizar para um tamanho de disco maior. |
A instância da réplica está a usar demasiada memória. | A réplica usa memória temporária para colocar em cache operações de leitura pedidas com frequência, o que pode fazer com que use mais memória do que a instância principal.
Reinicie a instância da réplica para recuperar o espaço de memória temporário. |
A replicação foi interrompida. | O limite máximo de armazenamento foi atingido e o aumento automático do armazenamento não está ativado.
Edite a instância para ativar a autorização |
O atraso de replicação é consistentemente elevado. | A carga de escrita é demasiado elevada para a réplica processar. O atraso de replicação ocorre quando o segmento SQL numa réplica não consegue acompanhar o segmento de E/S. Alguns tipos de consultas ou cargas de trabalho podem causar um atraso de replicação elevado temporário ou permanente para um determinado esquema. Algumas das causas típicas
do atraso na replicação são:
Algumas soluções possíveis incluem:
|
A criação de réplicas falha devido ao limite de tempo. | As transações não comprometidas de longa duração na instância principal podem fazer com que a criação de réplicas de leitura falhe.
Recrie a réplica depois de parar todas as consultas em execução. |
O que se segue?
- Saiba como gerir réplicas.
- Saiba mais sobre as réplicas entre regiões.