Description
CC: kip.iwakiri
We should tutorials a few scenarios with example commands to run, and a summary of tradeoffs, potential pitfalls
For example, a dump and load via pipe in one command:
mongodump --host someHost --username someName --password somePw --authenticationDatabase admin --ssl --archive --db someDb | mongorestore --host someOtherHost --ssl --username someOtherName --password someOtherPw --authenticationDatabase admin --archive --db someDb
We should describe
1) Migrate an existing replica set (whether under load or not) without caring about isolating to a particular point in time or syncing all changes (easiest, using mongodump | mongorestore)
2) Migrating an existing replica set, including grabbing changes during the load process. Two methods can do this
Method 1) mongodump and mongorestore with the oplog flag
<-- drawback is that the destination replica set will stop receiving writes the moment the load finishes (and since the load finishes at a nondeterministic time, it's difficult to use this scenario for a hot app-flip-over)
Method 2--with caveats that mongo-connector isn't officially supported) mongodump, mongorestore, and mongo-connector together (https://github.com/mongodb-labs/mongo-connector/wiki/Usage%20with%20MongoDB#using-mongodump-and-mongo-connector-together)
Upside is, if it succeeds, the destination replica set will be kept in sync (or nearly) the source cluster, allowing a hot application flip-over to be undertaken at an optimal time.
Downside is that the mongo-connector is not officially supported; written in python and therefore single-threaded, so will potentially not be able to keep up for high throughput workloads.