Join us Sept 17 at .local NYC! Use code WEB50 to save 50% on tickets. Learn more >
MongoDB Event
Menu Docs
Página inicial do Docs
/
MongoDB Mongosync
/ /

reverse

Inverte a direção de uma operação de sincronização confirmada.

Por exemplo:

  • Você tem uma operação de sincronização COMMITTED .

  • cluster0 é a origem e cluster1 é o destino.

  • Após a operação de sincronização ser COMMITTED, novas gravações ocorrerão somente no cluster de destino. O cluster de origem não aceitará novas gravações.

Nesse cenário, você pode usar o endpoint reverse para sincronizar gravações de cluster1 para cluster0, incluindo quaisquer gravações que tenham ocorrido em cluster1 depois que mongosync atingiu canWrite=true. Para verificar o status canWrite durante a sincronização, use o endpoint /progress .

Para obter mais informações e um tutorial sobre como usar o reverse endpoint, consulte Direção de sincronização inversa.

Para usar o ponto de extremidade reverse :

  • mongosync deve ser configurado quando a sincronização inicial começar. A chamada para o ponto de conexão da API /start deve ser definida:

    • reversible para true

    • enableUserWriteBlocking para "sourceAndDestination".

Observação

O bloqueio duplo de gravação é um pré-requisito para a execução reverse de.

Você não pode atualizar essas opções após o início da sincronização.

  • mongosync deve estar no estado COMMITTED .

  • O oplog do cluster de destino não deve ser acumulado entre mongosync , alcançar canWrite=true e receber a solicitação /reverse .

Aviso

Os índices únicos no cluster de origem não devem usar o formato legado.

Para validar se os índices de collection no cluster de origem usam a formatação adequada, consulte Validar índices únicos.

  • Os clusters de origem e destino devem ter o mesmo número de shards. Não é possível fazer a sincronização reversa quando os clusters têm topologias ou versões principais diferentes.

  • O usuário especificado na string de conexão mongosync deve ter as permissões necessárias nos clusters de origem e destino. As permissões variam dependendo do seu ambiente e se você deseja modificar as configurações de bloqueio de escrita ou usar a sincronização reversa.

Observação

Ao configurar várias instâncias mongosync para sincronizar entre clusters fragmentados, você deve enviar comandos de ponto de conexão da API idênticos para cada instância mongosync .

Para obter mais informações, consulte Reverter vários Mongosyncs.

Para reverter a direção, mongosync exige que todos os índices únicos no cluster de origem (exceto _id) não tenham chaves de índice único legado.

Você pode garantir que os índices únicos não_id usem a formatação correta no cluster de origem com o estágio de agregação $collStats. Para executar esse pipeline de agregação em sua coleção, copie e cole o código de exemplo , substituindo <collection> pelo nome da coleção e <field_name> pelo nome do campo indexado. Você deve executar isso em todos os nós, para todas as collections que possuem índices únicos. Observe que somente os índices únicos não_id precisam ter formatVersion 13 ou 14.

db.<collection>.aggregate( [
{ $collStats: { storageStats: { } } },
{ $project: { "storageStats.indexDetails.<field_name>.metadata.formatVersion": 1 } }
] )
[
{
storageStats: {
indexDetails: { <field_name>: { metadata: { formatVersion: 14 } } }
}
}
]

É garantido que índices únicos com formatVersion 13 ou 14 não tenham chaves legado .

Se você tiver índices únicos de um formatVersion diferente, você também poderá usar o métododb.collection.validate() com full = false para confirmar se houver chaves de índice legado. Você deve executar isso em todos os nós de todas as collections com índices únicos. validate() retorna um aviso se forem detectadas chaves de índice de formato legado .

Para atualizar a versão de formato dos índices para compatibilidade com mongosync, você deve ressincronizar todos os nós no cluster de origem original. Para sincronizar todos os nós novamente:

1

Para obter um tutorial sobre a ressincronização de nós, consulte Sincronizar novamente um membro de um conjunto de réplicas.

2
3
POST /api/v1/reverse

Este endpoint não usa parâmetros do corpo da solicitação HTTP. No entanto, você deve especificar a opção --data com um objeto vazio { }.

Campo
Tipo
Descrição

success

booleano

Quando a solicitação é bem-sucedida, esse valor é true.

error

string

Se ocorreu um erro, indica o nome do erro. Este campo é omitido da resposta quando success é true.

errorDescription

string

Descrição detalhada do erro que ocorreu. Este campo é omitido da resposta quando success é true.

O exemplo a seguir reverte a direção de uma operação de sincronização confirmada.

curl localhost:27182/api/v1/reverse -XPOST --data '{ }'
{"success":true}

O endpoint reverse inicia o estado REVERSING . mongosync troca os clusters de origem e destino e retoma a aplicação de eventos de alteração.

Se a sincronização reverse for bem-sucedida, mongosync entrará no estado RUNNING . A sincronização continua na direção inversa do tarefa de sincronização original. Você não precisa reiniciar todo o processo de sincronização para copiar os dados originais.

Para visualizar a direção de mapeamento para a sincronização dos clusters de origem e destino, use o endpoint de progresso e verifique o objeto directionMapping .

O verificador embarcado é habilitado por padrão para migrações de conjunto de réplicas.

mongosync não protege o endpoint reverse . No entanto, por padrão, a API é vinculada apenas ao host local e não aceita chamadas de outras fontes. Além disso, a chamada reverse não expõe credenciais de conexão ou dados de usuário.

O endpoint reverse não suporta:

Voltar

commit

Nesta página