SQL Server 2008/2012フルデータベースバックアップ+差分バックアップ+トランザクションログバックアップデータベースフルリストア(一)
文書ディレクトリ還元案 データベース・レベル(データベースの完全なリストア) 異なるリカバリモードによってサポートされる様々なリストアスキーム データベース完全リストア フル・データベース・バックアップ+差分バックアップ+トランザクション・ログ・バックアップの例 参考資料 リストアスキーム
≪データベース・レベル|Database Level|emdw≫(データベースの完全なリストア)
データベース全体をリストアおよびリカバリします.データベースは、リストアおよびリカバリ操作中にオフラインになります.SQL SERVERでは、ユーザーが単一のテーブルをバックアップまたはリストアすることはできません.リストア・スキームとは、1つ以上のバックアップからデータをリストアし、データベースをリカバリするプロセスです.
異なるリカバリ・モードでサポートされるさまざまなリストア・スキーム
単純リカバリモード
これは基本的なリストアポリシーです.データベースの完全なリストアは、完全なデータベースバックアップの単純なリストアとリカバリに関連する可能性があります.また、完全なデータベース・リストアには、完全なデータベース・バックアップのリストア、差分バックアップのリストアおよびリカバリが含まれます.
フル/大容量ログ・リカバリ・モード
これは基本的なリストア・ポリシーです.データベースの完全なリストアには、完全なデータベース・バックアップまたは差分バックアップのリストア、および後続のすべてのログ・バックアップ(順序別)が含まれます.前回のログ・バックアップをリストアし、データベースの完全なリストアを完了します.
データベースを復元する前に、SQL Serverデータベースエンジンは、データベース全体の論理的一貫性を保証します.たとえば、ファイルをリストアした後、ファイルをリカバリしてオンラインにするには、ファイル内のトランザクションを十分に長くロールアップするために、完全なログ・ファイル・バックアップをリカバリする必要があります.
データベースの完全なリストア
単純な場合、リストア操作には、完全なデータベースバックアップ、差分データベースバックアップ、および後続のログバックアップが必要です.
データベースを障害点にリストアする手順アクティブなトランザクション・ログ(ログの「末尾」) を最初にバックアップバックアップの作成順に最新のフル・データベース・バックアップ、最新の差分バックアップ(ある場合)、およびすべての後続ログ・バックアップ をリストアします.
ソース・データベースが単純モードの場合、対応するログ・バックアップはありません.リカバリ作業は、完全なデータベース・バックアップと最後の差分バックアップのリストアに限られます.
データベースに災害が発生した後、特定のリカバリポイントにリカバリする方法シーン 重要なデータテーブルが昼12時01分に誤って削除され、どのようにして12時の状態に回復しますか?ソリューションは、指定されたリカバリポイントにログファイルをリカバリすることによって実現される.次のいくつかの前提条件があり、災害が発生する前に、データベースは次のすべての条件を満たさなければなりません. データベースのリカバリ・モードは、フル・リカバリ・モード である必要があります.災害が発生する前に、データベースは の完全なデータベースバックアップを行ったことがあります.前回のフル・データベース・バックアップ後、ログ・バックアップを行った場合、これらのログ・バックアップはすべて見つかりました.
上記の3つの要件を満たすデータベースでは、バックアップ・リカバリ・メソッドを使用して、データベースをフル・バックアップ後の任意の時点にリカバリできます.
データベースを障害点にリストアするための基本的な手順は、次のとおりです.アクティブなトランザクション・ログ(ログの末尾とも呼ばれる)をバックアップします.この操作により、最終ログバックアップが作成されます.アクティブなトランザクション・ログが災害発生後に使用できなくなると、ログ・セクションのすべてのトランザクションが失われます. 最新のフル・データベース・バックアップをリストアし、トランザクション・リカバリを行わない 差分バックアップが存在する場合、トランザクション・リカバリを行わずに最新の差分バックアップをリストアします. リストアバックアップ後に作成する最初のトランザクションログバックアップから、NORECOVERを使用してログ を順次リストアする.データベースをある時点 にリカバリ
フル・データベース・バックアップ+差分バックアップ+トランザクション・ログ・バックアップの例
サンプル前にテーブル
操作内容の例データベースのフルバックアップ データベースを操作し、ログバックアップ を行います.データベースに対する操作 この時点で災害が発生し、最終ログバックアップ を作成しようとした. を削除する.バックアップから1つのフルバックアップ をリカバリバックアップから通常のログバックアップをリストア STOPATでテールログファイル を復元するデータ整合性の検証 シナリオの欠点は、データベースの完全なバックアップ・リカバリを1回行うことです.これは、時間的にも空間的にもコストがかかります. SQL Serverでは、データベース全体を再構築するのに時間がかかります.このプロセスでは、データベースにアクセスできません.リビルド時間の長さは、ハードディスク(HDD)の速度によって決まります.1つのTBのデータベースが完全なリカバリを行うには、1日近くかかる可能性があります.この待機時間は多くのシステムでは受け入れられません. 空間の完全なバックアップのサイズとデータベースが使用している空間のサイズはほぼ一致しています.バックアップをハードディスク(HDD)に配置するには、ハードディスク(HDD)が2倍のストレージスペースを提供し、データベースを配置し、バックアップを配置する必要があります.
参考資料
<>
≪データベース・レベル|Database Level|emdw≫(データベースの完全なリストア)
データベース全体をリストアおよびリカバリします.データベースは、リストアおよびリカバリ操作中にオフラインになります.SQL SERVERでは、ユーザーが単一のテーブルをバックアップまたはリストアすることはできません.リストア・スキームとは、1つ以上のバックアップからデータをリストアし、データベースをリカバリするプロセスです.
異なるリカバリ・モードでサポートされるさまざまなリストア・スキーム
単純リカバリモード
これは基本的なリストアポリシーです.データベースの完全なリストアは、完全なデータベースバックアップの単純なリストアとリカバリに関連する可能性があります.また、完全なデータベース・リストアには、完全なデータベース・バックアップのリストア、差分バックアップのリストアおよびリカバリが含まれます.
フル/大容量ログ・リカバリ・モード
これは基本的なリストア・ポリシーです.データベースの完全なリストアには、完全なデータベース・バックアップまたは差分バックアップのリストア、および後続のすべてのログ・バックアップ(順序別)が含まれます.前回のログ・バックアップをリストアし、データベースの完全なリストアを完了します.
データベースを復元する前に、SQL Serverデータベースエンジンは、データベース全体の論理的一貫性を保証します.たとえば、ファイルをリストアした後、ファイルをリカバリしてオンラインにするには、ファイル内のトランザクションを十分に長くロールアップするために、完全なログ・ファイル・バックアップをリカバリする必要があります.
データベースの完全なリストア
単純な場合、リストア操作には、完全なデータベースバックアップ、差分データベースバックアップ、および後続のログバックアップが必要です.
データベースを障害点にリストアする手順
ソース・データベースが単純モードの場合、対応するログ・バックアップはありません.リカバリ作業は、完全なデータベース・バックアップと最後の差分バックアップのリストアに限られます.
データベースに災害が発生した後、特定のリカバリポイントにリカバリする方法
上記の3つの要件を満たすデータベースでは、バックアップ・リカバリ・メソッドを使用して、データベースをフル・バックアップ後の任意の時点にリカバリできます.
データベースを障害点にリストアするための基本的な手順は、次のとおりです.
(RESTORE DATABASE database_name with stopat='???', RECOVERY)
フル・データベース・バックアップ+差分バックアップ+トランザクション・ログ・バックアップの例
サンプル前にテーブル
msdb..backupset 2018/09/28
をクリアする前の記録を準備し、時間に注意するUSE msdb;
GO
EXEC sp_delete_backuphistory @oldest_date = '09/28/2018';
AdventureWorksDW2018
ライブラリのリカバリ・モードをフル・リカバリ・モードに変更します.そうしないと、4208
エラーが発生します.USE master ;
ALTER DATABASE AdventureWorksDW2018 SET RECOVERY FULL ;
-- AdventureWorksDW2018 。
use msdb;
select distinct s.first_lsn, s.last_lsn,
s.database_backup_lsn, s.backup_start_date, s.backup_finish_date,
s.type, y.physical_device_name
from msdb..backupset s inner join
msdb..backupfile f on f.backup_set_id = s.backup_set_id inner join
msdb..backupmediaset m on s.media_set_id = m.media_set_id inner join
msdb..backupmediafamily y on m.media_set_id = y.media_set_id
where (s.database_name = 'AdventureWorksDW2018')
order by s.backup_finish_date desc;
操作内容の例
AdventureWorksDW2018
データベースの末尾ログ・バックアップが作成され、より古い完全なデータベース・バックアップとログ・バックアップがリストアされ、最後に末尾ログ・バックアップがリストアされます.トランザクション・リカバリ・アクションは、データベースにアクセスできない最後のログ・リカバリ・ステップで完了します.BACKUP DATABASE [AdventureWorksDW2018] TO DISK='F:\backup\AdvFull1.bak'
--drop table t2;
use AdventureWorksDW2018;
create table t2(number int, name nvarchar(50));
insert into t2 values(1, 'a');
go
BACKUP LOG [AdventureWorksDW2018] TO DISK='F:\backup\AdvLog2.bak'
use AdventureWorksDW2018;
insert into t2 values(2, 'b');
go
use master
backup log [AdventureWorksDW2018] to disk = 'F:\backup\AdvLogTail.bak' with norecovery;
go
AdventureWorksDW2018
データベースdrop database [AdventureWorksDW2018];
restore database [AdventureWorksDW2018] from disk = 'F:\backup\AdvFull1.bak' with norecovery;
restore log [AdventureWorksDW2018] from DISK='F:\backup\AdvLog2.bak' with norecovery;
restore log [AdventureWorksDW2018] from DISK='F:\backup\AdvLogTail.bak' with stopat = '2018-09-27 16:23:00.000', recovery;
go
use AdventureWorksDW2018
select * from t2;
参考資料
<>