Primeiro, se você tirar uma foto, ela incluirá o oplog - o oplog é apenas uma coleção limitada que está no banco de dados local. Os instantâneos retornarão a um ponto no tempo e, supondo que você tenha o registro em diário ativado (ele está ativado por padrão), não será necessário fazer nada de especial para que o instantâneo funcione como um backup.
O único requisito absoluto é que o instantâneo do EBS tenha que ser recente o suficiente para estar dentro do seu > oplog - que é a última operação (mais recente) registrada no oplog de backup de captura instantânea também deve estar no oplog do primário atual para que eles possam encontrar um ponto comum. Se for esse o caso, funcionará algo assim:
- Você restaura um secundário de um backup de snapshot do EBS
- O
mongod
inicia, procura (e aplica) todos os arquivos de diário relevantes - Em seguida, o secundário se conecta ao primário e encontra um ponto comum nos dois oplogs
- Quaisquer operações subsequentes do primário são aplicadas na RECUPERAÇÃO secundária
- Quando o secundário se aproxima o suficiente, ele se move para o estado SECONDARY e o backup é concluído
Se o instantâneo não é recente o suficiente, então ele pode ser descartado - sem um ponto comum no oplog, o secundário terá que resync do zero de qualquer maneira.
Para responder às suas perguntas específicas:
Do I need to record oplogs and use those in conjunction to restore after a failure?
Como explicado acima, se você instantâneo, você já está fazendo o backup do oplog
Should I spin up another instance within the replica set specifically for backups and snapshot that vs. taking snapshots of primary and secondary? If so, we're back to the oplog issue aren't we?
Não há problemas de oplog além do ponto / janela comum que eu mencionei acima. Algumas pessoas optam por ter um secundário (geralmente oculto ) este propósito para evitar adicionar carga a um nó normal. Nota: até mesmo um membro oculto recebe um voto, por isso, se você adicionou um para fins de backup, você pode remover o árbitro da sua configuração, você ainda teria 3 membros votantes.
Should I snapshot each replica volume and rely on on the replica set completely to cover the time between failure and the last snapshot?
Todos os membros de um conjunto de réplicas devem ser idênticos - os dados são os mesmos, qualquer secundário pode se tornar primário etc. - eles não são escravos, cada membro do conjunto de réplicas contém o oplog completo e todos os dados.
Assim, tirar vários instantâneos (supondo que você confie no processo) será redundante (é claro que você pode querer essa redundância). E sim, toda a intenção da funcionalidade do conjunto de réplicas é garantir que você não precise tomar medidas extraordinárias para usar um secundário dessa maneira (com as advertências acima em mente, é claro).