Nesta página, você verá como gerenciar réplicas de leitura. Essas operações incluem desativar e ativar a replicação, promover uma réplica, configurar a replicação paralela e verificar o status da replicação.
Para mais informações sobre como funciona a replicação, consulte Replicação no Cloud SQL.
Desativar replicação
Por padrão, uma réplica começa com a replicação ativada. No entanto, é possível desativar a replicação, por exemplo, para depurar ou analisar o estado de uma instância. Ao terminar, reative a replicação explicitamente. Desativar ou reativar a replicação não reinicia a instância da réplica.
Quando a replicação é desativada, isso não interrompe a instância da réplica: ela se torna uma instância somente leitura que não é mais replicada da instância principal. Você continuará sendo cobrado pela instância. Na réplica desativada, é possível reativar a replicação, excluir a réplica ou promovê-la a uma instância autônoma.
Para desativar a replicação:
Console
-
No console do Google Cloud, acesse a página Instâncias do Cloud SQL.
- Selecione uma instância de réplica clicando no nome dela.
- Clique em Desativar replicação na barra de botões.
- Clique em OK.
gcloud
gcloud sql instances patch REPLICA_NAME \ --no-enable-database-replication
REST v1
Para executar esse comando cURL em um prompt de linha de comando, adquira um token de acesso. Basta usar o comando gcloud auth print-access-token. Use também o APIs Explorer na página "Instâncias: patch" para enviar a solicitação da API REST.
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
- project-id: o ID do projeto
- replica-name: o nome da instância da réplica
Método HTTP e URL:
PATCH https://sqladmin.googleapis.com/v1/projects/project-id/instances/replica-name
Corpo JSON da solicitação:
{ "settings": { "databaseReplicationEnabled": "False" } }
Para enviar a solicitação, expanda uma destas opções:
Você receberá uma resposta JSON semelhante a esta:
REST v1beta4
Para executar esse comando cURL em um prompt de linha de comando, adquira um token de acesso. Basta usar o comando gcloud auth print-access-token. Use também o APIs Explorer na página "Instâncias: patch" para enviar a solicitação da API REST.
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
- project-id: o ID do projeto
- replica-name: o nome da instância da réplica
Método HTTP e URL:
PATCH https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/replica-name
Corpo JSON da solicitação:
{ "settings": { "databaseReplicationEnabled": "False" } }
Para enviar a solicitação, expanda uma destas opções:
Você receberá uma resposta JSON semelhante a esta:
Ativar replicação
Se uma réplica não for replicada por muito tempo, ela demorará mais para alcançar a instância principal. Nesse caso, exclua a réplica e crie uma nova.
Para ativar a replicação:
Console
-
No console do Google Cloud, acesse a página Instâncias do Cloud SQL.
- Selecione uma instância de réplica clicando no nome dela.
- Clique em Ativar replicação.
- Clique em OK.
gcloud
gcloud sql instances patch REPLICA_NAME \ --enable-database-replication
REST v1
Para executar esse comando cURL em um prompt de linha de comando, adquira um token de acesso. Basta usar o comando gcloud auth print-access-token. Use também o APIs Explorer na página "Instâncias: patch" para enviar a solicitação da API REST.
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
- project-id: o ID do projeto
- replica-name: o nome da instância da réplica
Método HTTP e URL:
PATCH https://sqladmin.googleapis.com/v1/projects/project-id/instances/replica-name
Corpo JSON da solicitação:
{ "settings": { "databaseReplicationEnabled": "True" } }
Para enviar a solicitação, expanda uma destas opções:
Você receberá uma resposta JSON semelhante a esta:
REST v1beta4
Para executar esse comando cURL em um prompt de linha de comando, adquira um token de acesso. Basta usar o comando gcloud auth print-access-token. Use também o APIs Explorer na página "Instâncias: patch" para enviar a solicitação da API REST.
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
- project-id: o ID do projeto
- replica-name: o nome da instância da réplica
Método HTTP e URL:
PATCH https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/replica-name
Corpo JSON da solicitação:
{ "settings": { "databaseReplicationEnabled": "True" } }
Para enviar a solicitação, expanda uma destas opções:
Você receberá uma resposta JSON semelhante a esta:
Promover uma réplica
Promover uma réplica de leitura interrompe a replicação e converte a instância em uma instância primária independente do Cloud SQL com recursos de leitura e gravação.
Quando promovidas, as réplicas de leitura são configuradas automaticamente com backups, mas não são configuradas automaticamente como instâncias de alta disponibilidade (HA, na sigla em inglês). É possível ativar a alta disponibilidade depois de promover a réplica, assim como faria para qualquer instância que não seja réplica. Configurar uma réplica de leitura para alta disponibilidade é feito da mesma maneira que em uma instância principal. Saiba mais sobre como configurar a instância para alta disponibilidade.
Antes de promover uma réplica de leitura, se a principal ainda estiver disponível e atendendo aos clientes, faça o seguinte:
- Interrompa todas as gravações na instância principal.
- Verifique o status da replicação. Siga as instruções na guia MySQL Client.
- Verifique se a réplica está replicando e aguarde até que o
atraso da replicação relatado pela
métrica
Seconds_Behind_Master
seja 0.
Caso contrário, uma instância recém-promovida pode não ter algumas transações confirmadas na instância principal.
Para promover uma réplica a uma instância autônoma:
Console
-
No console do Google Cloud, acesse a página Instâncias do Cloud SQL.
- Selecione uma instância de réplica clicando no nome dela.
- Clique em Promover réplica.
- Clique em OK.
gcloud
gcloud sql instances promote-replica REPLICA_NAME
REST v1
Para executar esse comando cURL em um prompt de linha de comando, adquira um token de acesso. Basta usar o comando gcloud auth print-access-token. Use também o APIs Explorer na página "Instâncias: promoteReplica" para enviar a solicitação da API REST.
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
- project-id: o ID do projeto
- replica-name: o nome da instância da réplica
Método HTTP e URL:
POST https://sqladmin.googleapis.com/v1/projects/project-id/instances/replica-name/promoteReplica
Para enviar a solicitação, expanda uma destas opções:
Você receberá uma resposta JSON semelhante a esta:
REST v1beta4
Para executar esse comando cURL em um prompt de linha de comando, adquira um token de acesso. Basta usar o comando gcloud auth print-access-token. Use também o APIs Explorer na página "Instâncias: promoteReplica" para enviar a solicitação da API REST.
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
- project-id: o ID do projeto
- replica-name: o nome da instância da réplica
Método HTTP e URL:
POST https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/replica-name/promoteReplica
Para enviar a solicitação, expanda uma destas opções:
Você receberá uma resposta JSON semelhante a esta:
Confirme se a instância promovida está configurada corretamente. Em particular, configure a instância para alta disponibilidade, se necessário.
Configurar a replicação paralela
Reduzir o atraso da replicação é importante para gerenciar o desempenho da replicação. O atraso de replicação ocorre quando as atualizações em uma réplica de leitura são realizadas depois das atualizações na instância principal. Nesta seção, descrevemos como os usuários podem ativar a replicação paralela, o que pode reduzir o atraso da replicação.
Na replicação do MySQL, uma thread de replicação SQL é usada para executar as transações coletadas no registro de redirecionamento na réplica de leitura. A replicação paralela reduz o atraso da replicação ao aumentar o número de threads do SQL que trabalham para executar essas transações. Réplicas de leitura com replicação paralela ativada às vezes são chamadas de réplicas multithread.
A replicação paralela está disponível nestes três cenários no Cloud SQL para MySQL:
Para simplificar, esta página usa os termos "instância primária" e "réplica de leitura".
Etapas básicas para alterar sinalizações de replicação paralela
As etapas para ativar a replicação paralela são as seguintes:
- Em uma réplica de leitura, desative a replicação.
- Na réplica de leitura,
defina as sinalizações
da replicação paralela. Use o
gcloud
comando para definir a sinalização. A opção do Console do Google Cloud fica desativada enquanto a replicação estiver desativada. - Na réplica de leitura, ative a replicação.
- Opcionalmente, na instância primária, defina as sinalizações para otimizar o desempenho para replicação paralela.
Réplicas de leitura: sinalizações para replicação paralela
O Cloud SQL para MySQL aceita várias sinalizações para replicação paralela em réplicas de leitura. Para informações sobre as sinalizações, clique nestes links para a documentação do MySQL 8.0:
- slave_parallel_workers (em inglês)
- slave_parallel_type (em inglês)
- slave_preserve_commit_order (em inglês)
- slave_pending_jobs_size_max (em inglês)
A alteração dessas sinalizações não reinicia a réplica de leitura.
A tabela a seguir contém os intervalos permitidos e os valores padrão para essas sinalizações:
Sinalização da réplica de leitura | Valores permitidos | Valor padrão do MySQL 5.7 | Valor padrão do MySQL 8.0 |
---|---|---|---|
slave_parallel_workers |
0-1024 | 0 | 0 (MySQL 8.0.26 e versões anteriores) 4 (MySQL 8.0.27 e versões mais recentes) |
slave_parallel_type |
DATABASE, LOGICAL_CLOCK |
DATABASE |
DATABASE (MySQL 8.0.26 e versões anteriores)LOGICAL_CLOCK (MySQL 8.0.27 e versões mais recentes) |
slave_preserve_commit_order |
ON, OFF |
OFF |
OFF (MySQL 8.0.26 e versões anteriores)ON (MySQL 8.0.27 e versões mais recentes) |
slave_pending_jobs_size_max |
1024-1 GB | 16 MB | 128 MB |
A sinalização slave_preserve_commit_order
impede lacunas na sequência de transações executadas do registro de redirecionamento da réplica.
A configuração slave_preserve_commit_order=1
requer o seguinte:
- Como ativar registros binários na réplica (apenas para MySQL 5.7, MySQL 8.0.18 e versões anteriores)
- Como definir
slave_parallel_type
comoLOGICAL_CLOCK
A sinalização slave_pending_jobs_size_max
define a memória máxima, em bytes, disponível para filas de aplicadores que contêm eventos que ainda não foram aplicados.
Instância principal: sinalizações para replicação paralela
O Cloud SQL para MySQL é compatível com várias sinalizações para uso em uma instância primária. Use essas sinalizações para ajustar o desempenho da replicação das réplicas de leitura associadas com a replicação paralela ativada. Para informações sobre as sinalizações, clique nestes links para a documentação do MySQL 8.0:
- binlog_transaction_dependency_history_size
- binlog_transaction_dependency_tracking
- transaction_write_set_extraction (em inglês)
A alteração dessas sinalizações não reinicia a instância primária.
A tabela a seguir contém os intervalos permitidos e os valores padrão para essas sinalizações:
Sinalização de instância primária | Valores permitidos | Valor padrão do MySQL 5.7 | Valor padrão do MySQL 8.0 |
---|---|---|---|
binlog_transaction_dependency_history_size |
1-1000000 | 25.000 | 25.000 |
binlog_transaction_dependency_tracking |
COMMIT_ORDER, WRITESET, WRITESET_SESSION |
COMMIT_ORDER |
WRITESET |
transaction_write_set_extraction |
OFF, MURMUR32, XXHASH64 |
OFF |
XXHASH64 |
No MySQL 5.7, se binlog_transaction_dependency_tracking
estiver definido como WRITESET
ou WRITESET_SESSION
, transaction_write_set_extraction
precisará ser definido como um valor que não seja OFF
(XXHASH64
ou MURMUR32
).
Verificar o status da replicação
Ao visualizar uma instância de réplica usando o Console do Google Cloud ou fazer login na instância usando um cliente de administração, você recebe detalhes sobre a replicação, incluindo o status e as métricas. Ao usar a CLI gcloud, você recebe um breve resumo da configuração de replicação.
Antes de verificar o status da replicação de uma instância de réplica do Cloud SQL,
use o comando gcloud sql instances describe
para exibir
o status da instância. Como resultado, é possível ver se a replicação está ativada
para a instância de réplica.
As métricas a seguir estão disponíveis para instâncias de réplica. Saiba mais sobre outras métricas disponíveis para todas as instâncias, incluindo instâncias que não são de réplica.
Métrica | Descrição |
---|---|
Estado de replicação ( cloudsql.googleapis.com ) |
Indica se a replicação está transmitindo registros ativamente da primária para a réplica. Valores possíveis:
Essa métrica mostrará |
Lag de replicação ( cloudsql.googleapis.com ) |
O tempo que o estado da réplica está atrasando se comparado ao estado da instância principal. Essa é a diferença entre (1) a hora atual e (2) o carimbo de data/hora original em que a principal confirmou a transação que está sendo aplicada na réplica. Em especial, as gravações podem ser consideradas atrasadas, mesmo que tenham sido recebidas pela réplica, caso a réplica ainda não tenha aplicado a gravação ao banco de dados. Para réplicas em cascata, cada par de réplicas primárias é monitorado separadamente, e não há uma única métrica que produza o atraso completo (principal para réplica). Essa métrica informa o valor de |
Lag da rede ( cloudsql.googleapis.com ) |
O tempo, em segundos, desde a gravação do binlog no banco de dados primário até a linha de execução de E/S na réplica. Se network_lag for zero ou insignificante, mas `replica_lag` for alto, isso indica que a linha de execução SQL não pode aplicar mudanças de replicação com rapidez suficiente. |
Estado de execução da linha subordinada de E/S ( cloudsql.googleapis.com ) |
Indica se a linha de execução de E/S para leitura do registro binário da instância principal está sendo executada na réplica. Valores possíveis:
Essa métrica informa o valor de |
Estado de execução da linha subordinada de SQL ( cloudsql.googleapis.com ) |
Indica se a linha de execução do SQL para executar eventos no registro de retransmissão está em execução na réplica. Valores possíveis:
Essa métrica informa o valor de |
Para verificar o status da replicação:
Console
O Cloud SQL informa as métricas Replication State
e Replication Lag
no
painel
padrão de monitoramento do Cloud SQL.
Para visualizar outras métricas de réplicas regionais e entre regiões, além de réplicas de servidores externos, crie um painel personalizado e adicione as métricas que você quer monitorar a ele:
-
No console do Google Cloud, acesse a página Monitoring.
- Selecione a guia Painéis.
- Clique em Criar painel.
- Dê um nome ao painel e clique em OK.
- Clique em Adicionar gráfico.
- Para Tipo de recurso, selecione Cloud SQL Database.
- Execute um dos seguintes procedimentos:
- Para monitorar a métrica do estado de replicação: no campo Selecione
uma métrica, digite
Replication state
. Em seguida, adicione um filtro parastate = "Running"
. O gráfico mostrará 1 se a replicação estiver em execução e 0 se não estiver. - Para monitorar a métrica de atraso de replicação: no campo Selecione
uma métrica, digite
replica_lag
. O gráfico mostra a quantidade de tempo decorrido pelo estado da réplica em relação à principal. - Para monitorar o status da linha de execução de E/S da réplica: no campo
Selecione uma métrica, digite
Slave I/O thread running state
. Em seguida, adicione um filtro astate = "Yes"
. O gráfico mostra 1 se a linha de execução estiver em execução e 0 se não estiver. - Para monitorar o status da linha de execução do SQL da réplica: no campo
Selecione uma métrica, digite
Slave SQL thread running state
. Em seguida, adicione um filtro astate = "Yes"
. O gráfico mostra 1 se a linha de execução estiver em execução e 0 se não estiver.
gcloud
Na instância da réplica, verifique o status da replicação com:
gcloud sql instances describe REPLICA_NAME
Na saída, procure as propriedades databaseReplicationEnabled
e masterInstanceName
.
Para uma instância principal, verifique se há réplicas com:
gcloud sql instances describe PRIMARY_INSTANCE_NAME
Na saída, procure a propriedade replicaNames
.
Cliente MySQL
- Conecte-se à réplica com um cliente MySQL.
Para mais informações, consulte Opções de conexão para aplicativos externos,
- Verifique o status da réplica:
SHOW SLAVE STATUS \G
Procure as seguintes métricas na saída do comando:
Master_Host
: o nome da instância principal.Slave_IO_Running
,Slave_SQL_Running
: se as linhas de execução de E/S e SQL, respectivamente, estão em execução. Essas conversas são responsáveis por transferir eventos da principal para o registro de redirecionamento da réplica e executá-los nesse registro. O valor da métrica seráYes
se a linha de execução estiver em execução. As duas linhas de execução precisam estar em execução para que a replicação fique ativa.Seconds_Behind_Master
: o tempo, em segundos, pelo qual a réplica atrasa no processamento das transações da principal, ou seja, a diferença entre (1) o horário atual e (2) o carimbo de data/hora original em que a principal confirmou a transação que está sendo aplicada no momento na réplica. O valor seráNULL
se a replicação for inválida.-
Master_Log_file
,Read_Master_Log_Pos
,Relay_Master_Log_File
,Exec_Master_Log_Pos
: essas métricas mostram as coordenadas (nome do arquivo e deslocamento) em que a linha de execução de E/S tem eventos de leitura (Master_Log_file
eRead_Master_Log_Pos
) e em que a linha de execução SQL executou eventos (Relay_Master_Log_File
eExec_Master_Log_Pos
). Se forem iguais (ou seja,Master_Log_file
for igual aRelay_Master_Log_File
eRead_Master_Log_Pos
for igual aExec_Master_Log_Pos
) a réplica processou todos os eventos recebidos da principal.
Para mais detalhes sobre a saída desse comando, consulte a documentação do MySQL sobre Como verificar o status da replicação.
Resolver problemas
Problema | Solução de problemas |
---|---|
A réplica de leitura não começou a ser replicada na criação. | Provavelmente há um erro mais específico nos arquivos de registro. Inspecione os registros no Cloud Logging para encontrar o erro real. |
Não foi possível criar a réplica de leitura: erro invalidFlagValue. | Uma das sinalizações na solicitação é inválida. Pode ser uma sinalização
fornecida explicitamente ou uma que foi definida como um valor padrão.
Primeiro, verifique se o valor da sinalização Se a sinalização |
Não foi possível criar a réplica de leitura: erro desconhecido. | Provavelmente há um erro mais específico nos arquivos de registro.
Inspecione os registros no
Cloud Logging 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 com upgrade para um tamanho de disco maior. |
A instância da réplica está usando memória demais. | A réplica usa memória temporária para armazenar em cache as operações
de leitura solicitadas com frequência, o que pode fazer com que ela 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. |
Replicação interrompida. | O limite máximo de armazenamento foi atingido e o aumento
automático de armazenamento não está ativado.
Edite a instância para ativar |
O atraso da replicação é consistentemente alto. | A carga de gravação é alta demais para a réplica processar. O atraso de replicação
ocorre quando a linha de execução SQL em uma réplica não consegue acompanhar a
linha de execução de E/S. Alguns tipos de consultas ou cargas de trabalho podem causar um atraso de replicação
temporário ou permanente para um determinado esquema. Estas são algumas
das causas comuns do atraso de replicação:
Algumas soluções possíveis incluem:
|
De repente, o atraso de replicação aumenta. | Isso é causado por transações de longa duração. Quando uma transação (instrução única ou várias instruções) é confirmada na instância de origem, o horário de início da transação é gravado no registro binário. Quando a
réplica recebe esse evento do binlog, ela compara esse carimbo de data/hora com o carimbo de data/hora
atual para calcular o atraso da replicação. Dessa forma, uma transação de longa duração na origem resultaria em um grande atraso de replicação imediato na réplica. Se a quantidade de mudanças de linhas na transação for grande, a
réplica também levará muito tempo para executá-la. Durante esse período,
o atraso da replicação está aumentando. Quando a réplica termina essa
transação, o período de recuperação depende da carga de trabalho de gravação na
origem e da velocidade de processamento da réplica.
Para evitar uma transação longa, veja algumas soluções possíveis:
|
Alterar sinalizações paralelas de replicação resulta em um erro. | Um valor incorreto é definido para uma ou mais dessas sinalizações.
Na instância principal exibindo a mensagem de erro, defina as sinalizações de replicação paralela:
|
A criação da réplica falha com o tempo limite. | Transações não confirmadas de longa duração na instância primária podem causar
falha na criação da réplica de leitura.
Recrie a réplica depois de interromper todas as consultas em execução. |
A seguir
- Saiba como criar uma réplica de leitura.
- Saiba mais sobre os procedimentos armazenados do Cloud SQL para índices de réplica de leitura.
- Saiba como definir uma configuração de réplica externa.
- Saiba como definir uma configuração de instância principal externa.
- Saiba mais sobre os requisitos e as práticas recomendadas de replicação.