Estou executando o Mongodb na instância AWS EC2. Dados/log/e diário são armazenados em um volume separado, formatado como xfs. Atualmente estamos parando a instância do mongodb para tirar um snapshot, mas lendo isto: https://docs.mongodb.com/ecosystem/tutorial/backup-and-restore-mongodb-on-amazon-ec2/ aparentemente não há necessidade de interromper o serviço durante o instantâneo, pois o diário está ativado. Estou correcto? Posso criar um instantâneo consistente mesmo se o serviço estiver em execução?
Responder1
Em geral, não confie em nenhum procedimento de backup até que você tenha confirmado a integridade de uma restauração a partir de uma mídia de longo prazo.
Você já tem a capacidade de fazer um backup on-line da camada do sistema de armazenamento. Neste caso, com volumes EBS ou Linux LVM. O problema é deixar o banco de dados em um estado consistente.
Um backup online é possível com ou sem diário. Em ambos os casos, a maneira do mongo suspender as gravações do banco de dados é fsync e lock, conforme descrito nesse tutorial.
Sem um diário, é difícil dizer quais dados são duráveis no disco e quais estão armazenados em buffer e ainda não confirmados. fsync e lock estabelecem um ponto no tempo e interrompem qualquer gravação em andamento até que o backup seja concluído.
O bloqueio também é necessário com vários discos, onde (neste sistema de armazenamento) os instantâneos não são consistentes entre si. Suspender gravações durante o backup significa que o disco /dev/sdf
não estará em um ponto de tempo ligeiramente diferente em comparação com o /dev/sdg
.
Mongo afirma que se você tiver apenas umsolteirodisco, eterum diário, você não precisa sincronizar e bloquear. Presumivelmente, o instantâneo do EBS é um ponto no tempo suficientemente bom e consistente com falhas, e a recuperação direta do diário pode corrigir quaisquer gravações incompletas.