Резервное копирование MS SQL в «Бересте»: как мы используем VDI
Вокруг резервного копирования Microsoft SQL Server обычно обсуждают либо штатные BACKUP DATABASE ... TO DISK, либо интеграцию с большими корпоративными системами защиты данных. Между этими двумя мирами есть важный слой: VDI (Virtual Device Interface). Именно через него внешнее приложение может встроиться в процесс резервного копирования и восстановления так, чтобы SQL Server писал не в обычный .bak по своему усмотрению, а в управляемый приложением поток данных.
В этой статье разберем небольшой, но вполне рабочий проект на C++, который реализует РК и ВД для MS SQL Server через VDI в ПО «Береста».
Утилита поддерживает:
• полный, дифференциальный и логический backup;
• restore одной базы или всех найденных;
• striped backup/restore в несколько потоков;
• Windows-аутентификацию и SQL-аутентификацию;
• работу с SQL Server 2008-2022.
Почему VDI?
Если задача ограничивается локальным резервным копированием на диск, VDI не нужен: достаточно стандартных T-SQL команд. Но как только появляется внешняя система резервного копирования, картина меняется.
СРК обычно хочет сама управлять:
• жизненным циклом задания;
• маршрутом потока данных;
• параллелизмом;
• политиками хранения;
• журналированием и обработкой ошибок.
И здесь VDI становится мостом между SQL Server и внешним приложением. SQL Server продолжает выполнять привычные BACKUP и RESTORE, но вместо физического файла работает с виртуальными устройствами. А уже клиент VDI читает или записывает данные туда, куда считает нужным: в локальные файлы, сетевое хранилище, object storage, дедуп-слой или собственный медиасервер.















