Descrição
Finaliza a sincronização entre o cluster de origem e o cluster de destino.
Para mais informações, consulte Finalizar Processo de Transferência.
Requisitos
Antes de usar o endpoint commit :
Interrompa seu aplicação para evitar novas gravações no cluster de origem. Durante a confirmação, você ainda pode ler do cluster de origem.
Aviso
Se você gravar no cluster de origem durante a confirmação, poderá sofrer perda de dados.
Use o endpoint de progresso para confirmar os seguintes valores:
lagTimeSecondsparamongosync, o cluster de origem do verificador e o cluster de destino do verificador estão todos próximos0(recomendado, mas não obrigatório)Observação
lagTimeSeconds
lagTimeSecondsindica o tempo entre o último evento aplicado e a hora do último evento atual. Quando você envia uma solicitação decommit,mongosyncentra no estadoCOMMITTINGpela quantidade de segundos relatada porlagTimeSecondse, em seguida, faz a transição para o estadoCOMMITTED.Quando
lagTimeSecondsé0, os clusters de origem e destino estão em um estado consistente.Para obter mais informações sobre os campos
lagTimeSeconds, consulteprogress.state: "RUNNING"canCommit: true
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 Commit sincronização de várias instâncias do mongosync .
Solicitar
POST /api/v1/commit
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 confirma a operação de sincronização no cluster de destino.
Confirme se a sincronização está pronta
Antes de enviar uma solicitação para o endpoint commit , use o endpoint de progresso para confirmar se a sincronização está pronta para ser confirmada.
Solicitar
curl localhost:27182/api/v1/progress -XGET
Resposta
{ "progress": { "state":"RUNNING", "canCommit":true, "canWrite":false, "info":"change event application", "lagTimeSeconds":0, "collectionCopy": { "estimatedTotalBytes":694, "estimatedCopiedBytes":694 }, "directionMapping": { "Source":"cluster0: localhost:27017", "Destination":"cluster1: localhost:27018" }, "source": { "pingLatencyMs":250 }, "destination": { "pingLatencyMs":-1 }, "verification": { "source": { "estimatedDocumentCount": 42, "hashedDocumentCount": 42, "lagTimeSeconds": 2, "totalCollectionCount": 42, "scannedCollectionCount": 10, "phase": "stream hashing" }, "destination": { "estimatedDocumentCount": 42, "hashedDocumentCount": 42, "lagTimeSeconds": 2, "totalCollectionCount": 42, "scannedCollectionCount": 10, "phase": "stream hashing" } } }, "success": true }
O endpoint progress retornou "canCommit":true, o que significa que a solicitação commit pode ser executada com sucesso.
Enviar a solicitação de confirmação
O seguinte comando envia uma solicitação para o endpoint commit :
Solicitar
curl localhost:27182/api/v1/commit -XPOST --data '{ }'
Resposta
{"success":true}
Comportamento
Estado
Se a solicitação commit for bem-sucedida, mongosync entrará no estado COMMITTED. Quando mongosync entra no estado COMMITTED, a migração de dados entre os clusters é interrompida.
Verificação de dados
Antes de transferir a carga do seu aplicativo do cluster de origem para o destino, verifique seus dados para garantir que a sincronização foi bem-sucedida.
Observação
Se mongosync parar durante o commit, antes que o endpoint /progress canWrite: true informe, você deverá reiniciar toda a migração para garantir que ela seja verificada.
Para obter mais informações, consulte Verificar a fonte de dados.
Construções de índices
Se você definir buildIndexes como "afterDataCopy" ou "excludeHashedAfterCopy" ao chamar /start, mongosync bloqueará commit solicitações até que tenha criado todos os índices de origem no cluster de destino.
Alterações nas características da coleção
commit restaura as características da coleção que mongosync altera temporariamente durante a sincronização.
A tabela a seguir ilustra o impacto do commit nas características da collection que o mongosync altera durante o processo de sincronização.
Característica da collection | impacto de commit |
|---|---|
Unique Indexes |
|
TTL Indexes |
|
Hidden Indexes |
|
Bloqueio de gravação | Se você habilitar o bloqueio duplo de gravação,
Para saber mais,consulte Bloqueio de escrita. |
Capped collections |
|
Proteção de endpoint
mongosync não protege o endpoint commit . 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 commit não expõe credenciais de conexão ou dados de usuário.