Acerca dos instantâneos RDB

Esta página apresenta uma vista geral das cópias instantâneas RDB para o Memorystore for Redis. Esta página pressupõe que conhece os instantâneos RDB do Redis de código aberto e a funcionalidade de importação/exportação do Memorystore.

Para saber como ativar, desativar e monitorizar as cópias instantâneas da RDB, consulte o artigo Gerir cópias instantâneas da RDB.

O Memorystore for Redis é usado principalmente como uma cache na memória. Quando usa o Memorystore como uma cache, a sua aplicação pode tolerar a perda de dados da cache ou pode repovoar muito facilmente a cache a partir de um armazenamento persistente. No entanto, existem alguns exemplos de utilização em que o tempo de inatividade de uma instância do Memorystore ou uma perda completa de dados da instância pode causar longos tempos de inatividade da aplicação.

Recomendamos que use o nível padrão como o mecanismo principal para alta disponibilidade. Além disso, a ativação de instantâneos de RDB em instâncias de nível padrão oferece proteção adicional contra falhas que podem causar limpezas da cache. O nível padrão oferece uma instância altamente disponível com várias réplicas e permite uma recuperação rápida através da ativação pós-falha automática se a instância principal falhar.

Em alguns cenários, também pode querer garantir que os dados podem ser recuperados a partir de cópias de segurança de instantâneos em caso de falha catastrófica das instâncias do nível Standard. Nestes cenários, as cópias de segurança automáticas e a capacidade de restaurar dados a partir de instantâneos RDB podem oferecer proteção adicional contra a perda de dados. Com os instantâneos RDB ativados, se necessário, é feita uma recuperação a partir do instantâneo RDB mais recente.

Os instantâneos RDB são adequados para exemplos de utilização que podem tolerar alguma quantidade de dados desatualizados após a recuperação. Também pode usar instantâneos da RDB para automatizar a cópia de segurança e a recuperação de instâncias do nível básico.

Vista geral dos instantâneos RDB

A funcionalidade de instantâneos RDB tem o seguinte comportamento:

  • Armazena instantâneos completos num determinado momento a intervalos especificados pelo utilizador no armazenamento persistente.

  • Escolhe a frequência e a programação das capturas de ecrã de rotina. O intervalo mínimo de instantâneos é de 1h e o máximo é de 24h.

  • As instâncias do nível básico recuperam dados do instantâneo mais recente sempre que uma instância é reiniciada devido a uma falha, é submetida a uma operação de escalabilidade ou é submetida a uma atualização para a versão OSS Redis da sua instância.

  • Por predefinição, as instâncias do nível Standard recuperam dados da réplica e não de uma imagem instantânea. No entanto, as instâncias do nível padrão recuperam dados de uma captura de ecrã se não estiver disponível uma réplica e a instância principal e a réplica sofrerem um reinício.

  • Não adiciona custos adicionais à faturação da instância.

Comportamento adicional

  • Os instantâneos são usados para a recuperação de instâncias e não estão disponíveis para restauros manuais. Em qualquer momento, apenas a última cópia de segurança bem-sucedida está disponível para recuperação. Além das capturas instantâneas RDB, pode usar a opção Exportar e importar para fazer uma cópia de segurança e restaurar manualmente os seus dados.

  • Numa instância de nível padrão, a captura de ecrã é feita na réplica para minimizar a utilização de memória e CPU na instância principal. Os instantâneos nunca são tirados do nó principal.

Restrições

  • Disponível em instâncias do Memorystore for Redis que usam a versão 5.0 ou superior do Redis.

  • Se a sua instância tiver muitas chaves (cerca de 200 milhões ou mais), as capturas instantâneas e as recuperações do RDB podem ser lentas. Neste volume de chaves, o próprio servidor Redis pode ser o fator limitativo que abranda as capturas instantâneas e as recuperações.

Agendar instantâneos de RDB

Quando ativa as cópias instantâneas RDB durante a criação da instância, tem de especificar um intervalo de cópias instantâneas. Também tem a opção de especificar uma hora de início. Em conjunto, estes parâmetros definem a programação diária dos resumos. Os intervalos que pode definir são: 1h, 6h, 12h e 24h. Por exemplo, se definir a hora de início para as 04:00 e o intervalo para 1 hora, as capturas de ecrã começam às 04:00 no dia em que são ativadas e continuam de hora a hora a partir daí.

