+− THE DAILY DIFFdev & AI news
SHIP IT

Инженер ја избриша продукциската база на податоци на GitLab. 300 гигабајти.

31 јануари 2017 година, 23:27 UTC: Инженер на GitLab, борејќи се со скршена реплика на крајот од долгата ноќ, го отстранува директориумот за податоци на PostgreSQL на db1 наместо на db2.

31 јануари 2017 година, 23:27 UTC: Инженер на GitLab, борејќи се со скршена реплика на крајот од долгата ноќ, го отстранува директориумот за податоци на PostgreSQL на db1 наместо на db2. db1 е примарниот. Околу 300 GB од базата на податоци на GitLab.com исчезнуваат за секунда или две, а од петте механизми за резервна копија и репликација, ниту еден не работи. Пост-анализа: временската рамка од скокот на спам до погрешното име на хост, зошто pg_basebackup изгледаше заглавено, зошто pg_dump тивко откажуваше (бинарни датотеки 9.2 на база на податоци 9.6, е-поштата за грешките одбиени од DMARC), 18-часовното враќање од 6-часовна снимка од staging пренесувана во живо на YouTube и кој навистина е виновен. Пресуда за одговорот: SHIP IT.

Прочитајте го пишаното издание (англиски) ↗

Што покрива ова видео

  • 31 јануари 2017 година: rm -Rvf на директориумот за податоци на примарниот; ~300 GB избришани, останати 4,5 GB
  • 5 од 5 резервни копии откажуваат: празен S3 bucket (несовпаѓање на верзиите на pg_dump), без Azure снимки на базата на податоци, избришана реплика, дневна LVM копија без вебхукови
  • 1 февруари, 18:00 UTC: GitLab.com се врати од 6-часовна рачна снимка; документ во живо, пренос во живо, пост-анализа без вина со листа на поправки

Преведен транскрипт

Преведено од оригиналната англиска нарација. Достапното аудио и наслови се контролирани од YouTube.

0:00 Инженер во GitLab извршува rm -rf на погрешен сервер за база на податоци, и триста гигабајти од GitLab.com исчезнуваат за секунда или две, отприлика колку што е потребно да се прочита име на хост. 31 јануари 2017 година, 23:27 часот UTC. GitLab твитува дека случајно избришал продукциски податоци, ги отвора своите белешки за инциденти на интернет и го пренесува обновувањето на YouTube, вториот најгледан пренос во живо на платформата. Следниот ден, писмено: од пет техники за резервна копија,

0:25 ниту една не работи сигурно. Како се случува, зошто е можно и кој навистина е виновен. Ова е The Daily Diff, пост-анализа. 17:20 часот: инженер прави снимка од продукцијата за да тестира балансер на оптоварување во staging. 19:00 часот: спам ја бомбардира базата на податоци, плус работа која насилно брише вработен во GitLab, трол пријавен за злоупотреба. 23:00 часот: репликата заостанува толку многу што примарниот веќе го отфрлил

0:48 логот што ѝ е потребен; единственото решение е да се избрише репликата и повторно да се копира примарниот повторно. pg_basebackup виси без излез. Всушност чека, тивко, на примарниот; никој не знае дека, и прирачникот не го вели тоа. Инженерот, кој требаше да се одјави во единаесет, одлучува дека празниот директориум за податоци е проблемот и го отстранува. На db1. Примарниот. Забележува секунда или две подоцна; од приближно триста гигабајти,

1:11 остануваат 4,5. Резервните копии. Еден: pg_dump во S3, дневно. Кофата е празна. Cron job-от работи на сервер за апликации без база на податоци, па пакетот избира бинарни датотеки на PostgreSQL 9.2 за база на податоци 9.6, откажува и испраќа е-пошта за откажувањето, која се одбива поради недостасувачки DMARC. Два: Azure диск снимки, овозможени за серверите за датотеки, не за базите на податоци.

1:32 Три: репликата, намерно избришана пред еден час. Четири: дневната снимка, стара 24 часа, секој вебхук отстранет од страна на синхронизацијата на staging. Пет: рачната снимка од 17:20, за неповрзан тест. Таа победува. Враќањето значи копирање на дискот од staging назад во продукција преку евтиниот Azure складиште со шеесет мегабити во секунда: осумнаесет часа. GitLab.com се враќа на 1 февруари во шест часот попладне UTC, шест часа постари податоци.

1:58 git blame: две имиња на хостови со еден знак разлика и пет системи за резервна копија од кои никој никогаш не направил враќање. Не инженерот. Пост-анализата, потпишана од извршниот директор, го задржува анонимен, ја обојува продукциската наредба во црвено и ѝ дава сопственик на трајноста на податоците, бидејќи досега немаше. Опсег на оштетување: осумнаесет часа застој, шест часа изгубени податоци, приближно пет илјади проекти, пет илјади коментари,

2:18 седумстотини нови корисници и пет илјади луѓе кои гледаат лента за напредок. Hacker News му дава на документот во живо 1.162 поени и цитира една линија назад кон нив: од пет резервни копии, ниту една. Пресуда, пост-анализа: SHIP IT, на одговорот. Тие го водат инцидентот јавно, го обвинуваат процесот и ја објавуваат листата за поправки со броеви на проблеми. Акција за понеделник: вратете резервна копија. Ако никогаш не сте ја вратиле, ја немате.

2:42 Испратете ми го инцидентот за кој сè уште не ви е дозволено да зборувате, во коментарите или на the daily diff dot dev. И тоа е денешната разлика. Јас сум Нико од Axrisi. Спојувајте одговорно.

Извори

  1. GitLab, "Postmortem of database outage of January 31" (Feb 10, 2017)about.gitlab.com
  2. GitLab, "GitLab.com database incident" (Feb 1, 2017)about.gitlab.com
  3. @gitlabstatus, "We accidentally deleted production data…"twitter.com
  4. @gitlabstatus, emergency maintenance noticetwitter.com
  5. Hacker News, "GitLab Database Incident – Live Report" (1,162 points, 598 comments)news.ycombinator.com
  6. Hacker News, the postmortem thread (377 points)news.ycombinator.com

Поврзани видеа

postmortem · mk · 9 сеп. 2026 г.

Вештачка интелигенција избриша продукциска база на податоци. Девет секунди.

Код агент со вештачка интелигенција (Cursor што работи на Claude Opus 4.6) наидува на неусогласеност на ингеренциите во поставувањето и ја „поправа“ со повикување volumeDelete на Railway со токен со о

3:23 ↗
postmortem · mk · 25 сеп. 2026 г.

Една милисекундна грешка го запре воздушниот сообраќај во Велика Британија. Шест часа.

Во 10:00 часот во вторник, 8 септември, едно рутинско барање за squawk-код во Националниот воздушен систем (NAS) на NATS е прекинато од порака со повисок приоритет додека делумно ажурира вредност. Про

3:06 ↗
postmortem · mk · 22 сеп. 2026 г.

Рестартирањето ја врати Телстра во 2006 година. Девет милиони телефони.

Инженер во Мелбурн повторно вклучува временски шасија во 2:50 часот по полноќ, и до појадок најголемата мобилна мрежа во Австралија се согласува дека е ноември 2006 година. 8 јули 2026 година: GPS кар

3:15 ↗