Captura instantânea de RDS: quanto tempo ocorre a suspensão de E / S?

1

Como estamos confiando no backup manual do RDS Postgresql para nossa estratégia de backup, encontramos o problema com o possível tempo de inatividade da instância do RDS (AZ único) durante a criação do instantâneo. De acordo com a AWS:

Creating this DB snapshot on a Single-AZ DB instance results in a brief I/O suspension that can last from a few seconds to a few minutes, depending on the size and class of your DB instance.

que não é muito claro como podemos ter certeza se a E / S da instância de banco de dados está funcionando normalmente durante o período de snapshot, como se o banco de dados estivesse inativo por um curto período de tempo, gostaríamos de parar nosso servidor web correspondente ou levá-lo fora do balanceador de carga para garantir que nenhuma interrupção de conexão possa acontecer do lado do cliente.

O que nos fez pensar muito é:

  • O banco de dados realmente tem tempo de inatividade durante o snapshot, a AWS diz apenas sobre "suspensão de E / S" e "latências"? Eu li em algum lugar que o tempo de inatividade dura por curto período (de poucos segundos a minuto) apenas durante a inicialização do instantâneo, podemos saber se esse tempo de inatividade já passou e a instância do banco de dados está pronta para servir (enquanto seu snapshot ainda está sendo criado)? >

  • Qual é a prática recomendada geral para lidar com essas suspensões de I / O? Como parece acontecer mesmo com o backup automatizado, isso significa que o site poderia ter um tempo de inatividade todos os dias quando a criação de instantâneos do banco de dados estivesse em andamento?

por Arcobaleno 05.07.2018 / 08:48

1 resposta

0

A resposta vem da compreensão de como funciona o instantâneo.

No início de um instantâneo, uma mensagem (comando) é enviada para todos os aplicativos para chegar a um estado consistente e liberar os dados necessários para o disco.

O tempo que esse flush demora depende de quantos dados estão na memória, em que estado os dados estão e quanto tempo leva para gravar os dados no disco.

Quando cada aplicativo compatível com snapshots conclui sua preparação para o congelamento, o processo de encaixe então encaixa os sistemas de arquivos, o que significa que, se mais blocos de dados forem gravados, será feita uma cópia primeiro para o processo de backup (COW - Copy on Escrever). Então a mensagem / comando de descongelamento (resume) é enviado para cada aplicação.

Para um banco de dados pouco usado, esse processo de congelamento / descongelamento pode levar apenas algumas centenas de milissegundos. Para um banco de dados grande com GBs de memória que precisam ser liberados para o disco, alguns segundos serão necessários.

Durante o tempo em que o ciclo de congelamento / descongelamento está ocorrendo, a E / S do disco para novas solicitações do usuário é suspensa. O banco de dados ainda está em execução, mas todas as solicitações serão pausadas enquanto os discos / sistemas de arquivos estão sincronizados. Tudo recomeça com o recebimento da mensagem de descongelamento.

Para bancos de dados Master-Slave, o mestre não é afetado. O instantâneo será tirado em um escravo. Esse é um dos ótimos recursos do AWS RDS.

    
por 12.07.2018 / 10:04