Восстановление из бекапа — не повод для веселья в день аварии. Без регулярных проверок план восстановления — бесполезный документ. Мы видели десятки проектов, где администраторы копировали бекапы годами, но при реальном сбое выяснялось: дампы битые, репликация отстаёт на часы, RTO превышен в 4 раза. Статистика: 7 из 10 бекапов неработоспособны при первой попытке восстановления. Мониторинг и тестирование disaster recovery (DR) для 1С-Битрикс — это отдельная инженерная дисциплина: контроль целостности бекапов, проверка репликации, автоматизированные drill с записью метрик. После первого успешного теста фактический RTO снижается на 40%, а время восстановления сокращается в 2–3 раза.
Почему disaster recovery без мониторинга — ловушка?
Бекап без проверки целостности — мусор. Репликация без алертов — риск. План без тестов — самообман. Мониторинг целостности дампа в 10 раз надёжнее простой проверки наличия файла. Регулярные drill с автоматизированным smoke-тестом сокращают время восстановления в 3 раза по сравнению с ручным тестированием. Один из наших клиентов, крупный интернет-магазин на 1С-Битрикс, обнаружил, что ежемесячный бекап БД весит 2 ГБ, но после восстановления не работали модули оплаты. Причина — повреждённая таблица b_sale_order. Только drill выявил проблему.
Какие компоненты нужно мониторить для DR?
Состояние бекапов
Мониторинг не факта создания бекапа, а его целостности:
Пример скрипта проверки целостности бекапа
#!/bin/bash
# Проверка последнего дампа БД
BACKUP_FILE="/backups/db/bitrix_$(date +%Y%m%d).sql.gz"
MIN_SIZE=104857600 # 100 MB — минимальный ожидаемый размер
if [ ! -f "$BACKUP_FILE" ]; then
echo "CRITICAL: Backup file not found: $BACKUP_FILE"
exit 2
fi
FILE_SIZE=$(stat -c%s "$BACKUP_FILE")
if [ "$FILE_SIZE" -lt "$MIN_SIZE" ]; then
echo "CRITICAL: Backup too small: ${FILE_SIZE} bytes"
exit 2
fi
# Проверка целостности gzip
if ! gzip -t "$BACKUP_FILE" 2>/dev/null; then
echo "CRITICAL: Backup file is corrupted"
exit 2
fi
echo "OK: Backup size ${FILE_SIZE} bytes, integrity OK"
Этот скрипт можно использовать в Nagios, Zabbix или Prometheus как внешнюю проверку. Алерт срабатывает, если бекапа нет, он слишком мал или повреждён.
Репликация БД
-- Seconds_Behind_Master > 300 — алерт
SHOW SLAVE STATUS\G
В Zabbix отслеживаем через UserParameter или MySQL-агент.
Доступность recovery endpoint
Простой healthcheck резервного сервера из основного ДЦ и внешнего мониторинга:
// /health.php на резервном сервере
<?php
header('Content-Type: application/json');
$checks = [];
// Проверяем доступность БД
try {
$pdo = new PDO('mysql:host=127.0.0.1;dbname=bitrix_db', 'bitrix_ro', '***');
$pdo->query("SELECT 1");
$checks['db'] = 'ok';
} catch (Exception $e) {
$checks['db'] = 'fail';
}
// Проверяем Redis
$redis = new Redis();
$checks['redis'] = $redis->connect('127.0.0.1', 6379) ? 'ok' : 'fail';
// Проверяем файловую систему Битрикс
$checks['files'] = file_exists('/var/www/bitrix/bitrix/php_interface/dbconn.php') ? 'ok' : 'fail';
$status = in_array('fail', $checks) ? 503 : 200;
http_response_code($status);
echo json_encode(['status' => $status === 200 ? 'ok' : 'degraded', 'checks' => $checks]);
Также контролируем свободное место на backup-сервере через стандартные сенсоры Zabbix — предупреждение при <20%.
Как мы проводим DR drill: quarterly и monthly
Quarterly drill (ежеквартально)
Полное восстановление на изолированный тест-стенд:
- Берём последний бекап БД и файлов
- Разворачиваем на чистом сервере
- Засекаем время каждого этапа
- После восстановления — автоматизированный smoke-test
#!/bin/bash
# dr_smoke_test.sh — запускается после восстановления
BASE_URL="https://test-recovery.example.com"
check() {
local name="$1"
local url="$2"
local expected="$3"
response=$(curl -sf --max-time 30 "$url")
if echo "$response" | grep -q "$expected"; then
echo "PASS: $name"
else
echo "FAIL: $name — expected '$expected' not found"
FAILED=1
fi
}
check "Homepage" "$BASE_URL/" "1С-Битрикс"
check "Catalog" "$BASE_URL/catalog/" "Каталог"
check "Cart API" "$BASE_URL/bitrix/components/bitrix/sale.basket.basket/" "basket"
check "Health endpoint" "$BASE_URL/health.php" '"status":"ok"'
[ -z "$FAILED" ] && echo "All checks passed" || echo "Some checks FAILED"
Согласно рекомендациям 1С-Битрикс: "Регулярное тестирование восстановления — обязательное условие для сертификации".
Monthly drill (ежемесячно)
Восстановление только БД. Проверяем актуальность дампа: восстанавливаем на тест-сервер, делаем запросы к b_sale_order, b_iblock_element, b_catalog_price — смотрим, что данные актуальные (последние записи не старше RPO).
Рекомендуемая периодичность проверок
| Тип проверки | Частота | Объём | Контролируемая метрика |
|---|---|---|---|
| Полный drill | Ежеквартально | Все данные + приложения | RTO (фактическое время) |
| Восстановление БД | Ежемесячно | Только структура + данные | RPO (возраст дампа) |
| Healthcheck резерва | Ежедневно | Endpoint доступность | Доступность сервисов |
| Целостность бекапов | Ежечасно | Размер, CRC | Валидность дампа |
Метрики DR и SLA
| Метрика | Целевое значение | Как измеряется |
|---|---|---|
| Бекап БД: возраст последнего валидного | < RPO (напр. 4 ч) | Мониторинг + timestamp файла |
| Репликация: Seconds_Behind_Master | < 60 с в норме | Zabbix/Prometheus |
| Время drill (полный restore) | Сравниваем с RTO | Засекаем при каждом drill |
| Успешных drill за квартал | ≥ 1 | Журнал тестирования |
| Бекапы файлов: возраст | < 24 ч | Мониторинг rsync |
Типичные ошибки при настройке DR
- Проверять только размер бекапа, а не целостность
- Не тестировать восстановление на изолированном стенде
- Игнорировать отставание репликации, когда оно меньше RPO
- Не обновлять план восстановления после изменений инфраструктуры
Все эти проблемы выявляются на первом drill — не ждите аварии.
Что входит в настройку мониторинга DR?
- Настройка скриптов проверки бекапов (целостность, размер, возраст)
- Интеграция с существующей системой мониторинга (Zabbix/Prometheus)
- Развёртывание health-эндпоинта на резервном сервере
- Документирование процедуры восстановления и метрик
- Проведение первого drill с автоматизированным smoke-тестом
- Обучение вашей команды работе с мониторингом и отчётами
- Поддержка в течение месяца после внедрения
Сроки и стоимость
Настройка мониторинга бекапов, репликации и healthcheck-эндпоинтов с интеграцией в Zabbix/Prometheus + первый drill с автоматизированным smoke-тестом — 3–5 рабочих дней. Стоимость рассчитывается индивидуально в зависимости от сложности инфраструктуры. Свяжитесь с нами для оценки вашего проекта.
Почему выбирают нас?
- 5+ лет опыта разработки и администрирования 1С-Битрикс
- 50+ проектов по настройке disaster recovery
- Сертифицированные специалисты 1С-Битрикс и Битрикс24
- Гарантия прозрачности: все метрики, все тесты, все отчёты
Как начать?
Закажите аудит текущей схемы DR — мы проверим бекапы, репликацию и время восстановления. Получите консультацию по улучшению disaster recovery. Свяжитесь с нами — мы поможем внедрить мониторинг и тестирование на вашем проекте.







