Manutenção em instâncias do Cloud SQL

Nesta página, você verá como as atualizações de manutenção ocorrem nas instâncias do Cloud SQL e como controlar o momento dessas atualizações. Para dar os primeiros passos, consulte Como localizar e configurar janelas de manutenção.

Visão geral

Por ser um serviço gerenciado, o Cloud SQL atualiza automaticamente as instâncias para garantir que o hardware, o sistema operacional e o mecanismo de banco de dados subjacentes sejam confiáveis, tenham alto desempenho e estejam seguros e atualizados. A maioria dessas atualizações é realizada enquanto a instância do Cloud SQL está em execução. No entanto, algumas atualizações do sistema exigem uma breve interrupção do serviço. Essas atualizações são chamadas de manutenção.

A manutenção atualiza o sistema operacional e o mecanismo de banco de dados. Como essas atualizações exigem que a instância seja reiniciada, elas geram um período de inatividade. As atualizações de manutenção oferecem os seguintes benefícios:

  • Recursos do Cloud SQL. Para lançar novos recursos, o mecanismo de banco de dados é atualizado, e novos plug-ins são instalados.

  • Upgrades da versão do banco de dados. O provedor do software de banco de dados que desenvolve o MySQL lança novas versões secundárias várias vezes por ano. Cada nova versão contém correções de bugs, patches de segurança, melhorias de desempenho e novos recursos de banco de dados. Para encontrar a versão secundária mais recente compatível com o Cloud SQL para MySQL, consulte as notas da versão ou as Versões do banco de dados e políticas de versão. As instâncias do Cloud SQL são atualizadas para a versão mais recente do banco de dados logo após o lançamento. Assim, você sempre executa o software de banco de dados mais recente.

  • Patches do sistema operacional. Estamos sempre monitorando vulnerabilidades de segurança recém-identificadas no sistema operacional. Após a descoberta, aplicamos um patch ao sistema operacional para proteger você contra novos riscos.

Impacto da manutenção

Durante um evento de manutenção, uma instância do Cloud SQL para MySQL perde a conectividade, em média, por menos de 60 segundos.

A período de inatividade pode ser maior para instâncias que têm alta atividade no início da manutenção ou conjuntos de dados muito grandes. O Cloud SQL costuma programar a manutenção para uma vez em um intervalo de meses.

Você pode tomar medidas para garantir que a manutenção tenha o mínimo impacto possível em suas operações usando nossas configurações de manutenção e tornando seus sistemas resilientes a erros transitórios.

Configurações de manutenção

O Cloud SQL permite configurar atualizações de manutenção usando um conjunto de configurações de manutenção.

É possível configurar a manutenção para que seja programada para momentos em que um breve período de inatividade afeta menos os aplicativos. Para cada instância do Cloud SQL, configure o seguinte:

  • Janela de manutenção. O dia da semana e o horário em que o Cloud SQL programa a manutenção. As janelas de manutenção duram uma hora. Saiba como configurar uma janela de manutenção.

  • Ordem de atualização. Define a ordem em que a instância do Cloud SQL é atualizada em relação a outras instâncias da mesma região. A ordem de atualização pode ser definida como Any, Earlier ou Later. As instâncias Later são atualizadas uma semana após as instâncias Earlier com a mesma janela de manutenção na mesma região. Defina a ordem de atualização ao configurar uma janela de manutenção.

  • Período de bloqueio de manutenção. Um intervalo de dias em que o Cloud SQL não programa manutenções. Os períodos de bloqueio de manutenção podem ser de até 90 dias. Saiba como configurar um período de bloqueio de manutenção.

Exemplo de manutenção

Suponha que você trabalhe como desenvolvedor em um varejista gerenciando um serviço de carrinho de compras. Você tem uma instância do Cloud SQL para um ambiente de produção e uma segunda para um ambiente de preparo. Você quer que a manutenção ocorra no momento em que a instância processa a menor quantidade de tráfego, que é por volta da meia-noite aos domingos. Você também quer pular a manutenção durante a movimentada temporada de compras de fim de ano.

Nesse caso, defina as configurações de manutenção da instância de produção como:

  • Janela de manutenção: domingos entre 0h e 1h ET
  • Ordem de atualização: Later
  • Período de bloqueio de manutenção: 1º de novembro a 15 de janeiro.

