Menu Docs
Página inicial do Docs
/
MongoDB Atlas
/ /

Restaurar dados arquivados

Nesta página

  • Acesso necessário
  • Procedimento

Importante

Recurso Indisponível em Instâncias sem Servidor

Neste momento, as instâncias sem servidor não permitem essa funcionalidade. Para saber mais, consulte Limitações de instâncias sem servidor.

Você pode restaurar dados arquivados em seu Atlas cluster. Você pode usar a sintaxe alternativa que a Atlas Data Federation fornece para o estágio de pipeline $merge para mover os dados de volta para o mesmo Atlas cluster, banco de dados ou coleção ou para diferentes dentro do mesmo projeto do Atlas.

Observação

Certifique-se de que seu cluster seja provisionado adequadamente para a quantidade de dados que será restaurada do seu arquivo para que ele não fique sem espaço durante ou após a restauração dos dados arquivados. Entre em contato com o Suporte para obter orientação técnica adicional sobre como configurar o tamanho do oplog ou para solucionar quaisquer problemas de espaço no seu Atlas cluster.

Esta página descreve como restaurar dados arquivados usando o estágio do pipeline $merge ou as ferramentas do MongoDB .

Para seguir esse procedimento, você deve ter acessoProject Data Access Admin ou superior ao projeto.

Se o conjunto de dados for pequeno, você poderá usar o estágio $merge para mover os dados arquivados de volta para o Atlas cluster. Esta abordagem não é recomendada para grandes conjuntos de dados (em torno 1TB de dados) com um grande número de partições.

1

Consulte Pausar e retomar arquivamento para obter mais informações.

2

Você deve usar a string de conexão Archive Only para se conectar ao Online Archive. Para saber mais, consulte Conectar-se ao Online Archive.

3

Para saber mais sobre a sintaxe e o uso do estágio do pipeline $merge para mover os dados de volta para o Atlas cluster, consulte o estágio do pipeline $merge.

Exemplo

Considere os seguintes documentos em um arquivo S3:

{
"_id" : 1,
"item": "cucumber",
"source": "nepal",
"released": ISODate("2016-05-18T16:00:00Z")
}
{
"_id" : 2,
"item": "miso",
"source": "canada",
"released": ISODate("2016-05-18T16:00:00Z")
}
{
"_id" : 3,
"item": "oyster",
"source": "luxembourg",
"released": ISODate("2016-05-18T16:00:00Z")
}
{
"_id" : 4,
"item": "mushroom",
"source": "ghana",
"released": ISODate("2016-05-18T16:00:00Z")
}

Suponha que a sintaxe $merge para restaurar estes documentos no Atlas cluster identifique documentos com base nos campos item e source durante a etapa $merge.

db.<collection>.aggregate([
{
"$merge": {
"into": {
"atlas": {
"clusterName": "<atlas-cluster-name>",
"db": "<db-name>",
"coll": "<collection-name>"
}
},
"on": [ "item", "source" ],
"whenMatched": "keepExisting",
"whenNotMatched": "insert"
}
}
])

Neste exemplo, quando um documento arquivado corresponde a um documento no Atlas cluster nestes dois campos, o Atlas mantém o documento existente no cluster porque a cópia do documento no Atlas cluster é mais recente do que a cópia do documento no arquivo. Quando um documento arquivado não corresponde a nenhum documento no Atlas cluster, o Atlas insere o documento na coleção especificada no Atlas cluster.

Ao restaurar os dados de volta ao Atlas cluster, os dados arquivados podem ter campos _id duplicados. Para este exemplo, podemos incluir um estágio $sort para classificar os campos _id e released antes do estágio $merge para garantir que o Atlas escolha os documentos com a data mais recente se houver duplicatas a serem resolvidas.

Observação

Se houver múltiplos campos on , você deverá criar um índice único composto nos campos de identificador on :

db.<collection>.createIndex( { item: 1, source: 1 }, {
unique: true } )

Como alternativa, especifique mesclagens sequencialmente, uma para cada campo de identificador on , para uma coleção temporária. Em seguida, mescle os dados na coleta temporária na coleta de destino usando a connection string do cluster. Você ainda deve criar um índice único para cada campo de identificador on .

O estágio de agregação pode ser executado em segundo plano definindo o sinalizador background como true. Para executar este comando no mongosh, use o db.runCommand.

db.runCommand(
"aggregate": "<collection>",
"pipeline": [
{
$sort: {
"_id": 1,
"released": 1,
}
},
{
"$merge": {
"into": {
"atlas": {
"clusterName": "<atlas-cluster-name>",
"db": "<db-name>",
"coll": "<collection-name>"
}
},
"on": [ "item", "source" ],
"whenMatched": "keepExisting",
"whenNotMatched": "insert"
}
}
], {"background": true}
)

Para saber mais sobre como resolver campos duplicados, consulte as $merge considerações.

4

Consulte Excluir um Online Archive para obter mais informações.

Observação

Se você tiver problemas ao migrar dados de volta para o Atlas cluster, entre em contato com o Suporte.

Voltar

Fazer backup do arquivo online