Відновлення сайту після збою: runbook, бекапи, терміни

Відновлення сайту після збою

Розробка та обслуговування будь-яких видів сайтів:

Інформаційні сайти або веб-програми
Сайти візитки, landing page, корпоративні сайти, онлайн каталоги, квіз, промо-сайти, блоги, ресурси новин, інформаційні портали, форуми, агрегатори
Сайти або веб-програми електронної комерції
Інтернет-магазини, B2B-портали, маркетплейси, онлайн-обмінники, кешбек-сайти, біржі, дропшиппінг-платформи, парсери товарів
Веб-програми для управління бізнес-процесами
CRM-системи, ERP-системи, корпоративні портали, системи управління виробництвом, парсери інформації
Сайти або веб-програми електронних послуг
Дошки оголошень, онлайн-школи, онлайн-кінотеатри, конструктори сайтів, портали надання електронних послуг, відеохостинги, тематичні портали

Це лише деякі з технічних типів сайтів, з якими ми працюємо, і кожен із них може мати свої специфічні особливості та функціональність, а також бути адаптованим під конкретні потреби та цілі клієнта.

Послуги, які ми пропонуємо
Показано 1 з 1Усі 2062 послуг
Відновлення сайту після збою: runbook, бекапи, терміни
Середній
від 1 дня до 3 днів

Наші компетенції:

Часті запитання

Останні роботи

  • image_website-b2b-advance_0.webp
    Розробка сайту компанії B2B ADVANCE
    1418
  • image_web-applications_feedme_466_0.webp
    Розробка веб-додатків для компанії FEEDME
    1285
  • image_websites_belfingroup_462_0.webp
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    983
  • image_ecommerce_furnoro_435_0.webp
    Розробка інтернет магазину для компанії FURNORO
    1243
  • image_crm_enviok_479_0.webp
    Розробка веб-додатків для компанії Enviok
    983
  • image_bitrix-bitrix-24-1c_fixper_448_0.webp
    Розробка веб-сайту для компанії ФІКСПЕР
    997

Відновлення сайту після збою

Ви виявили, що сайт не відкривається, а SSH-доступ втрачено? Або останній бекап виявився битим? За 10 років ми відновили понад 50 проектів: від зломів WordPress до повної відмови дискового масиву. Ключ до швидкого recovery — не героїзм, а підготовлений runbook і регулярно тестовані бекапи. Без цього відновлення може зайняти дні замість годин. У цій статті ви знайдете готові скрипти діагностики та відновлення, а також поради з автоматизації бекапів. Наш досвід підтверджує: правильна підготовка скорочує час простою в 5 разів.

Основні сценарії збоїв та діагностика

Діагностика — перший крок. Ось стандартний набір команд, які ми запускаємо при недоступності сайту:

# Перевірка сервісів та логів systemctl status nginx php8.2-fpm mysql journalctl -u nginx -n 100 --no-pager tail -100 /var/log/php8.2-fpm.log # Діагностика диска та пам'яті df -h du -sh /var/log/* | sort -rh | head -10 dmesg | grep -i "out of memory" free -m # Якщо база не відповідає sudo systemctl restart postgresql tail -50 /var/log/postgresql/postgresql-14-main.log 

Типові причини: переповнений диск (очистіть логи, тимчасові файли Docker), нестача пам'яті (додайте swap), пошкоджені таблиці бази даних. Після діагностики обирайте сценарій відновлення. Якщо під рукою немає свіжого бекапу, не панікуйте — часто допомагає відкат останнього стабільного дампа з хмарного сховища. Переконайтеся, що версія СУБД збігається, інакше відновлення не спрацює.

Чому тестування бекапів критичне?

30% бекапів, які ми перевіряємо на продакшені, виявляються марними: архів пошкоджено, дамп неповний, версія СУБД не збігається. Ми тестуємо відновлення на стенді перед тим, як покладатися на бекап. Тестування займає 1-2 години, але може заощадити дні простою. Регулярні тести — єдиний спосіб переконатися, що ваш Disaster Recovery Plan працює. Згідно з Wikipedia, тестування — обов'язкова частина плану.

Метод бекапу Швидкість створення Обсяг сховища Швидкість відновлення
Повний Повільно (години) Великий Швидко (хвилини)
Інкрементальний Швидко (хвилини) Маленький Середньо (години)
Диференціальний Середньо (30 хв) Середній Швидко (хвилини)

