この質問は重複のように見えるかもしれませんが、状況に基づいており、他の回答からの知識を適用する混乱から投稿されます。
私は数十の記事( 1 、 2 、、 4 )を読みましたが、矛盾しています意見(私の情報は、情報過多に苦しんでいるか、おそらく他の質問に十分な情報が含まれていないことに基づいています)。私はこの質問を作成しているので、自分の状況に基づいて決定的な答えを得ます。
次のバックアップシナリオを考えると、サードパーティのバックアップソフトウェアによって最新のバックアップ(18:00)の時点まで完全に回復できないのかを知る必要がありますか?
Time | Action | Device
------|----------------------------------------------|----------------------------
12:00 | Full backup (non copy_only) | D:\MyBackupDevice
13:00 | Tran log backup (non copy_only) | D:\MyBackupDevice
14:00 | Tran log backup (non copy_only) | D:\MyBackupDevice
15:00 | Tran log backup (non copy_only) | D:\MyBackupDevice
16:00 | Full backup (non copy_only) VSS snapshot | Third-party off-site device
17:00 | Tran log backup (non copy_only) | D:\MyBackupDevice
18:00 | Tran log backup (non copy_only) | D:\MyBackupDevice
19:00 | Disaster strikes |
私の復元の目標は、18:00のバックアップの時点まで復元することです(災害まで残りのトランザクションを取得するために追加できるログ末尾のバックアップがあることはわかっていますが、今のところは簡単にしましょう)。 。
この答え に基づいて、サードパーティのバックアップが自分のトランザクションログの復元と競合を引き起こし( この答え のように)、自分の復元を実行できないと思いますその時点まで。私の理解では、トランザクションログバックアップには、最後の完全な非copy_onlyバックアップ以降のデータが含まれています。
これは正しいです?サードパーティのバックアップはcopy_only以外のバックアップなので、自分の復元ルーチンが機能しなくなりますか?
多分これはあなたが理解するのに役立ちます。デモをしましょう!いくつかのダミーデータでダミーデータベースを作成します。
USE master;
/*Create a dummy database*/
CREATE DATABASE LogRestoreTest
/*We full now*/
ALTER DATABASE LogRestoreTest SET RECOVERY FULL
/*Context is everything*/
USE LogRestoreTest
/*If nothing changes, do we even need a log backup?*/
CREATE TABLE dbo.t1 (Id INT)
次に、1つの完全バックアップを作成します。一つだけです。約束する。
/*Take a full backup, dummy*/
BACKUP DATABASE LogRestoreTest
TO DISK = 'F:\Backup\LRT_FULL.bak'
WITH INIT, FORMAT, COMPRESSION
次に、いくつかの変更を行い、ログのバックアップを取ります。実生活と同じように。楽しいです。まだ飲みません。
/*Make a change*/
INSERT dbo.t1 (Id )
VALUES ( 1 )
/*Take a log backup*/
BACKUP LOG LogRestoreTest
TO DISK = 'F:\Backup\LRT_LOG_1.trn'
WITH INIT, FORMAT, COMPRESSION
/*Make another change*/
INSERT dbo.t1 (Id )
VALUES ( 2 )
/*Take another log backup*/
BACKUP LOG LogRestoreTest
TO DISK = 'F:\Backup\LRT_LOG_2.trn'
WITH INIT, FORMAT, COMPRESSION
/*Make another change*/
INSERT dbo.t1 (Id )
VALUES ( 3 )
次に、「帯域外」のフルバックアップと、別のログバックアップを作成します。
/*A second full backup appears!*/
BACKUP DATABASE LogRestoreTest
TO DISK = 'F:\Backup\LRT_FULL_2.bak'
WITH INIT, FORMAT, COMPRESSION
/*Take another log backup*/
BACKUP LOG LogRestoreTest
TO DISK = 'F:\Backup\LRT_LOG_3.trn'
WITH INIT, FORMAT, COMPRESSION
3番目のログバックアップにデータを復元する場合、2つのオプションがあります。
firstフルバックアップとつすべてログバックアップを復元します。
/*Restore the full backup*/
RESTORE DATABASE LogRestoreTest
FROM DISK = 'F:\Backup\LRT_FULL.bak'
WITH REPLACE, NORECOVERY
/*Square one*/
RESTORE DATABASE LogRestoreTest
FROM DISK = 'F:\Backup\LRT_LOG_1.trn'
WITH NORECOVERY
/*What about to here?*/
RESTORE DATABASE LogRestoreTest
FROM DISK = 'F:\Backup\LRT_LOG_2.trn'
WITH NORECOVERY
/*Obligatory Your Mom*/
RESTORE DATABASE LogRestoreTest
FROM DISK = 'F:\Backup\LRT_LOG_3.trn'
WITH NORECOVERY
または、最新の完全なファイルを復元してから、最終的なログファイルを復元することもできます。
/*Restore the full backup*/
RESTORE DATABASE LogRestoreTest
FROM DISK = 'F:\Backup\LRT_FULL_2.bak'
WITH REPLACE, NORECOVERY
/*What happens if I try to jump the restores?*/
RESTORE DATABASE LogRestoreTest
FROM DISK = 'F:\Backup\LRT_LOG_3.trn'
WITH NORECOVERY
ここでは差分バックアップについて説明しませんが、DBA 101の資料をカバーするリソースはたくさんあります。
お役に立てれば!
前の質問 で、あなたは言った:
...ツールが_
copy_only
_以外のバックアップを使用して、ログチェーンを破壊したことが判明
FULL
バックアップはログチェーンを壊しません。
_COPY_ONLY
_ FULL
以外のバックアップは、差分ベース(DIFFERENTIAL
バックアップの参照ポイント)をリセットするだけです。
したがって、no、16:00 | Full backup (non copy_only) VSS snapshot
はを防止しません次の復元シーケンスを正常に実行した場合:
12:00 | Full backup (non copy_only)
13:00 | Tran log backup (non copy_only)
14:00 | Tran log backup (non copy_only)
15:00 | Tran log backup (non copy_only)
17:00 | Tran log backup (non copy_only)
18:00 | Tran log backup (non copy_only)
Not-latest FULL
バックアップを使用した復元シーケンスの例を次に示します。
LOG
バックアップには、最後のLOG
バックアップ以降のデータが含まれています。 FULL
およびDIFFERENTIAL
バックアップはログを切り捨てません。
完全復旧モデルまたは一括ログ復旧モデルでは、前回のバックアップ以降にチェックポイントが発生した場合、ログバックアップ後に切り捨てが発生します(コピーのみのログバックアップでない場合)。
ここでは、以前の回答からの情報を1つの回答に統合して、シナリオで何が発生するかについて少し詳しく説明します。質問の前提条件が質問ごとに少し変わったことを指摘しておきます。
いいえ、この例のサードパーティソリューションの通常のフルスナップショットバックアップでは、バックアップチェーンは中断されません。
説明のベースラインは、質問で定義されたテーブルになります。
Time | Action | Device
------|----------------------------------------------|----------------------------
12:00 | Full backup (non copy_only) | D:\MyBackupDevice
13:00 | Tran log backup (non copy_only) | D:\MyBackupDevice
14:00 | Tran log backup (non copy_only) | D:\MyBackupDevice
15:00 | Tran log backup (non copy_only) | D:\MyBackupDevice
16:00 | Full backup (non copy_only) VSS snapshot | Third-party off-site device
17:00 | Tran log backup (non copy_only) | D:\MyBackupDevice
18:00 | Tran log backup (non copy_only) | D:\MyBackupDevice
19:00 | Disaster strikes |
SQL Serverがデータベースのバックアップを実行するたびに、関連するLoqシーケンス番号(LSN)情報がmsdbバックアップ履歴に挿入されるため、復元の場合、プロセスはデータベースの復元に必要なファイル(バックアップセット)を認識します。 。 LSNを使用して、バックアップシーケンスを列first_lsn
、last_lsn
およびdatabase_backup_lsn
(およびその他のいくつかの列)に格納します。
この情報は、バックアップファイル自体にも保存されます。これらの列は、完全バックアップおよび追加のTLOGバックアップからデータベースを復元する際の復元プロセスを支援します。
first_lsn
には、TLOGバックアップに保存された最初のトランザクションのLSNが含まれ、last_lsn
には、TLOGバックアップの最後のトランザクションのLSNが含まれます。
database_backup_lsn
には、最後の完全バックアップのLSNが含まれます。
やめる。戻る。このセクションをもう一度お読みください。
backup_type checkpoint_lsn database_backup_lsn first_lsn last_lsn
Full 35000001911700042 35000001908000042 35000001911100002 35000001913500001
Log 35000001911700042 35000001911700042 35000001911200001 35000001914300001
Log 35000001911700042 35000001911700042 35000001914300001 35000001914600001
Log 35000001911700042 35000001911700042 35000001914600001 35000001914900001
Log 35000001911700042 35000001911700042 35000001914900001 35000001915200001
Full 35000001915700042 35000001911700042 35000001915700042 35000001917500001
Log 35000001915700042 35000001915700042 35000001915200001 35000001918300001
この例でわかるように、TLOGバックアップのLSNは常に一致しています。以前のTLOGバックアップのlast_lsn
は、次のTLOGバックアップのfirst_lsn
と一致します。
ただし、フルバックアップには、次のTLOGバックアップのLSN範囲内で始まり、同じTLOGバックアップのLSN範囲内で終わるLSNがあります。
19:00のエラーのためにデータベースを18:00に復元する必要があった場合は、12:00からのフルバックアップと13:00から18:00までのトランザクションログバックアップが必要になります。
LSNは中断されません。サードパーティの完全バックアップは必要ありません。
現在のバックアップのfirst_lsn
およびlast_lsn
列を確認することで、これを確認できます。それらは互いに一致する必要があります。
ここで説明を終了することもできますが、サードパーティのソリューションとバックアップに使用しているソリューションに関して考慮すべき点があります。
(つづく...)