As configurações de manutenção do ambiente de preparo seriam idênticas, mas a ordem de atualização seria definida como Earlier. Isso garante a execução de testes de aceitação operacional para uma versão de manutenção no ambiente de preparo pelo menos sete dias antes de a manutenção chegar à produção. Se algo der errado no ambiente de preparo, você terá tempo para diagnosticar e corrigir o problema. Assim, o ambiente de produção não será afetado.

Notificações de manutenções futuras

Você pode optar por receber uma notificação sobre uma manutenção futura no e-mail pelo menos uma semana antes da data programada. Se quiser definir um filtro de e-mail para notificações, o título do e-mail precisará ser Próxima manutenção da instância do Cloud SQL instancename.

As notificações de manutenção não são enviadas por padrão. Você precisa optar por receber as notificações de manutenção. Também é necessário selecionar uma janela de manutenção para poder receber as notificações.

As notificações são enviadas para o endereço de e-mail associado à sua Conta do Google. Não é possível configurar um alias de e-mail personalizado (por exemplo, um alias de e-mail de equipe).

Ative as notificações de manutenção de todas as instâncias do Cloud SQL que tiverem janelas de manutenção em um projeto específico. Você receberá uma notificação por instância. As notificações de manutenção futura não são enviadas para réplicas de leitura.

Você também pode ver informações sobre manutenções futuras no Console do Google Cloud.

  • Na lista Instâncias da coluna Manutenção. Se a manutenção estiver programada, você verá a data e a hora de início. Filtre a lista de instâncias usando o termo manutenção para encontrar todas as instâncias programadas para manutenção. A coluna Manutenção só é exibida quando há manutenção programada para uma ou mais instâncias no projeto. Se nenhuma manutenção estiver programada, a coluna permanecerá oculta.
  • Na página Detalhes da instância no painel Manutenção. Se a manutenção estiver programada, em Próxima, você verá a data e hora de início.
  • Na página ATIVIDADE no Console do Google Cloud, é possível ver uma lista de instâncias programadas para manutenção. Se a manutenção estiver programada, as instâncias terão a mensagem Manutenção do SQL e a data e hora de início da manutenção.

Como reprogramar uma manutenção

Se você tiver uma janela de manutenção para a instância, é possível reprogramar a manutenção a qualquer momento antes do horário programado atualmente. Por exemplo, se um novo serviço for lançado durante o período de manutenção atual, talvez seja melhor reprogramar a janela de manutenção para alguns dias após o lançamento.

É possível reprogramar a manutenção várias vezes, desde que não seja mais de uma semana após o horário programado originalmente.

Você verá algumas opções de programação para a nova janela de manutenção:

  • Aplicar as atualizações imediatamente. É possível aplicar as atualizações à instância imediatamente em vez de esperar a janela de manutenção programada. Nesse caso, a manutenção geralmente começa em cinco minutos.
  • Reprogramar para outro horário. É possível adiar um evento de manutenção programado de duas maneiras:

    • Próxima janela disponível. Isso adia a manutenção em uma semana.
    • Horário específico. Isso permite que você escolha qualquer horário específico dentro de uma semana após o horário de manutenção programado originalmente.

Saiba mais em Como reprogramar manutenções planejadas.

Como funciona a manutenção

Para que a manutenção seja breve, o Cloud SQL usa um fluxo de trabalho de failover de manutenção que é muito parecido com o nosso fluxo de trabalho de failover automático para instâncias altamente disponíveis.

Resumindo, são estas etapas:

  1. configurar uma VM atualizada com o novo software;
  2. interromper a VM original;
  3. iniciar a VM atualizada;
  4. mudar o disco e o IP estático para a VM atualizada.

Siga as guias abaixo para ver detalhes do fluxo de trabalho, incluindo pré e pós-manutenção.

Pré-manutenção

Antes da manutenção, o cliente se comunica com a VM original por um endereço IP estático. Os dados são armazenados em um disco permanente anexado à VM original. Neste exemplo, a instância do Cloud SQL tem alta disponibilidade configurada, o que significa que outra VM está em espera para assumir o controle no caso de uma interrupção não planejada. A instância do Cloud SQL está veiculando tráfego para o aplicativo.

Diagrama mostrando o estado de pré-manutenção

Etapa 1

Configurar a nova VM.

Uma nova máquina virtual (VM, na sigla em inglês) é configurada com as versões mais recentes do software do banco de dados e do sistema operacional (SO) da VM. O SO atualizado da VM é iniciado. A essa altura, o mecanismo de banco de dados ainda não foi iniciado. Para as instâncias altamente disponíveis, uma nova VM em espera também é configurada.

