We’ve been running production on DigitalOcean since 2015. I used to be a fan. I was even one of those folks who said “DO is the new Heroku” with pride.
Then I tried to leave their Managed MySQL service.
Now? I say this with full chest:
DigitalOcean’s Managed MySQL is the Hotel California of hosting. You can check in any time you like, but you can never leave.
🔥 TL;DR (for Devs in a Hurry)
- We moved an 800GB production MySQL DB to DigitalOcean Managed MySQL
- Wanted to move out? Surprise: only way is
mysqldump
- Our dump+restore took 5 days — unusable for real apps
- No support for Percona XtraBackup (
BACKUP_ADMIN
not allowed) - No support for replication (no binlog access)
- DO confirmed: no workaround, no help, no options
- Our business is now stuck — and potential sale is blocked
- Moral: Never use DO Managed MySQL if you care about portability
🔁 The Move In Was Easy
Two years ago, we moved our production MySQL database — 800GB and growing — from a self-hosted droplet to DigitalOcean’s Managed MySQL offering.
They pitched us the usual: high availability, backups, offloaded ops work, improved security. And hey, it’s just a few clicks, right?
Moving in was simple.
It’s moving out that’s impossible.
🚫 The Only Way Out: mysqldump
Let me save you some time: the only way DigitalOcean lets you get your data out of their managed MySQL is mysqldump
.
No joke. That's it.
If your database is a few gigs, fine. If it's hundreds of gigs with write traffic? Welcome to the abyss.
We ran a full test dump and restore on a production-grade server. Not theoretical. It took 5 days.
That’s five full days of read-only or downtime if you want consistency. If your app writes during that window? You lose data or break integrity.
How do I know this? We tried it.
🧰 Better Tools Exist — But DO Won’t Let You Use Them
Percona XtraBackup is a standard tool for large, hot MySQL backups. It works beautifully. Fast, reliable, supports compression, and lets you keep things running.
But it requires the BACKUP_ADMIN
privilege (or, in older MySQL, RELOAD
and LOCK TABLES
, depending on config).
DigitalOcean doesn’t let you assign that permission.
Their words, not mine:
“It is not possible to add BACKUP_ADMIN or use XtraBackup with managed MySQL.”
Cool. So... replication then?
❌ No Replication Either
Replication would be the obvious move: spin up your own MySQL server, set up as a replica, sync, and cut over when ready.
Nope. Denied.
DO support, again:
“It is not possible to set up replication on a managed database.”
Why? Because you don’t get access to the binary logs (binlog-do-db
, binlog_format
, etc). You can’t even inspect or request the files needed to set it up.
So here’s the scoreboard:
Exit Strategy | DO Managed MySQL Support |
---|---|
mysqldump |
✅ (but incredibly slow) |
Percona XtraBackup | ❌ Not supported |
Replication | ❌ Not supported |
Raw file access | ❌ Nope |
🧯 The Support Experience
To their credit, support was polite.
But "polite" doesn’t fix the problem. Their tone was mostly robotic and mildly argumentative.
“SnapShooter utilizes mysqldump for MySQL backups, which can be challenging for large databases due to extended backup and restore times.”
“We do not offer any database migration services.”
“The only available option is to take a dump.”
"Take a dump." Yes. We did. Into production. It wasn’t pretty.
💀 The Real Cost of Lock-In
This isn’t a blog rant for rant’s sake.
We were preparing to sell the company. That database is our heart, our brain, and our product. And we cannot move it.
You cannot sell a product that’s locked into a vendor you can’t control.
We’re now in a position where our entire infrastructure has to be rebuilt, except for the one service we can’t escape.
That’s lock-in. Not in the abstract, but in the most real, money-losing, career-draining way.
🚨 Devs, Founders, Ops People: Be Warned
If you're considering DigitalOcean's managed services — specifically MySQL — do not do it unless you're prepared to stay forever.
There's no replication.
No fast backup.
No self-serve migration path.
No raw data access.
No xtrabackup support.
Only mysqldump
. Slow, brittle, ancient, downtime-heavy mysqldump
.
And yes — they confirmed it all.
🛑 Final Thoughts
After nearly 10 years and tens of thousands of dollars spent with DO, we’re moving everything off the platform.
Everything we can.
The managed database? It's still there. Because there's literally no safe way to get it out.
So yeah. DigitalOcean’s Managed MySQL isn’t managed. It’s confined. Be smarter than I was. Choose infra that respects your exit strategy.
If you’re running anything bigger than a toy app, think long and hard before giving up control of your database.
Bonus
If you're building a business and want to avoid messes like this, I wrote a book called From Monkey to Mogul that’s all about these hard-learned lessons.
I also cry into my keyboard on LinkedIn sometimes. Say hi there too.