Нередко перед системными администраторами, обслуживающими инфраструктуру 1С, встает задача обеспечить непрерывность работы бизнеса. Обычных резервных копий может быть недостаточно, если время простоя критично. Возникает вопрос: как создать "горячий" или "теплый" дубликат базы данных MS SQL, на который можно было бы быстро переключиться в случае сбоя основного сервера? При этом желательно обойтись "малой кровью", без привлечения дорогостоящих специалистов и покупки лицензий Enterprise-уровня.
Рассмотрим различные подходы к этой задаче, от самых простых и доступных до промышленных стандартов, и найдем оптимальное решение для ситуации, когда нет выделенного администратора баз данных (DBA).
В первом сообщении автор упоминает технологию зеркалирования (Database Mirroring). Важно понимать, что Microsoft объявила эту технологию устаревшей (deprecated). Она все еще поддерживается в некоторых версиях MS SQL Server, но не рекомендуется для новых внедрений и будет удалена в будущих версиях. Поэтому строить новую систему на ее основе — неперспективно.
Современными и рекомендуемыми технологиями для обеспечения высокой доступности являются Always On Availability Groups и более простая в настройке Доставка журналов (Log Shipping). Проанализируем оба варианта, чтобы понять, какой из них подходит для нашей задачи.
Always On Availability Groups (Группы доступности Always On) — это флагманская технология Microsoft для обеспечения высокой доступности и аварийного восстановления. Она представляет собой эволюцию зеркалирования и кластеризации.
Ключевые преимущества:
Однако, как справедливо заметили на форуме, это решение весьма затратно. Вот его основные требования:
Вывод: Always On — это промышленный стандарт для критически важных систем, где даже несколько минут простоя недопустимы. Для задачи "сделать малой кровью" без DBA этот вариант не подходит из-за высокой стоимости и сложности.
Этот метод был очень точно описан в одном из сообщений на форуме. Доставка журналов (Log Shipping) — это процесс автоматизации резервного копирования журналов транзакций с основного сервера и их последующего восстановления на резервном. Это позволяет поддерживать резервную базу данных в актуальном состоянии с небольшой задержкой.
Это решение идеально подходит для нашей задачи, так как оно:
Рассмотрим по шагам, как настроить доставку журналов для базы 1С.
Шаг 1. Подготовка основной базы данных
Для работы Log Shipping база данных на основном сервере (primary) должна использовать полную модель восстановления (Full recovery model). Это позволяет вести журнал транзакций, который мы и будем копировать.
Шаг 2. Создание начальной резервной копии
Теперь нужно создать полную резервную копию основной базы, чтобы развернуть ее на резервном сервере.
-- Пример T-SQL запроса для создания бэкапа
BACKUP DATABASE [ИмяВашейБазы]
TO DISK = 'C:\Backup\ИмяВашейБазы_full.bak'
WITH NOFORMAT, INIT, NAME = 'ИмяВашейБазы-Full Database Backup', SKIP, NOREWIND, NOUNLOAD, STATS = 10;
После создания скопируйте этот файл бэкапа на резервный сервер (secondary).
Шаг 3. Восстановление базы на резервном сервере
На резервном сервере нужно восстановить базу из созданного бэкапа, но в особом режиме, который позволит в дальнейшем "накатывать" на нее журналы транзакций. Есть два таких режима:
WITH NORECOVERY: База данных после восстановления будет находиться в состоянии "Restoring..." и будет недоступна для подключения до момента ее окончательного перевода в рабочий режим. Это самый простой вариант.WITH STANDBY: База данных будет в режиме "только для чтения". Пользователи смогут к ней подключаться и, например, строить отчеты. При каждом восстановлении очередного лога транзакций все активные подключения к базе будут принудительно разорваны.Для нашей задачи простого резервирования достаточно режима NORECOVERY.
-- Пример T-SQL запроса для восстановления
RESTORE DATABASE [ИмяВашейБазы]
FROM DISK = 'D:\Restore\ИмяВашейБазы_full.bak'
WITH MOVE 'ИмяФайлаДанных_Data' TO 'D:\Data\ИмяВашейБазы.mdf',
MOVE 'ИмяФайлаЛогов_Log' TO 'D:\Log\ИмяВашейБазы_log.ldf',
NORECOVERY, NOUNLOAD, STATS = 5;
Важно: Пути к файлам базы (.mdf и .ldf) на резервном сервере могут отличаться от путей на основном. Укажите корректные пути в секции WITH MOVE.
Шаг 4. Настройка Log Shipping
Теперь, когда основа заложена, можно настроить автоматизацию. Это удобно сделать через графический интерфейс SSMS.
После этого процесс будет работать автоматически. Вы можете следить за его состоянием через "Log Shipping Monitor".
Итак, основной сервер вышел из строя. Переключение на резервный сервер при использовании Log Shipping выполняется вручную.
Переключение на резервную базу:
BACKUP LOG [ИмяВашейБазы] TO DISK = '...' WITH NORECOVERY;RESTORE DATABASE [ИмяВашейБазы] WITH RECOVERY;Восстановление и возврат на основной сервер:
Когда основной сервер будет починен, нужно вернуть все "как было".
Вывод: Метод доставки журналов транзакций (Log Shipping) является наиболее сбалансированным решением для создания "теплого" резерва базы данных 1С на MS SQL без значительных затрат и сложных настроек. Он позволяет быстро восстановить работу системы с минимальными потерями данных, что полностью соответствует запросу "сделать малой кровью".