O período total de inatividade é substancialmente reduzido ao instalar a atualização de software em outra VM enquanto a instância original do Cloud SQL ainda está exibindo tráfego.

Diagrama mostrando a configuração da VM

Etapa 2

Encerrar a VM original.

O mecanismo de banco de dados é encerrado. Assim, é possível remover o disco da VM original e anexá-lo à VM atualizada. Antes de ser encerrado, o mecanismo de banco de dados aguarda alguns segundos para que as transações em andamento sejam confirmadas e as conexões atuais sejam drenadas. Depois disso, todas as transações abertas ou de longa duração são revertidas. O banco de dados para de aceitar novas conexões e as que já existem são eliminadas. A instância fica indisponível e o tempo de inatividade de manutenção é iniciado.

Diagrama da instância após o failover

Etapa 3

Mudar para a VM atualizada.

O disco é removido da VM original e anexado à VM atualizada. O endereço IP estático é reconfigurado para apontar para a VM atualizada. Isso garante que o aplicativo use o mesmo endereço IP de antes da manutenção. O cache do banco de dados é removido com a VM original, isto é, o cache do banco de dados é efetivamente limpo durante a manutenção.

Diagrama de alternância para VM atualizada

Etapa 4

Iniciar a VM atualizada.

O mecanismo de banco de dados atualizado é iniciado no disco de dados. O uso de um disco de dados comum garante que todas as transações gravadas na instância original antes da manutenção ainda estejam presentes no banco de dados atualizado após a manutenção. Se alguma transação incompleta não terminar de reverter durante o encerramento do banco de dados, ele passará automaticamente pela recuperação de falhas para garantir que seja restaurado para um estado utilizável.

Diagrama de inicialização da VM atualizada

Pós-manutenção

Após a etapa 4, a instância do Cloud SQL está disponível para aceitar conexões e retorna para veicular o tráfego para o aplicativo.

Para o aplicativo, com exceção do software atualizado, a instância do Cloud SQL parece a mesma. O aplicativo ainda se conecta à instância do Cloud SQL usando o mesmo endereço IP estático, e a VM atualizada é executada na mesma zona que a VM original. Todos os dados gravados no banco de dados original são preservados.

Diagrama pós-manutenção

Perguntas frequentes sobre manutenção

Como a manutenção afeta as instâncias de failover de alta disponibilidade legadas?

As instâncias de failover de alta disponibilidade legadas são removidas para atualizações de manutenção. Elas recebem as atualizações pouco antes da instância principal. Não é possível definir uma janela de manutenção diretamente em uma instância de failover de alta disponibilidade legada porque ela compartilha a janela de manutenção com a instância principal.

O tempo de inatividade com manutenção é contabilizado no SLA?

O tempo de inatividade com manutenção normal não é contabilizado no SLA. No entanto, o Cloud SQL inclui o tempo de inatividade com manutenção urgente no SLA.

Como a manutenção afeta as réplicas de leitura?

As réplicas de leitura não observam as janelas de manutenção e podem receber atualizações de manutenção a qualquer momento. Não há garantia de quando as atualizações ocorrerão. As atualizações podem coincidir ou ocorrer muito próximas da atualização da instância principal.

Posso cancelar uma manutenção programada?

Não é possível cancelar uma janela de manutenção programada, mas é possível reprogramá-la.

Limitações da reprogramação

O que você precisa saber sobre a reprogramação:

  • É necessário reprogramar a manutenção pelo menos 24 horas antes do evento de manutenção programado originalmente.

  • É possível reprogramar a manutenção de uma ou várias instâncias no seu projeto. No entanto, isso precisa ser feito com uma instância por vez. A reprogramação em massa não está disponível.

  • É possível reprogramar a manutenção para um horário que se enquadre em um período de bloqueio de manutenção ou mesmo fora do período, desde que o tempo fique dentro da limitação de reprogramação de uma semana.

  • Se uma operação de manutenção estiver em andamento, o reagendamento será adiado até a conclusão da operação.

O que acontece se o evento de manutenção for cancelado?

Se o Cloud SQL cancelar um evento de manutenção, você receberá uma notificação sobre o cancelamento da manutenção com antecedência, se possível.

Você receberá uma nova notificação de manutenção futura quando o evento de manutenção for reprogramado.

Limitações do período de bloqueio de manutenção

