Skip to content

From MongoDB Atlas

Tested with: Atlas preset: offline fixtures (SRV detection and expansion, checklist) · FerretDB 2.4 on Databasezy · zb migrate 0.1

Atlas clusters move to Databasezy FerretDB today, and to the MongoDB (Percona Server) engine when it launches. The copy is mongodump piped into mongorestore.

MongoDB Atlas migration at a glance, from the migration source catalogue
Status Available
Target engines MongoDB (Percona Server) , FerretDB (MongoDB-compatible)
How we read it Connection string
Continuous sync No, copy only
Provider preset atlas
  • A Databasezy FerretDB instance, or use --create.
  • An Atlas database user with read access to the database you migrate.
  • The egress addresses on the Atlas network access list.

In Atlas, open the cluster, choose Connect, then Drivers, and copy the mongodb+srv:// string. Replace the user and password with your migration user’s.

  • Add our egress IPs to the Atlas network access list.
  • Atlas Search indexes and triggers are Atlas features and are not copied.

The SRV name resolves to the replica-set members, and every member must accept the egress addresses (the preset notes this as atlas.srv). Shared tiers (M0, M2, M5) throttle mongodump. FerretDB does not support every MongoDB feature, for example some index options, $text search and change streams; unsupported indexes are reported by the restore.

  1. Open the target FerretDB (MongoDB-compatible) instance (create one first if you need to) and choose the Migrate in tab.
  2. Under Source, pick Connection string and paste the URL. The host is recognised as MongoDB Atlas; you can also pick it from the provider list.
  3. Run Preflight and work through the checklist. Blocking items must be fixed before the copy starts.
  4. Start the copy and follow Copy and Verify. Mismatches are listed per table or collection.
  5. Point your application at the new instance. The Report step keeps the timings and verification results.

Verification compares document counts per collection and the number of indexes. Indexes or options the target does not support are listed in the restore report. Run your application’s tests against the new instance before you switch traffic.

This source is copy only. Writes that reach the source after the copy starts are not carried over, so for a database that changes, stop writes before you start the copy (maintenance mode, or scale writers to zero), run the migration, check verification, then point the application at the Databasezy connection string.

A migration never deletes anything on the source. Until you decommission it, rolling back means pointing the application back at the source. Writes made on Databasezy after you switched are not on the source; if you need them, copy them back before switching. Cancel a running migration with zb migrate cancel <mig_id>; partially restored data stays on the target, so restart with --drop-target or delete the instance.

Preflight connects to one member but the copy fails

Section titled “Preflight connects to one member but the copy fails”

Not every replica-set member allows the egress addresses. Add them at the project level of the network access list.

FerretDB does not support that index type or option. The restore report names it; rewrite the query or wait for the MongoDB engine.

Check that the source accepts connections from the egress addresses preflight prints, that the host is the public one and that the password has not been rotated. zb migrate --dry-run shows the exact URL that will be used after any rewrites.

Each item has a machine code and a fix. Nothing is written to the target until every blocking item is resolved; warnings do not block.

For anything else, zb migrate status <mig_id> shows the failing step and its message. How migrations work describes every step.