我有一个相当大的数据库(用于我们的硬件设置)并且正在尝试进行镜像。我似乎无法使主数据库和镜像数据库足够接近同步以允许启动镜像。
完整备份大约需要 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
**复制文件**
***注意:我更改了主数据库恢复语句以允许稍后正确恢复日志文件。改变了
有了 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