Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Instantâneo do volume do EBS usado para replicação


Embora seja uma boa ideia bloquear o banco de dados e congelar o sistema de arquivos ao iniciar o instantâneo, a chamada real da API para iniciar o instantâneo leva uma fração de segundo, para que seu banco de dados e sistema de arquivos não sejam bloqueados/congelados por muito tempo.

Dito isto, há algumas outras considerações que você não mencionou:

  1. Ao tentar criar o bloqueio no banco de dados, talvez seja necessário aguardar a conclusão de outras instruções antes que o bloqueio seja concedido. Durante esse tempo, seu bloqueio pendente pode esperar mais instruções até que você obtenha e libere o bloqueio. Isso pode causar interrupções no fluxo de instruções em seu banco de dados de produção.

  2. Depois de iniciar a criação do snapshot, seu aplicativo/banco de dados fica livre para usar o sistema de arquivos no volume, mas se você tiver muitas gravações, poderá ter um iowait alto, às vezes o suficiente para criar uma lentidão perceptível em seu aplicativo. A razão para isso é que o processo de instantâneo em segundo plano precisa copiar um bloco para o S3 antes de permitir uma gravação nesse bloco no volume ativo.

Eu resolvo o primeiro problema solicitando um bloqueio e expirando se não for concedido rapidamente. Eu então espero um pouco e continuo tentando novamente até conseguir o cadeado. Tempos limite apropriados e atraso de repetição podem variar para diferentes cargas de banco de dados.

Eu resolvo o segundo problema executando os instantâneos frequentes e consistentes no escravo em vez do mestre, exatamente como você propôs. Ainda recomendo executar instantâneos ocasionais no mestre simplesmente para melhorar sua durabilidade intrínseca (uma propriedade profunda do EBS), mas esses instantâneos não precisam ser executados com bloqueio ou congelamento, pois você não os usará para backups.

Também recomendo o uso de um sistema de arquivos que suporte a liberação e congelamento (XFS). Caso contrário, você está fazendo um snapshot de tabelas bloqueadas no MySQL que podem ainda não ter todos os seus blocos no volume do EBS ou outras partes do sistema de arquivos podem ser modificadas e inconsistentes no snapshot.

Se você estiver interessado, publiquei um software de código aberto que executa as melhores práticas que coletei relacionadas à criação de instantâneos consistentes do EBS com MySQL e XFS (ambos opcionais).

Para responder à sua última pergunta, bloquear tabelas no mestre não interromperá a replicação. No meu software de instantâneo, também libero as tabelas com bloqueio de leitura para garantir que tudo esteja no disco que está sendo instantâneo e adiciono a palavra-chave "LOCAL" para que a descarga não seja replicada para nenhum escravo em potencial.