mongosync e instruções sobre como atualizar sua versão do mongosync.Descrição
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 ecluster1é 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.
Requisitos
Para usar o ponto de extremidade reverse :
mongosyncdeve ser configurado quando a sincronização inicial começar. A chamada para o ponto de conexão da API /start deve ser definida:reversibleparatrueenableUserWriteBlockingparatrue.
Observação
Obloqueio de gravação é um pré-requisito para executar o .reverse
Você não pode atualizar essas opções após o início da sincronização.
mongosyncdeve estar no estadoCOMMITTED.O oplog do cluster de destino não deve ser acumulado entre
mongosync, alcançarcanWrite=truee receber a solicitação/reverse.Índices únicos exigem formatação adequada. As coleções com índices criados inicialmente no MongoDB 4.2 podem não ter a formatação adequada.
Para validar se os índices de coleção 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
mongosyncdeve ter as permissões necessárias nos clusters de origem e destino. As permissões variam dependendo do seu ambiente e se você deseja executar um bloqueio de gravação ou 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.
Validar índices únicos
Para reverter a direção, mongosync exige que todos os índices únicos utilizem a formatação correta. Os clusters que começaram com MongoDB 4.2 ou mais antigo e foram atualizados desde então podem incluir índices únicos que não estão formatados corretamente.
Para corrigir os índices, você pode sincronizar novamente todos os nós no cluster de origem original. Para sincronizar todos os nós novamente:
Sincronize todos os secundários, um por um.
Para obter um tutorial sobre a ressincronização de nós, consulte Sincronizar novamente um membro de um conjunto de réplicas.
Como alternativa, para evitar a ressincronização, você pode usar o método db.collection.validate() com full = false em cada collection com índices exclusivos em todos os nós para determinar se cada collection contém índices exclusivos formatados incorretamente. Se db.collection.validate() não retornar um aviso sobre um índice único, você poderá ignorar a ressincronização.
Solicitar
POST /api/v1/reverse
Parâmetros do corpo da solicitação
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 { }.
Resposta
Campo | Tipo | Descrição |
|---|---|---|
| booleano | Quando a solicitação é bem-sucedida, esse valor é |
| string | Se ocorreu um erro, indica o nome do erro. Este campo é omitido da resposta quando |
| string | Descrição detalhada do erro que ocorreu. Este campo é omitido da resposta quando |
Exemplo
O exemplo a seguir reverte a direção de uma operação de sincronização confirmada.
Solicitar
curl localhost:27182/api/v1/reverse -XPOST --data '{ }'
Resposta
{"success":true}
Comportamento
O endpoint reverso 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 .
Proteção de endpoint
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.
Limitações
O reverse endpoint não suporta sincronização filtrada.