Se não for especificada uma hora de início, a primeira captura instantânea é tirada assim que possível, e o intervalo é respeitado. Por exemplo, com uma hora de início não especificada e um intervalo de 1 hora, o instantâneo pode começar às 06:13 e continuar às 07:13, 08:13, etc.

Se for especificada uma hora de início, o horário diário é sempre respeitado se as cópias instantâneas forem sempre bem-sucedidas e não demorarem mais do que o intervalo de cópia de segurança especificado.

No entanto, o acionamento da captura instantânea com base na programação diária é feito com base no melhor esforço. A programação pode desviar-se da programação inicialmente determinada por vários motivos:

  • Se um instantâneo falhar ou demorar mais tempo do que o intervalo de instantâneos especificado a ser concluído, o instantâneo seguinte começa imediatamente após a conclusão do instantâneo atual.

    • Para evitar que a captura instantânea seja executada continuamente e sobrecarregue a instância, recomendamos que defina um intervalo suficientemente longo para permitir que a captura instantânea seja concluída.
  • Se já estiver em curso um resumo num momento alinhado com a programação diária, esse resumo é concluído e o momento do resumo seguinte é calculado apenas com base no intervalo desde o início do último resumo bem-sucedido.

Ajustar o horário existente

Pode deparar-se com cenários em que quer pausar temporariamente a criação de instantâneos RDB durante um determinado período. Isto pode ser para garantir que não existem impactos no desempenho durante eventos críticos ou para desativar temporariamente as capturas instantâneas para resolver problemas de desempenho.

Para parar temporariamente a criação de resumos durante um curto período, pode ajustar a hora de início para uma data futura. Depois de ajustar a hora de início para uma data futura, a próxima análise rápida só começa nessa data. Se o fizer, o último instantâneo é retido durante, pelo menos, 7 dias e é usado em caso de recuperação.

Para saber como ajustar as programações de instantâneos, consulte o artigo Ajustar a programação de instantâneos.

Comportamento de recuperação

As instâncias do Redis de nível básico acionam uma recuperação sempre que a instância é reiniciada. As operações comuns que acionam reinícios são a alteração da escala e a atualização da versão da sua instância. As cópias instantâneas da RDB preservam os dados da instância do nível básico durante estas operações que causam reinícios, manutenção planeada e falhas imprevistas do sistema.

As instâncias do Redis de nível padrão fazem failover para uma réplica como mecanismo de recuperação principal, em vez de carregar a partir de um instantâneo. Uma instância de nível padrão é recuperada a partir do instantâneo quando a restauração a partir de uma réplica falha.

Consistência dos dados na recuperação

Quando ativadas, as cópias instantâneas RDB fazem o melhor esforço para garantir que as cópias de segurança ocorrem no intervalo especificado, mas isto não pode ser garantido. As capturas instantâneas podem falhar por vários motivos. Veja as práticas recomendadas para saber como configurar e monitorizar instâncias quando as cópias instantâneas de RDB estão ativadas.

Se a captura instantânea falhar consecutivamente em vários intervalos, a última cópia de segurança disponível pode estar arbitrariamente desatualizada.

A perda de dados no pior cenário para uma recuperação a partir de um instantâneo é a soma do intervalo especificado desde o início do último instantâneo válido e o tempo necessário para guardar o instantâneo seguinte no armazenamento. No caso de um incidente de recuperação, use a métrica last_success_age para ver o período de perda de dados.

Recomendamos que defina alertas para detetar falhas de instantâneos agendados e tome medidas corretivas. Para saber mais sobre como definir alertas, consulte o artigo Monitorizar instantâneos.

Tempo de recuperação

A instância fica indisponível enquanto a instância é recuperada a partir de um instantâneo. O tempo de recuperação depende do tamanho da captura de ecrã. Para compreender o tempo de recuperação previsto, verifique a métrica RDB recovery remaining time através do Cloud Monitoring na Google Cloud consola.

Mitigar a recuperação lenta

Por vezes, a recuperação a partir de uma foto pode demorar mais do que o esperado. Pode ter de tomar medidas para voltar a ligar a sua aplicação ao Redis o mais rapidamente possível.

Nesta circunstância, pode criar uma nova instância do Redis e direcionar o tráfego da aplicação para a mesma. Em seguida, pode transferir os dados restaurados para a nova instância assim que a instância original for recuperada.

Falha no instantâneo e falha na recuperação

Falha no instantâneo

