Резервное копирование журнала SQL - «слишком недавно, чтобы применить к базе данных» - PullRequest
2 голосов
/ 11 июня 2011

У меня довольно большая база данных (для нашей аппаратной настройки), и я пытаюсь запустить зеркалирование.Кажется, я не могу получить базы данных Primary и Mirror достаточно близко для синхронизации, чтобы запустить зеркалирование.

Полная резервная копия занимает около 10 минут, плюс еще 8 минут для передачи BAK на сервер Mirror и еще 10 минутвосстановить его.Итак, чтобы попытаться собрать вещи как можно ближе друг к другу, я написал следующее:

** На Первичном **

SET NOCOUNT ON
USE master


DECLARE @dbFileName     VARCHAR(75)
      , @logFileName    VARCHAR(75)

SELECT @dbFileName     = 'F:\SQL_Backups\RIVFramework_Prod1\Mirror\prod1.mdf.' + CONVERT(VARCHAR(10), GETDATE(), 102) + '.bak'  -- formats date in YYYY.MM.DD --
SELECT @logFileName    = 'F:\SQL_Backups\RIVFramework_Prod1\Mirror\prod1.ldf.' + CONVERT(VARCHAR(10), GETDATE(), 102) + '.bak'  -- formats date in YYYY.MM.DD --

SELECT @dbFileName     
SELECT @logFileName    

/**
 ** 1 -  Make sure your database is in full recovery mode
 **/
ALTER DATABASE RIVFramework_Prod1
SET RECOVERY FULL

/**
 ** 2 - Backup the database
 **/
BACKUP DATABASE RIVFramework_Prod1
TO DISK = @dbFileName

/**
 ** 3 - Backup the database log
 **/
BACKUP LOG RIVFramework_Prod1
TO DISK = @logFileName

SET NOCOUNT OFF

** Скопируйте файлы **


*** ПРИМЕЧАНИЕ. Я изменил основной оператор восстановления базы данных, чтобы впоследствии правильно восстановить файл журнала.Изменено

с NORECOVERY,

на

с заменой, NORECOVERY,


** На зеркале **

SET NOCOUNT ON
USE master

/**
 ** Restore backup to Mirror server:
 ** MIRROR SERVER
 ** 4 - Restore to the mirror database with no recovery option
 **/ 
RESTORE DATABASE RIVFramework_Prod1
FROM DISK = 'F:\XFer\prod1.mdf.2011.06.10.bak'
WITH REPLACE, NORECOVERY,   -- You need to have both options in here so the later log file restore works.
 MOVE 'RIVFramework_Prod1' TO 'F:\SQL2008\RIVFramework_Prod1.mdf',
 MOVE 'CampaignAnalytics' TO 'F:\SQL2008\RivFramework_Prod1_CampaignAnalytics.ndf',
 MOVE 'SalesAnalytics' TO 'F:\SQL2008\RivFramework_Prod1_SalesAnalytics.ndf',
 MOVE 'RIVFramework_Prod1_log' TO 'G:\SQL2008\RIVFramework_Prod1_log.ldf'


/**
 ** 5 - Restore the mirror database logs with no recovery
 **/
RESTORE LOG RIVFramework_Prod1
FROM DISK = 'F:\XFer\prod1.ldf.2011.06.10.bak'
WITH NORECOVERY
GO

Теперь у меня примерно 30 минут синхронизации.Вот я и делаю:

** На Первичном **

SET NOCOUNT ON
USE master


DECLARE @logFileName    VARCHAR(75)

SELECT @logFileName    = 'F:\SQL_Backups\RIVFramework_Prod1\Mirror\prod1.ldf.a.' + CONVERT(VARCHAR(10), GETDATE(), 102) + '.bak'    -- formats date in YYYY.MM.DD --

SELECT @logFileName    

/**
 ** 1 -  Make sure your database is in full recovery mode
 **/
ALTER DATABASE RIVFramework_Prod1
SET RECOVERY FULL

/**
 ** 3 - Backup the database log
 **/
BACKUP LOG RIVFramework_Prod1
TO DISK = @logFileName

SET NOCOUNT OFF

** Копируем файлы **

** На Зеркале **

SET NOCOUNT ON
USE master

/**
 ** 5 - Restore the mirror database logs with no recovery
 **/
RESTORE LOG RIVFramework_Prod1
FROM DISK = 'F:\XFer\prod1.ldf.a.2011.06.10.bak'
WITH NORECOVERY
GO

И меня приветствует следующая ошибка:

Сообщение 4305, уровень 16, состояние 1, строка 53 Журнал в этом наборе резервных копий начинается с номера LSN 61063000000325800001, который слишком поздний дляприменить к базе данных.Более раннюю резервную копию журнала, которая содержит LSN 61063000000117800001, можно восстановить.Сообщение 3013, уровень 16, состояние 1, строка 53. RESTORE LOG завершается ненормально.

Есть идеи, что мне не хватает ???

TIA

1 Ответ

3 голосов
/ 11 июня 2011

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

...