Veja o que você precisa saber sobre os períodos de bloqueio de manutenção:

  • É possível ter um período de bloqueio de manutenção mesmo se você não tiver janelas de manutenção configuradas para sua instância. Os período de bloqueio de manutenção podem variar de 1 a 90 dias.

  • O período de manutenção de negação tem precedência sobre qualquer janela de manutenção programada. Se houver conflito entre o momento de uma janela de manutenção e o período de manutenção de negação, o período modificará a janela.

  • Períodos de bloqueio de manutenção e programação relativa são recursos independentes. Um período de bloqueio de manutenção especificado em uma instância do Earlier não afeta a programação da instância Later. As notificações não serão enviadas se a programação de manutenção estiver dentro do período de negação de manutenção para instâncias Earlier ou Later.

  • Quando um período de bloqueio é definido em uma instância principal, a manutenção de todas as réplicas associadas a ela também é bloqueada. Por exemplo, uma instância principal localizada na região A tem três réplicas de leitura: duas na região A e outra na região B. Ao definir um período de bloqueio na instância principal, a manutenção de cada uma das réplicas, incluindo a réplica da região B, deixa de ser realizada até que o período de bloqueio da instância principal expire.

  • Se um período de manutenção de negação for definido após a manutenção, de modo que esse período se sobreponha ao tempo de manutenção programado, a atualização é ignorada.

  • É possível definir o período de bloqueio de manutenção como recorrente todos os anos, sem incluir o ano nos parâmetros de data de início e término. Se o ano for especificado, o período de bloqueio de manutenção será definido apenas para esse ano.

  • É possível definir vários períodos de negação de manutenção em um ano. É recomendável evitar encadeamentos de períodos de negação para pular eventos consecutivos de manutenção programada. É importante manter-se atualizado sobre a manutenção do Cloud SQL para garantir que a instância opere de maneira confiável. Normalmente, a manutenção do Cloud SQL é programada uma vez em um intervalo de alguns meses.

  • Para garantir a confiabilidade do serviço, o Cloud SQL poderá notificar os usuários com instâncias que executam versões de manutenção com mais de 12 meses para que o próximo lançamento de manutenção seja necessário.

  • Quando o período de manutenção de negação termina, o comportamento de manutenção regular é retomado.

Como minimizar o impacto da manutenção

Em geral, o Google Cloud recomenda que os usuários que executam aplicativos na nuvem tornem os sistemas resilientes a erros transitórios, que são problemas passageiros de comunicação entre serviços causados por indisponibilidade temporária. Os erros transitórios ocasionais são inevitáveis na nuvem.

Alguns dos erros transitórios que ocorrem durante a manutenção são quedas de conexão e transações em andamento com falha. Se você criar os sistemas e ajustar os aplicativos para serem resilientes a erros transitórios, também será possível reduzir os impactos da manutenção do banco de dados.

Para minimizar o impacto das quedas de conexão, use pools de conexões. As conexões entre o pooler e o banco de dados são eliminadas durante a manutenção, mas as conexões entre o aplicativo e o pooler são preservadas. Assim, o trabalho de restabelecer as conexões fica transparente para o aplicativo e é transferido para o pooler de conexões.

Para reduzir as falhas de transação, limite o número de transações de longa duração. Reescrever consultas para que fiquem menores e mais eficientes não apenas reduz o período de inatividade da manutenção, mas também melhora o desempenho e a confiabilidade do banco de dados.

Para se recuperar com eficiência de quedas de conexão e falhas de transação, gerencie as conexões de banco de dados com eficiência. Você pode criar uma lógica de repetição de consulta e de conexão em espera exponencial nos aplicativos e poolers de conexão. Se uma consulta falhar ou uma conexão cair, o sistema instituirá um período de espera antes de tentar novamente. Esse período aumenta a cada nova tentativa subsequente. Por exemplo, o sistema pode esperar poucos segundos até a primeira tentativa, mas até um minuto para a quarta tentativa. Esse padrão garante que essas falhas sejam corrigidas sem sobrecarregar o serviço.

Outras soluções criativas também podem minimizar os impactos de manutenção, desde o uso de scripts para pré-aquecer o cache do banco de dados após a manutenção até a simplificação do número de tabelas em bancos de dados. Recomendamos seguir as práticas recomendadas e as diretrizes operacionais de gerenciamento de banco de dados para garantir que a manutenção ocorra sem problemas.

Manutenção urgente

Em casos muito raros, o Cloud SQL pode precisar programar a manutenção independentemente das configurações de manutenção para aplicar patches em problemas graves de estabilidade ou vulnerabilidades urgentes. Essas atualizações são lançadas rapidamente, e o Cloud SQL as considera como período de inatividade no SLA.

A seguir