Incident Library

IL-0573 Woowa Brothers · 2016-12-27database

A developer's mistake dropped nine main tables of the Baemin billing MariaDB database and payments briefly stopped

The dropped tables belonged to the MariaDB billing database of Woowa Brothers. The outage stayed short because the application was changed to point at a temporary database. The billing database was backed up in full with mysqldump every day at 6:00, as compressed SQL files per table, so the dropped tables could be restored easily from that backup; with a lot of payment data this took some time, but it brought back the data up to 6:00. The data written between 6:00 and 15:00 was recovered from the MariaDB binary log: mysqlbinlog with --start-datetime="2016-12-27 06:00:00" and --stop-datetime="2016-12-27 15:00:00" turned the binary logs into a restore.log file, which was edited to keep only the nine tables and then applied to the database; the stop time had to be set so that the DROP TABLE statement would not run again. With that, all data was restored.

Later, during a large reorganisation of the billing database onto new servers with partitioning, restoring a single main payment table from a mysqldump backup took an enormous amount of time because order volume and data had grown fast. The team concluded that mysqldump backup and restore was no longer usable, since a similar failure would take tens of hours to recover, and moved the billing database to full physical backups with Percona XtraBackup 2.4 on MariaDB 10.2.x and CentOS 6.x, without incremental backups to keep recovery simple, using the binary log position recorded at backup time for point-in-time recovery.

Severity
–
Scope
배달의민족 (Baemin) payments stopped briefly; nine main tables of the billing database were lost until they were restored
Users affected
–
Region
–
Time to detect
–
Time to resolve
–

Symptoms

At 15:00 on 27 December 2016, while a developer was working on a payment system module, nine main tables of the billing database were dropped. The monitoring system turned red, failure alerts poured in, and payments in 배달의민족 (Baemin) stopped for a while.

Symptom Data lossService outage

Root cause

Root cause Operator error

Contributing factor –
Trigger
While developing a payment system module, the developer who wrote the post dropped nine main tables of the billing database by mistake.

Detection

The monitoring system turned red and failure alerts fired.

Remediation

Action items

Lessons

There are many points where such failures can be managed: separate database accounts for the service and for administration, check once more before running a query, and guard against rm -rf. Without the full backup and the binary log the data could not have been recovered, so every team should check that it has a full recovery point for a failure.

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.