# Inženjer je izbrisao produkcijsku bazu podataka GitLaba. 300 gigabajta.

Published: 2026-09-10

31. siječnja 2017., 23:27 UTC: inženjer GitLaba, boreći se s pokvarenom replikom na kraju duge noći, uklanja direktorij podataka PostgreSQL-a na db1 umjesto db2. db1 je primarni. Oko 300 GB baze podataka GitLab.com nestaje u sekundi ili dvije, a od pet mehanizama za sigurnosno kopiranje i replikaciju, nijedan ne radi. Postmortem: vremenska crta od porasta neželjene pošte do pogrešnog imena hosta, zašto se pg\_basebackup činio zaglavljenim, zašto pg\_dump nije radio tiho (9.2 binarne datoteke na 9.6 bazi podataka, e-poruke o pogrešci odbijene od strane DMARC-a), 18-satni oporavak iz 6-satne snimke za testiranje uživo na YouTubeu i tko je zapravo kriv. Presuda o odgovoru: SHIP IT.

Canonical: https://thedailydiff.dev/bs/video/2026-09-10-gitlab-rm-rf/

## Šta ovaj video pokriva

- 31. siječnja 2017.: rm -Rvf na direktoriju podataka primarnog servera; uklonjeno ~300 GB, ostalo 4.5 GB
- 5 od 5 sigurnosnih kopija ne uspijeva: prazan S3 bucket (nepodudarnost verzije pg\_dump), nema Azure snimki na DB-u, obrisana replika, dnevna LVM kopija bez web-hookova
- 1. veljače, 18:00 UTC: GitLab.com se vratio iz 6-satne ručne snimke; dokument uživo, prijenos uživo, postmortem bez krivnje s popisom popravaka

## Prevedeni transkript

Prevedeno iz originalne engleske naracije. Dostupan zvuk i titlovi kontroliše YouTube.

0:00 Inženjer u GitLabu pokreće rm -rf na pogrešnom serveru baze podataka, i tri stotine gigabajta GitLab.com nestaju u sekundi ili dvije, otprilike koliko je potrebno za čitanje imena hosta. 31. siječnja 2017., 23:27 UTC. GitLab tvita da je slučajno izbrisao produkcijske podatke, otvara svoje bilješke o incidentu internetu i prenosi oporavak na YouTubeu, drugi po gledanosti prijenos uživo na platformi. Sljedeći dan, pismeno: od pet tehnika sigurnosnog kopiranja,

0:25 nijedna ne radi pouzdano. Kako se to događa, zašto je to moguće i tko je zapravo kriv. Ovo je The Daily Diff, postmortem. 17:20: inženjer snima produkciju za testiranje balansa opterećenja u stagingu. 19:00: neželjena pošta napada bazu podataka, plus posao koji trajno briše zaposlenika GitLaba kojeg je troper prijavio za zlostavljanje. 23:00: replika toliko zaostaje da je primarni server već odbacio

0:48 log koji mu treba; jedini popravak je obrisati repliku i ponovno kopirati primarni server. pg\_basebackup se zaglavljuje bez izlaza. Zapravo tiho čeka primarni server; nitko to ne zna, a runbook to ne navodi. Inženjer, koji se namjeravao odjaviti u jedanaest, odlučuje da je prazan direktorij podataka problem i uklanja ga. Na db1. Primarnom. Primjećuje sekundu ili dvije kasnije; od otprilike tri stotine gigabajta,

1:11 ostalo je 4.5. Sigurnosne kopije. Jedna: pg\_dump na S3, dnevno. Bucket je prazan. Cron posao se pokreće na aplikacijskom serveru bez baze podataka, pa paket odabire PostgreSQL 9.2 binarne datoteke za bazu podataka 9.6, ne uspijeva i šalje e-poštu o neuspjehu, koja se odbija zbog nedostatka DMARC-a. Dva: Azure snimke diska, omogućene za datotečne servere, ne za baze podataka.

1:32 Tri: replika, namjerno obrisana prije sat vremena. Četiri: dnevna snimka, stara 24 sata, svaki webhook uklonjen sinkronizacijom za staging. Pet: ručna snimka od 17:20, za nepovezani test. Ta pobjeđuje. Vraćanje znači kopiranje staging diska natrag u produkciju preko Azureovog jeftinog skladišta pri šezdeset megabita u sekundi: osamnaest sati. GitLab.com se vraća 1. veljače u 18:00 UTC, šest sati starijih podataka.

1:58 git blame: dva imena hosta udaljena jedan znak i pet sustava za sigurnosno kopiranje s kojih nitko nikada nije obnovio podatke. Nije inženjer. Postmortem, potpisan od strane CEO-a, drži ga anonimnim, boja produkcijski prompt u crveno i daje trajnosti podataka vlasnika, jer do sada nije imala nikoga. Radijus eksplozije: osamnaest sati neaktivnosti, šest sati podataka izgubljeno, otprilike pet tisuća projekata, pet tisuća komentara,

2:18 sedam stotina novih korisnika i pet tisuća ljudi koji gledaju traku napretka. Hacker News daje live dokumentu 1.162 boda i citira jedan redak natrag njima: od pet sigurnosnih kopija, nijedna. Presuda, postmortem: SHIP IT, na odgovor. Oni vode incident javno, krive proces i objavljuju popis popravaka s brojevima problema. Akcija za ponedjeljak: vratite sigurnosnu kopiju. Ako je nikada niste vratili, nemate je.

2:42 Pošaljite mi incident o kojem još uvijek ne smijete pričati, u komentarima ili na daily diff dot dev. I to je diff za danas. Ja sam Niko iz Axrisija. Spajajte odgovorno.

## Izvori

- [GitLab, "Postmortem of database outage of January 31" (Feb 10, 2017)](https://about.gitlab.com/blog/postmortem-of-database-outage-of-january-31/) — about.gitlab.com
- [GitLab, "GitLab.com database incident" (Feb 1, 2017)](https://about.gitlab.com/blog/gitlab-dot-com-database-incident/) — about.gitlab.com
- [@gitlabstatus, "We accidentally deleted production data…"](https://twitter.com/gitlabstatus/status/826591961444384768) — twitter.com
- [@gitlabstatus, emergency maintenance notice](https://twitter.com/gitlabstatus/status/826572933304827904) — twitter.com
- [Hacker News, "GitLab Database Incident – Live Report" (1,162 points, 598 comments)](https://news.ycombinator.com/item?id=13537052) — news.ycombinator.com
- [Hacker News, the postmortem thread (377 points)](https://news.ycombinator.com/item?id=13619714) — news.ycombinator.com
