Как настраивать, обслуживать и переводить в режим в сети сервер «горячего» резервирования (Transact-SQL)

Настройка резервного сервера обычно включает в себя создание полной резервной копии и периодическое резервное копирование журналов транзакций основного сервера, а затем их последовательное применение на резервном сервере. Между восстановлениями резервных копий резервный сервер остается в режиме только для чтения. Для подготовки резервного сервера к работе необходимо восстановить все ожидающие восстановления резервные копии журнала транзакций, включая резервную копию активного журнала транзакций и базы данных основного сервера.

Создание резервных копий на сервере-источнике

  1. Для создания полной резервной копии выполните инструкцию BACKUP DATABASE.

  2. Для создания резервной копии журнала транзакций выполните инструкцию BACKUP LOG.

  3. Повторите шаг 2 для каждого журнала транзакций, который нужно создать.

Настройка и обслуживание резервного сервера

  1. Для восстановления полной резервной копии, созданной в шаге 1 на сервере-источнике, выполните инструкцию RESTORE DATABASE с предложением NORECOVERY.

  2. Для восстановления резервной копии каждого журнала транзакций, созданного в шаге 2 на сервере-источнике, выполните инструкцию RESTORE LOG с предложением STANDBY. Укажите имя файла отката, в котором находится содержимое измененных страниц данных на момент отката незафиксированных транзакций для этих страниц.

    ПримечаниеПримечание

    Для повышения производительности при применении нескольких журналов регистрации используйте предложение WITH NORECOVERY. Иногда резервный файл необходим только в качестве копии отработки отказа для чтения, которую можно использовать в случае, если основной сервер находится в режиме «вне сети».

  3. Повторите шаг 2 для каждого журнала транзакций, созданного на сервере-источнике.

Перевод резервного сервера в режим «в сети» (сбой сервера-источника)

  1. Если возможно, создайте резервную копию активного журнала транзакций (его заключительного фрагмента). Для создания резервной копии заключительного фрагмента журнала в случае, если не возможен нормальный запуск базы данных, выполните в базе данных-источнике инструкцию BACKUP LOG с предложением WITH NO_TRUNCATE. Это последняя резервная копия журнала транзакций, примененная к резервному серверу перед переводом его в режим «в сети». Дополнительные сведения см. в разделе Как создавать резервные копии журналов транзакций (Transact-SQL).

  2. Чтобы применить к резервному серверу все резервные копии журнала транзакций, включая копию, сделанную в шаге 1, выполните инструкцию RESTORE LOG с предложением STANDBY.

    ПримечаниеПримечание

    Для повышения производительности при применении нескольких журналов регистрации используйте предложение WITH NORECOVERY. Пример того, когда использовать предложение WITH STANDBY, а когда WITH NORECOVERY, см. ниже.

  3. Чтобы восстановить базу данных и перевести резервный сервер в режим «в сети», выполните инструкцию RESTORE DATABASE WITH RECOVERY.

Пример

В этом примере база данных MyAdvWorks устанавливается на резервный сервер. Между операциями восстановления эту базу данных можно использовать в режиме только для чтения.

-- Restore the initial full backup on the standby server.
USE master
GO
RESTORE DATABASE MyAdvWorks
   FROM MyAdvWorks_1 
   WITH STANDBY = 'c:\undo.ldf'
GO
-- Apply the first transaction log backup.
RESTORE LOG MyAdvWorks
   FROM MyAdvWorks_log1
   WITH STANDBY = 'c:\undo.ldf'
GO
-- Apply the next transaction log backup.
RESTORE LOG MyAdvWorks
   FROM MyAdvWorks_log2
   WITH STANDBY = 'c:\undo.ldf'
GO
-- Repeat for each transaction log backup created on the 
-- primary server.
--
-- Time elapses.. .. ..
--
-- The primary server has failed. Back up the 
-- tail of the transaction log on the primary server.
BACKUP LOG MyAdvWorks
   TO MyAdvWorks_log3
   WITH NO_TRUNCATE
GO
-- Apply the final (active) transaction log backup
-- to the standby server. All preceding transaction
-- log backups must have been already applied.
RESTORE LOG MyAdvWorks
   FROM MyAdvWorks_log3
   WITH NORECOVERY 
GO
-- Recover the database on the standby server, 
-- making it available for normal operations.
RESTORE DATABASE MyAdvWorks
   WITH RECOVERY
GO