Рекомендуємо комбінацію: щотижневий повний + щоденний інкрементальний. Відновлення з інкрементального бекапу займає в 2-3 рази довше, ніж з повного, але економить місце. Інкрементальний бекап займає в 2 рази менше місця, ніж повний.

Відновлення з бекапу: покроково (наш кейс)

Розберемо реальну ситуацію: клієнт оновив плагін, сайт ліг, а бекап двотижневої давнини. Ось що ми зробили:

# Визначаємо останній працюючий бекап aws s3 ls s3://my-backups/database/ | tail -5 # Завантажуємо aws s3 cp s3://my-backups/database/mysite_<backup_date>.dump.gz /tmp/ # Створюємо нову БД (стару не чіпаємо — спочатку тестуємо) createdb mysite_restored gunzip < /tmp/mysite_<backup_date>.dump.gz | pg_restore -d mysite_restored --no-owner # Перевіряємо цілісність psql -d mysite_restored -c "SELECT COUNT(*) FROM users;" psql -d mysite_restored -c "SELECT MAX(created_at) FROM orders;" # Перемикаємо застосунок на відновлену БД (змінюємо DB_NAME в .env) # Якщо все ок — перейменовуємо БД # ALTER DATABASE mysite RENAME TO mysite_broken; # ALTER DATABASE mysite_restored RENAME TO mysite; 

Після відновлення ми налаштували щоденні інкрементальні бекапи на Amazon S3 і автоматизували тестування через pgBackRest.

Як автоматизувати тестування бекапів?

Тестування вручну — дорого. Ми використовуємо скрипт, який раз на тиждень розгортає бекап на ізольованому стенді та перевіряє цілісність даних. Якщо тест падає — команда отримує алерт у Slack. Автоматизація тестування знижує ризик виявлення битого бекапу в момент аварії на 80%.

Відновлення файлів та rollback коду

Якщо пошкоджено лише файли (наприклад, медіа), використовуйте синхронізацію з хмари:

aws s3 sync s3://my-backups/files/ /var/www/mysite/storage/app/public/ \ --exact-timestamps chown -R www-data:www-data /var/www/mysite/storage/ chmod -R 755 /var/www/mysite/storage/ 

Для відкату коду застосовуйте Git або Docker:

# Через Git git log --oneline -10 git checkout <commit-hash> # або git revert <bad-commit> # Через Docker docker pull myregistry/myapp:previous-tag docker stop myapp docker run -d --name myapp myregistry/myapp:previous-tag 

Як підготувати runbook для швидкого відновлення?

Runbook — це покрокова інструкція для команди. Без неї у стресовій ситуації втрачаєте до 3 разів більше часу. Ми включаємо в runbook:

  • Скрипти перевірки сервісів
  • Сценарії відновлення для кожного типу збою
  • Контакти відповідальних і канали оповіщення
  • Шаблон постмортему

Приклад таблиці runbook:

Етап Дія Час
Діагностика ssh, systemctl, df, free 5 хв
Швидке відновлення перезапуск сервісів або бекап 5–10 хв
Сповіщення Slack: #incidents, статус-сторінка 2 хв
Постмортем Root Cause Analysis 24 год

Що входить в послугу відновлення під ключ

  • Аудит поточної схеми бекапів — перевіряємо, що зберігається та відновлюється.
  • Підготовка runbook — докладна інструкція під ваш стек.
  • Тестування відновлення на стенді — доводимо, що процес працює.
  • Оптимізація бекапів — інкрементальні, off-site, шифровані.
  • Навчання команди — проводимо сесію з відпрацювання сценарію відмови.
  • Супровід після відновлення — гарантуємо стабільність протягом 30 днів.

Терміни та вартість

Відновлення сайту з готовим runbook — від 1 до 3 днів залежно від складності. Вартість такого відновлення під ключ — від 300 до 1500 доларів. Повний аудит та налаштування Disaster Recovery Plan — від 5 до 10 робочих днів. Вартість розраховується індивідуально після аудиту.

Упевнені в якості — гарантуємо результат. Оцініть ваш recovery-план: пишіть нам для безкоштовного аудиту та чек-листа готовності. Оцінимо проект безкоштовно. Замовте відновлення сьогодні — наші інженери зв'яжуться з вами протягом години.

Наші цифри: 10+ років досвіду, 50+ відновлених проектів, середній термін відновлення 45 хвилин. Відновлення з тестованого бекапу в 5 разів швидше, ніж з неперевіреного. 80% збоїв вирішуються перезапуском сервісів.