Известный opensource-стартап GitLab, сооснователем которого является харьковчанин Дмитрий Запорожец, столкнулся с серьезной проблемой. Вследствие череды событий из-за ошибки системного администратора были удалены почти 300 ГБ данных. Как оказалось, ни один из пяти планируемых способов не позволяет восстановить часть утерянных данных.
“Вчера у нас случился серьезный инцидент с одной из наших баз данных. Мы потеряли шесть часов данных (проблемы, запросы на слияние, пользователей, комментарии, снипеты и так далее) с GitLab.com. Git/wiki-репозитории и ресурсы, размещенные у пользователей, не пострадали”, – говорится в официальном блоге компании.
We accidentally deleted production data and might have to restore from backup. Google Doc with live notes https://t.co/EVRbHzYlk8
— GitLab.com Status (@gitlabstatus) February 1, 2017
Пока компания восстанавливает данные из резервной копии, сделанной за 6 часов до инцидента. Все изменения, внесенные в пострадавшую базу данных с 19:20 до 01:25 по киевскому времени в ночь с 31 января на 1 февраля, были утеряны.
Ошибке системного администратора, которая привела к утере данных и временной недоступности сервиса, предшествовала активность спамеров. Около 21:00 UTC (23:00 по Киеву) с одного аккаунта было произведено около 47 000 логинов с различных IP. Администрация заблокировала спамеров и отключила аккаунт. Через час репликация основной базы данных остановилась из-за возросшего числа запросов на запись, которые не были выполнены второстепенной БД.
Системный администратор уже собирался покинуть рабочее место, но не стал этого делать из-за возникающих проблем. После 23:00 UTC он решает очистить одну из директорий, но вместо второстепенной базы данных выбирает основную. После нескольких секунд он замечает ошибку и отменяет операцию, “но уже слишком поздно”. Из около 300 ГБ данных остается лишь 4,5 ГБ.
В компании отметили, что при восстановлении не сработала ни одна из пяти существующих в компании систем для хранения резервных копий. К примеру, в одном из случаев процедура сохранения данных срабатывала с ошибкой, из-за чего копия не создавалась. При этом, у команды не было системы оповещения об ошибках при создании бэкапов. В итоге в распоряжении проекта оказалась одна из резервных копий, созданный вручную примерно за шесть часов до инцидента.
Команда GitLab быстро признала причину ошибки и пытается держать общественность в курсе ситуации. В Twitter-аккаунте компании @GitLabStatus размещаются обновления по ситуации каждый час. Сотрудники также выложили в открытый доступ документ с хронологией всего инцидента и запустили онлайн-трансляцию на YouTube с ходом восстановительных работ.
Напомним, прошлой осенью GitLab привлек $20 млн инвестиций серии В от фондов August Capital, Khosla Ventures и Y Combinator.