Qualquer falha no instantâneo é comunicada ao Cloud Monitoring e o instantâneo é repetido imediatamente. As falhas consecutivas de instantâneos aumentam a quantidade de dados perdidos em caso de recuperação, porque os dados recuperados ficam cada vez mais desatualizados. Para obter informações sobre como detetar e resolver problemas de falhas de instantâneos, consulte o artigo Monitorização de instantâneos.

Falha na recuperação

As falhas de recuperação são raras, mas podem acontecer. Se ocorrer uma falha na recuperação, a instância é recuperada sem dados.

Práticas recomendadas

Para obter os melhores resultados ao fazer uma cópia de segurança da sua instância com instantâneos RDB, deve seguir as práticas recomendadas descritas abaixo:

Gestão de memória

Os resumos do RDB usam um processo de ramificação e um mecanismo de "cópia na gravação" para tirar um resumo da instância. Consoante o padrão de escritas na instância, a memória usada da instância aumenta à medida que as páginas afetadas pelas escritas são copiadas. No pior dos casos, a pegada de memória pode ser o dobro do tamanho dos dados na instância.

Para garantir que a instância tem memória suficiente para concluir a captura de ecrã, deve definir maxmemory-gb para 80% da capacidade da instância, para que 20% seja reservado para custos gerais. Consulte as práticas recomendadas de gestão de memória para saber mais. Esta sobrecarga de memória, além das capturas de ecrã de monitorização, ajuda a gerir a sua carga de trabalho para ter capturas de ecrã bem-sucedidas.

Instantâneos desatualizados

A recuperação da instância a partir de um instantâneo desatualizado pode causar problemas de desempenho na sua aplicação, uma vez que tenta conciliar uma quantidade significativa de chaves desatualizadas ou outras alterações à sua base de dados, como uma alteração do esquema.

Se considerar que a sua captura instantânea está demasiado desatualizada ou a sua instância sofreu outras alterações importantes difíceis de conciliar com a captura instantânea, pode desativar e, em seguida, reativar as capturas instantâneas RDB. Esta ação elimina os instantâneos existentes, o que lhe permite evitar a recuperação a partir de um instantâneo desatualizado.

Para monitorizar instantâneos desatualizados, defina um alerta nas last_statusmétricas de instantâneos da RDB last_success_agee da RDB.

Recuperação prolongada a partir de um instantâneo

Recomendamos que defina um alerta para a métrica redis.googleapis.com/server/uptime para receber uma notificação se a sua instância ficar indisponível.

Se a sua instância estiver indisponível e a recuperação a partir de uma captura de ecrã demorar demasiado tempo, pode criar uma nova instância do Redis e direcionar o tráfego para esta. Assim que a instância do Redis original for recuperada, pode transferir os dados restaurados para a nova instância.

Impacto no desempenho dos resumos RDB

Consoante o padrão de carga de trabalho, as imagens instantâneas RDB podem afetar o desempenho da instância e aumentar a latência das suas aplicações.

Consoante a quantidade de potencial perda de dados que a sua aplicação pode tolerar, pode minimizar o impacto no desempenho das capturas instantâneas de RDB agendando-as para serem executadas durante períodos de baixo tráfego de instâncias.

Use a hora de início e o intervalo para agendar as capturas de ecrã para as horas necessárias. Por exemplo, se a carga for muito baixa entre as 01:00 e as 04:00, pode definir a hora de início para as 03:00 e o intervalo para 24 horas.

Se o seu sistema tiver uma carga constante e exigir instantâneos frequentes, deve avaliar cuidadosamente o impacto no desempenho e ponderar as vantagens de usar instantâneos da RDB para a carga de trabalho.

Resumos de monitorização

É importante monitorizar os resumos e definir alertas para resumos com falhas. Os instantâneos com falhas podem indicar uma instância sobrecarregada que pode continuar a ter dificuldades em recuperar do instantâneo.

Para ver uma lista de métricas disponíveis para instantâneos de monitorização, consulte o artigo Métricas de instantâneos da RDB. Para receber um aviso de falha de um instantâneo, defina um alerta para a métrica last_status do instantâneo RDB. Também pode usar a Google Cloud consola para verificar se existem falhas.

Monitorizar o impacto no desempenho

Pode monitorizar o impacto no desempenho que uma captura instantânea tem na sua instância do Memorystore visualizando as métricas disponíveis através do Cloud Monitoring, como a utilização da CPU, a utilização da memória, etc. Se notar uma redução no desempenho, pode usar a métrica in_progress da captura instantânea do RDB para determinar se uma captura instantânea estava em curso quando foram detetados problemas de desempenho.

O que se segue?