Разработка плана аварийного восстановления 1С-Битрикс

Наша компания занимается разработкой, поддержкой и обслуживанием решений на Битрикс и Битрикс24 любой сложности. От простых одностраничных сайтов до сложных интернет магазинов, CRM систем с интеграцией 1С и телефонии. Опыт разработчиков подтвержден сертификатами от вендора.
Предлагаемые услуги
Показано 1 из 1 услугВсе 1626 услуг
Разработка плана аварийного восстановления 1С-Битрикс
Средняя
~1-2 недели
Часто задаваемые вопросы
Наши компетенции:
Этапы разработки
Последние работы
  • image_website-b2b-advance_0.png
    Разработка сайта компании B2B ADVANCE
    1175
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Разработка веб-сайта для компании ФИКСПЕР
    811
  • image_bitrix-bitrix-24-1c_development_of_an_online_appointment_booking_widget_for_a_medical_center_594_0.webp
    Разработка на базе Битрикс, Битрикс24, 1С для компании Development of an Online Appointment Booking Widget for a Medical Center
    564
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Разработка на базе 1С Предприятие для компании МИРСАНБЕЛ
    747
  • image_crm_dolbimby_434_0.webp
    Разработка сайта на CRM Битрикс24 для компании DOLBIMBY
    655
  • image_crm_technotorgcomplex_453_0.webp
    Разработка на базе Битрикс24 для компании ТЕХНОТОРГКОМПЛЕКС
    976

Разработка плана аварийного восстановления 1С-Битрикс

Сайт упал в пятницу вечером. Нет понимания, что делать: бекап есть, но непонятно, куда его разворачивать, в каком порядке, кто за что отвечает. Через два часа паники восстанавливают что-то похожее на рабочее состояние — но данные за последние 6 часов потеряны, и ещё три дня разгребают последствия. Disaster Recovery Plan (DRP) — это не бюрократический документ, а пошаговая инструкция с конкретными командами, проверенная в условиях реального отказа.

Что должен содержать DRP для Битрикс

Хороший план не описывает теорию — он описывает конкретные действия конкретного человека. Минимальный состав:

  • Матрица ролей: кто что делает при аварии (DevOps, разработчик, менеджер, служба поддержки)
  • RTO (Recovery Time Objective) и RPO (Recovery Point Objective) — согласованные с бизнесом: «восстановить за 2 часа, потеря данных не более 1 часа»
  • Контакты: хостинг, 1С-партнёр, ответственный разработчик, резервный разработчик
  • Схема бекапов с указанием мест хранения и способов доступа
  • Пошаговые сценарии восстановления для каждого типа отказа

Типы отказов и сценарии

Сценарий 1: Падение веб-сервера (nginx/apache)

# Диагностика
systemctl status nginx
journalctl -xe -u nginx --since "10 minutes ago"
nginx -t  # Проверка конфига

# Быстрый откат конфига
cp /etc/nginx/nginx.conf.bak /etc/nginx/nginx.conf
systemctl restart nginx

Сценарий 2: Повреждение файловой системы Битрикс

# Остановить php-fpm, чтобы не затирало восстанавливаемые файлы
systemctl stop php8.1-fpm

# Восстановление из резервной копии (rsync с backup-сервера)
rsync -az --delete backup-server:/backups/bitrix/latest/ /var/www/bitrix/

# Восстановить права
chown -R www-data:www-data /var/www/bitrix/
find /var/www/bitrix/ -type d -exec chmod 755 {} \;
find /var/www/bitrix/ -type f -exec chmod 644 {} \;

systemctl start php8.1-fpm

Сценарий 3: Повреждение или потеря базы данных

Самый критичный сценарий для интернет-магазина. Таблицы b_sale_order, b_sale_basket, b_catalog_price — данные, которые нельзя потерять.

# Восстановление из mysqldump
mysql -u root -p < /backups/db/bitrix_$(date +%Y%m%d).sql

# Если дамп частичный — восстановление отдельных таблиц
mysql -u root -p bitrix_db < /backups/db/b_sale_order_$(date +%Y%m%d).sql
mysql -u root -p bitrix_db < /backups/db/b_catalog_price_$(date +%Y%m%d).sql

