Zero-downtime database migration

This is pretty cool (via Mongodb Atlas)

Hi Max,

Thanks for the reply and for letting me know you’ve set up a new Atlas group.

We would like to offer you the opportunity to utilize a tool currently in beta. We are currently developing a tool called mongomirror. This tool is used for migrating data from a non-sharded replica set into an Atlas Cluster. After import, it will keep the Atlas cluster in sync with your current cluster until you are ready to switch over fully. We would like to invite you to participate in the Beta for mongomirror.

Please let me know if you are interested in participating; if so we will make a new JIRA ticket for Beta program tracking and provide you all the information you need to get started.

2 Likes

Awesome. I’m considering switching from an in-house MongoDB cluster to Atlas. This sounds ideal.

1 Like

Indeed, zero-downtime database migration is pretty cool. NodeChef has had this feature in production for months now and being utilized heavily. More information can be found in the documentation.

1 Like

How to compare what is best for Meteor: compose.io/mLab or MongoDB Atlas?!

It would be a lot of work to figure out which is “best”. Were on an mlab shared plan, but experienced occasional poor performance (we noticed sluggish application performance at least a few times per week). We upgraded to mlab’s Dedicated server plan and that solved the performance problems, but we are not paying about $185 per month. Atlas is cheaper, but not sure if it will be as fast. I can report back a few weeks after we migrate.

2 Likes

I would like to hear your results as well. Also on a shared mLab, and find the dedicated plans a bit pricey.

1 Like

I was wondering if you have any new updates on Atlas?

Our MLab shared plan has been going extremely slow these last couple of days… Wondering how the alternative is going!

Hey guys, I migrated from an mLab dedicated plan to Mongodb Atlas, but now I kind of regret it. I didn’t use their migration tool because I felt it would just add another layer of complexity to an already complicated process. I have three applications using the same mongodb, plus we use Auth0, so I have to update the connection-string and redeploy three apps and also update the custom database connection string in Auth0. So I just setup a new cluster on Atlas, shutdown my apps, did a mongodump and restored it to Atlas. OK GROW! has a useful guide

The reason I’m not happy with Atlas is because, as far as I can tell, it lacks anything like mLab’s Slow Queries profiling tool. mLab ranks all your inbound queries based on number of calls and total time and recommends indexes (which you can implement with a single click). With Atlas I have zero insight into what queries are running, what their execution time is, and there is nothing like the index recommend too.

Apparently Mongodb has a profiler tool as part of their Cloud Premium service, but I’ve written them everyday for a week and they refuse to tell me the price. They haven’t answered by question by email or Twitter.

The only benefit of Atlas is the price. It’s cheaper than a mLab Dedicated plan (I was paying $195 monthly), but losing the slow queries tools and index recommend tool is a big loss. I also feel mLab’s telemetry metrics are more insightful than Atlas’s metrics.

Once you start growing and your db performance starts to slow, you’re really gonna need some tools to help you identify and fix slow running queries. If mLab has a lower priced Dedicated Plan there would be no competition; mlab trumps Atlas on metrics and query profiling tools.

Anyway else have a different opinion?

1 Like

I’ve been talking to mLab about my mLab <> Atlas experience, and they’ve raised my awareness of some other considerations to keep in mind

MongoDB’s Atlas offering doesn’t include database support in their prices. For example, if you had a question about the best index for a query, you’d need to buy very expensive database support. Even worse, if there were an emergency with your application, you’d have to buy this expensive support to get any help.

mLab thinks of database support as something that expected of a database-as-a-service offering, not as an extra that you pay for separately. On our Dedicated plans you do get 24x7 emergency support (i.e., response within 10 minutes), but even on our Sandbox and Shared plans you would get pretty timely support as well.

3 Likes

That’s useful information, Max - thank you.

Just as I was seriously thinking of using Atlas…

Sorry to hear Atlas is not going as well.

I do appreciate mLab support. I just wish they had a smaller scale dedicated plan.

Thanks so much for your insight!

1 Like

yeah exactly–something between $15 and $180 would be very welcome!

Yep. The low-end pricing on the Atlas plan seems perfect (I believe it comes out to around $56 a month?). It gives a larger database size, but I would gladly pay that price for mLab’s smallest shared database size, with dedicated & support.

1 Like

You might want to download the official Atlas tool. Found it by accident only:

Compass - Atlas tool

1 Like

That’s for Compass. The migration tool is mongomirror

https://docs.atlas.mongodb.com/reference/mongomirror

Yes, but someone was complaining about a monitoring tool to see queries and index usage. This is the tool for it

1 Like

OIC!

Bummer! I guess it only works with Atlas hosted databases. We moved from Atlas to Compose. You can still use Compass for viewing collections/indexes, but the new performance tab gives me nothing for slow queries

We switched to Atlas recently and I was interested in using Compass to monitor slow queries. What I noticed with Compass is the Slowest Operations section is real time, so the queries tend to disappear really quickly (you can click on them for details, but you have to be fast).

When I asked their support about it, they said that it was current limitation of Compass (it is focused on real time and doesn’t store data), but then pointed me to the helpful Mongo-level database profiling: https://docs.mongodb.com/manual/tutorial/manage-the-database-profiler/

With one command from your shell (db.setProfilingLevel(1)) you can turn on slow query profiling and it writes these queries to a system.profile collection (capped) in your database. So, you don’t get a pretty viewer, but you do get the dataset that you can query whichever way you want.

2 Likes

this is what a lot of hosts are using internally. Developed by a former engineer at mongodb

2 Likes