nbackup: быстрое резервное копирование Firebird
База на десятки гигабайт, gbak молотит часами, а система 24/7? Для этого случая в поставке Firebird (с версии 2.1) есть nbackup — утилита физического (постраничного) бэкапа: она делает мгновенный снапшот базы, а все изменения во время копирования пишет во временный файл дельты (.delta). Пользователи продолжают работать.
nbackup vs gbak
| Критерий | nbackup | gbak |
|---|---|---|
| Тип | Физический (копия страниц) | Логический (выгрузка данных) |
| Скорость | Мгновенный снапшот | Медленно на больших базах |
| Проверка целостности | Нет — копирует как есть | Да, валидирует записи |
| Сжатие | Нет | Да (.fbk) |
| Перенос между версиями/платформами | Нет | Да |
| Инкрементальность | Да, уровни 0–8 | Нет |
Это не «или–или»: связка — стандарт де-факто для больших баз 24/7.
Команды
nbackup -B 0 база # полный бэкап уровня 0 (снапшот)
nbackup -B 1 база backup1.nbk # инкремент уровня 1 (от уровня 0)
nbackup -R база backup0.nbk backup1.nbk # восстановление: слить дельты
nbackup -F база # зафиксировать дельту после ручного копирования файла
Уровни: -B 0 — полная копия, -B 1..8 — инкременты относительно предыдущего уровня. Дельты пишутся в .delta-файлы, уровни идут строго по порядку.
Восстановление
Восстановление — слияние дельт командой -R. Результат — не .fbk, а обычная копия страниц базы: переименуйте файл в .fdb и запустите сервер. RTO минимальный — никакой длинной процедуры восстановления, как у gbak.
Стратегия «и–и»
- nbackup каждый час — быстрые точки восстановления без нагрузки;
- gbak раз в сутки ночью — проверка целостности, сжатый архив, страховка для переноса на другую версию.
Маленькой базе (пара гигабайт) хватает одного gbak.
Грабли
| Проблема | Что делать |
|---|---|
| Файл снапшота скопировали «попозже» | Копируйте сразу: дельта продолжает писаться и растёт |
| При восстановлении пропущен уровень | Уровни нужны все и по порядку — храните цепочку |
| База была битой до бэкапа | nbackup не проверяет целостность — честно скопирует мусор; базу проверяют gbak/gfix |
| Блокировки на Firebird 2.5 | Использовать свежие версии — блокировочные баги 2.5 давно исправлены |
| Скопировали файл вручную | После успешного копирования — nbackup -F база, иначе дельта растёт вечно |
Что почитать дальше
- gbak: резервное копирование — обязательный напарник nbackup: «снапшоты каждый час + ночной архив»
- gstat — диагностика: почему база разрослась и что с индексами
- Порты Firebird — если бэкап снимается по сети с другого хоста
Обсуждение