При использовании MySQL репликации — переключение на реплику:

# На реплике
STOP SLAVE;
RESET SLAVE ALL;
# Меняем dbconn.php на IP реплики
# Реплика становится мастером

Сценарий 4: Взлом и заражение

Восстановление из бекапа до момента взлома — но сначала нужно понять, когда это произошло. Битрикс пишет лог в /bitrix/php_interface/error.log и в таблицу b_event_log. Анализируем access-лог nginx:

# Найти первые признаки аномалии
grep -E "(POST|eval|base64_decode|system\()" /var/log/nginx/access.log | \
    awk '{print $1}' | sort | uniq -c | sort -rn | head -20

# После восстановления — смена всех паролей
# /bitrix/.settings.php — пароль БД
# /bitrix/php_interface/dbconn.php
# Пароли всех администраторов через b_user

Структура бекапов под DRP

Стандартная схема, которую мы закладываем в план:

Объект Частота Хранение Способ
БД (полный дамп) Каждые 4 часа 7 дней mysqldump + S3/Backblaze
БД (бинлог) Непрерывно 48 часов MySQL binlog → remote
Файлы /upload 1 раз в сутки 14 дней rsync → backup-сервер
Файлы /bitrix 1 раз в неделю 4 недели tar.gz → S3
Конфиги (/etc) При изменении 90 дней Git + backup

Бекап БД каждые 4 часа при RPO = 1 час — недостаточно. В этом случае добавляем непрерывную репликацию бинлога: она позволяет восстановить состояние на любой момент времени через mysqlbinlog.

Битрикс-специфика: что теряется при стандартном бекапе

Стандартный инструмент «Резервное копирование» в административной панели (Настройки → Инструменты → Резервное копирование) создаёт архив сайта. Но он не включает:

  • Кэш Bitrix (/bitrix/cache/, /bitrix/managed_cache/) — не нужен при восстановлении, его нужно пересоздать
  • Временные файлы сессий — нужно очистить после восстановления: \Bitrix\Main\Application::getInstance()->getSession()->destroy()
  • Данные из внешних сервисов (1С, CRM) — нужна отдельная процедура ресинхронизации
  • SSL-сертификаты — хранятся отдельно от файлов сайта

После восстановления из бекапа обязательный чеклист:

  1. Сбросить кэш: BXClearCache(true) или через bitrix/admin/cache.php
  2. Перестроить фасетный индекс каталога
  3. Проверить агентов Битрикс (/bitrix/admin/agent_list.php)
  4. Проверить cron-задачи
  5. Запустить тестовый заказ в магазине

RTO по типам отказов

Тип отказа Реалистичный RTO Что нужно подготовить
Перезапуск nginx/php-fpm 5 минут Мониторинг + Runbook с командами
Откат файлов после взлома 30–60 минут Бекап файлов + чеклист сброса кэша
Восстановление БД из дампа 1–3 часа Дамп + тестированная процедура
Переключение на реплику БД 15–30 минут Реплика + скрипт переключения dbconn
Полное восстановление на новый сервер 4–8 часов Playbook Ansible + образ сервера

RTO «4 часа» без тестирования — это оптимистичная оценка. Реальный RTO устанавливается после первого drill: прогона восстановления в тестовой среде с измерением времени.

Тестирование плана

DRP, который ни разу не проверялся — не работает. Минимум раз в квартал проводим drill:

  • Восстанавливаем последний бекап на тестовую среду
  • Засекаем время каждого шага
  • Проверяем корректность данных (заказы, товары, пользователи)
  • Фиксируем расхождения с планом и обновляем документ

Сроки разработки

Этап Содержание Срок
Аудит текущей инфраструктуры Схема бекапов, точки отказа, роли 1–2 дня
Разработка сценариев и Runbook 4–6 сценариев с командами 2–3 дня
Настройка инфраструктуры бекапов S3, репликация, мониторинг 2–5 дней
Тестовый drill + корректировка Восстановление на тест-стенде 1–2 дня
Документация и передача команде Итоговый DRP + обучение 1 день