Docs Menu
Docs Home
MongoDB Cluster-to-Cluster Sync
/ /


On this page

  • Description
  • Requirements
  • Request
  • Request Body Parameters
  • Response
  • Example
  • Confirm that the Synchronization is Ready
  • Send the Commit Request
  • Behavior
  • State
  • Data Verification
  • Endpoint Protection

Finalizes the sync between the source cluster and the destination cluster and stops continuous sync between clusters. commit also restores collection characteristics that mongosync temporarily alters during synchronization.

The following table illustrates the impact of commit on collection characteristics that mongosync alters during the synchronization process.

Collection Characteristic
Impact of commit
Unique Indexes
commit resets unique indexes that mongosync replicated as non-unique on the destination cluster.
commit resets expireAfterSeconds which mongosync set to the value of MAX_INT on the destination cluster.
commit resets hidden indexes that mongosync replicated as non-hidden on the destination cluster.

If you enable write-blocking, mongosync blocks writes:

  • On the destination cluster during sync.

  • On the source cluster when commit is received.


See also:

Before using the commit endpoint:

  • Stop your application. This ensures that no additional writes occur on the source cluster.

  • Use the progress endpoint to confirm the following values:

    • lagTimeSeconds is near 0 (Recommended, but not required)



      lagTimeSeconds indicates the time between the last applied event and time of the current latest event. When you send a commit request, mongosync enters the COMMITTING state for the amount of seconds reported by lagTimeSeconds, and then transitions to the COMMITTED state.

      When lagTimeSeconds is 0, the source and destination clusters are in a consistent state.

    • state: "RUNNING"

    • canCommit: true


When you configure multiple mongosync instances to sync between sharded clusters, you must send identical API endpoint commands to each mongosync instance.

For more information, see Commit Synchronization From Multiple mongosync Instances.

POST /api/v1/commit

This endpoint does not use HTTP request body parameters. However, you must specify the --data option with an empty object { }.

When the request is successful, this value is true.
If an error occurred, indicates the name of the error. This field is omitted from the response when success is true.
Detailed description of the error that occurred. This field is omitted from the response when success is true.

The following example commits the synchronization operation to the destination cluster.

Before sending a request to the commit endpoint, use the progress endpoint to confirm that the synchronization is ready to be committed.

curl localhost:27182/api/v1/progress -XGET
"info":"change event application",
"Source":"cluster0: localhost:27017",
"Destination":"cluster1: localhost:27018"

The progress endpoint returned "canCommit":true, which means that the commit request can run successfully.

The following command sends a request to the commit endpoint:

curl localhost:27182/api/v1/commit -XPOST --data '{ }'

If the commit request is successful, mongosync enters the COMMITTED state. Once mongosync enters the COMMITTED state, continuous sync between the clusters stops.

Before transferring your application load from the source cluster to the destination, check your data to ensure that the sync was successful.

For more information, see Verify Data Transfer.

mongosync does not protect the commit endpoint. However, by default the API binds to localhost only and does not accept calls from other sources. Additionally, the commit call does not expose connection credentials or user data.

← resume
reverse →