2

(ハードウェアのセットアップ用に) かなり大きなデータベースがあり、ミラーリングを実行しようとしています。ミラーリングを開始できるように、プライマリ データベースとミラー データベースを十分に同期させることができないようです。

完全バックアップには約 10 分かかり、BAK をミラー サーバーに転送するのにさらに 8 分、復元にさらに 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 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

そして、次のエラーが表示されます。

メッセージ 4305、レベル 16、状態 1、行 53 このバックアップ セットのログは LSN 61063000000325800001 で始まりますが、これはデータベースに適用するには新しすぎます。LSN 61063000000117800001 を含む以前のログ バックアップを復元できます。メッセージ 3013、レベル 16、状態 1、行 53 RESTORE LOG が異常終了しています。

私が見逃しているアイデアはありますか???

ティア

4

1 に答える 1

3

最初のスクリプトでは、完全バックアップのみを行います。どちらのスクリプトでも、リカバリを毎回フルに設定するわけではありませんが、リカバリがフルに設定されているかどうかを確認し、停止していない場合は、誰がリカバリ モードを変更したかを突き止める必要があります。ミラーで、あなたが示したスクリプトを使用して、フル バックアップだけを復元します。プリンシパルに戻り、ログ バックアップを実行します。ミラーで、norecovery を使用してログを復元します。

于 2011-06-11T11:04:39.160 に答える