我有一个相当大的数据库(用于我们的硬件设置),我正试图让Mirroring继续进行。我似乎无法使主数据库和镜像数据库足够接近,以允许启动镜像。
完整备份大约需要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 此备份集中的日志从 LSN 61063000000325800001,也是 最近申请数据库。一个 包含LSN的早期日志备份 61063000000117800001可以恢复。 Msg 3013,Level 16,State 1,Line 53 RESTORE LOG异常终止。
我想念的任何想法???
TIA
答案 0 :(得分:3)
在第一个脚本中,您仅想要进行完整备份。 在这两个脚本中,不要每次都将恢复设置为完全,但检查它是否已满,如果它没有停止,则需要确定谁一直在更改恢复模式。 在镜像中使用您显示的脚本来仅恢复完整备份 返回到prinicpal并进行日志备份 在镜像中使用norecovery恢复日志。