gpt4 book ai didi

sql-server-2008 - SQL 日志备份 - "too recent to apply to the database"

转载 作者:行者123 更新时间:2023-12-04 06:23:18 24 4
gpt4 key购买 nike

我有一个相当大的数据库(用于我们的硬件设置)并且正在尝试进行镜像。我似乎无法让主数据库和镜像数据库同步足够近以允许启动镜像。

完整备份大约需要 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

最佳答案

在第一个脚本中,您将 只有想做一个完整的备份。
在这两个脚本中,不要每次都将恢复设置为完整,而是检查它是否完整,如果没有停止,您将需要找出谁一直在更改恢复模式。
在镜像中使用您显示的脚本来恢复完整备份
返回校长并做日志备份
在镜像中使用 norecovery 恢复日志。

关于sql-server-2008 - SQL 日志备份 - "too recent to apply to the database",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6312843/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com