我有一个相当大的数据库(用于我们的硬件设置),并且试图让镜像继续下去。我似乎无法将主数据库和镜像数据库同步到足够近以允许镜像启动。SQL日志备份 - “最近不适用于数据库”
完整备份大约需要10分钟,再加上8分钟才能将BAK传输到镜像服务器,另外需要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
**复制文件**
***注意:我更改了主数据库恢复语句,以便日后文件能够正确恢复。改变
WITH NORECOVERY,
到
WITH REPLACE, 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
而且我迎接以下错误:
Msg 4305, Level 16, State 1, Line 53 The log in this backup set begins at LSN 61063000000325800001, which is too recent to apply to the database. An earlier log backup that includes LSN 61063000000117800001 can be restored. Msg 3013, Level 16, State 1, Line 53 RESTORE LOG is terminating abnormally.
任何想法我失踪?
TIA
当我使用REPLACE进行完全备份和恢复时,出现尝试恢复日志文件的错误:“数据库日志尾部”RIVFramework_Prod1“未备份。使用BACKUP LOG WITH NORECOVERY进行备份如果日志包含你不想丢失的工作,请使用RESTORE语句的WITH REPLACE或WITH STOPAT子句来覆盖日志的内容。“ – 2011-06-13 20:38:57
当我使用NORECOVERY进行完整备份和恢复时,出现了我的问题中提到的错误。我错过了什么? – 2011-06-13 20:39:45
我终于找到了我失踪的东西。当我恢复我的数据库(完全备份)时,我需要将其标记为REPLACE,NORECOVERY而不是NORECOVERY。这一个简单的改变治愈了我的大部分错误。 (请参阅我的问题中的说明) – 2011-06-14 15:05:20