Incident Library

IL-0485 Dropbox · 2014-01-10database

Dropbox went down when an OS upgrade script reinstalled active MySQL master-replica pairs and backup restores ran slow

Dropbox runs thousands of databases, each with one master and two replica machines, and keeps full and incremental backups in a separate environment. During a planned OS upgrade on Friday at 5:30 PM PT, the upgrade script was supposed to verify remotely that each machine had no active data before installing the new OS. A subtle bug in the script made it reinstall a small number of machines that were serving production traffic. Some of them were master-replica pairs, and the site went down.

To bring the service back as fast as possible, the team recovered the databases from backups. Most functionality was back within about three hours, but the standard tool for recovering MySQL data from backups was slow on the largest databases, and core service was fully restored only at 4:40 PM PT on Sunday. Afterwards Dropbox added a local check on each machine before it runs incoming commands, and built a tool that replays binary logs in parallel to speed up restores of large MySQL backups.

Severity
–
Scope
Dropbox service down for about three hours after scheduled maintenance; core service not fully restored until 4:40 PM PT on Sunday; user files were not at risk
Users affected
–
Region
–
Time to detect
–
Time to resolve
–

Symptoms

On Friday evening, during scheduled maintenance that started at 5:30 PM PT, the Dropbox service went down. Most functionality came back about three hours later, but core service was not fully restored until 4:40 PM PT on Sunday.

The affected databases did not hold file data, so user files were not at risk. They back features such as photo album sharing, camera uploads and some API features.

Symptom Service outage

Root cause

Trigger
A planned maintenance on Friday at 5:30 PM PT upgraded the operating system on some machines with a script that was meant to check that a machine held no active data before reinstalling it.

Detection

–

Remediation

Action items

Lessons

Scripts that verify a machine's production state remotely before upgrading or repurposing it can be wrong, so machines need to check their own state before accepting destructive commands. Replicas give redundancy, but when every replica is lost the restore from backup decides the length of the outage, and the standard MySQL restore tool is slow on large data sets.

Sources

Related cases

Check your cluster for this

kubegap audits a Kubernetes cluster for conditions like the ones in this case, Database, Database backups and snapshots among them, read-only, from Claude Code or Codex. Its checks cite public reports like this one.

For AI tools and scripts

The API needs no key. The MCP server offers search_incidents, get_incident, list_incidents, get_topic and vocab; both are explained on API and MCP.