web-dev-qa-db-ja.com

SQL Server 2012常時バックアップ、フルVSコピーのみ

コピーのみのバックアップと完全バックアップは、トランザクションログの番号付けと必要に応じて復元するため、簡単に説明する必要があります。

SQL Server 2012のセットアップで、複数のデータベースに対して常にオンになっています。可用性グループは、レプリカの優先バックアップでセットアップされます。

レプリカでは、コピーのみとトランザクションログのバックアップのみが可能です。これは、トランザクションログの復元が必要な場合、プライマリで完全バックアップを実行する必要があることを意味しますか?

ありがとうございました

8
Debbie

レプリカではコピーのみとトランザクションログのバックアップのみが可能です

そうだね。

これは、トランザクションログの復元が必要な場合、プライマリで完全バックアップを実行する必要があることを意味しますか?

短い答え[〜#〜]はい[〜#〜]

From [〜#〜] bol [〜#〜]

可用性モード(同期コミットまたは非同期コミット)に関係なく、レプリカ(プライマリまたはセカンダリ)で行われたログバックアップ全体で一貫したログチェーンが保証されます。

したがって、質問に答えるために、COPY_ONLYバックアップは、T-logバックアップを含む(ポイントインタイムリストアを実行する)リストアの一部にすることはできません。その全体のポイントは、通常のバックアップチェーンの外にバックアップセットを作成することです(〜#〜] [〜#〜]は、復元シーケンスに影響しません。

プライマリデータベースでフルバックアップを実行する必要があります(copy_onlyバックアップにすることはできません)。

(上記のように)T-logバックアップのみが、プライマリまたはセカンダリで[〜#〜]警告[〜#〜]を使用して実行できます。 PRIMARYのLSNを台無しにすることはありません。つまり、可用性グループのどこでログバックアップをとっても、LSNの一貫性を保ちます。

sys.fn_hadr_backup_is_preferred_replicaログのバックアップでは、ログのバックアップに利用可能なグループのバックアップ設定が使用されます。

参照: AlwaysOn可用性グループの読み取り専用セカンダリレプリカを使用したトランザクションログバックアップの実行-パート1

2
Kin Shah

これは、トランザクションログの復元が必要な場合、プライマリで完全バックアップを実行する必要があることを意味しますか?

いいえ-あなたcan t-logバックアップをCOPY_ONLYバックアップの復元に追加

6
user42163

コピーのみの完全バックアップの上にトランザクションログを復元できます。つまり、セカンダリレプリカからのコピーのみのバックアップをトランザクションログと共に使用して、ポイントインタイムリカバリを実行できます。

ただし、セカンダリレプリカでコピーのみのバックアップのみを実行している場合、プライマリレプリカの差分ビットマップをリセットするための「実際の」バックアップはありません。差分バックアップがリカバリ戦略の一部である場合は、プライマリで完全バックアップを実行する必要があります。 wantごとに差分バックアップを使用する場合、差分ベースとして使用するには、プライマリレプリカでフルバックアップを実行する必要があります。

2
AMtwo

コピーのみのバックアップと、必要な時点までのコピーのみにまたがるログバックアップを使用して、テストに成功しました。 allログバックアップが必要です。したがって、バックアップの実行に使用している複数のレプリカがある場合(フェイルオーバーが発生した場合など)は、それらを確認して追跡する必要があります。テストでは、すべてのバックアップが中央の場所に送られるように設定するだけです。 SQLは、AG内のすべてのノードでログバックアップのログチェーンを維持します。ここに素敵な記事... http://info.tricoresolutions.com/blog/understanding-backups-with-sql-server-alwayson-high-availability-mirrors

2
JohnH

私はトピックについて多くの混乱を抱えていました-AGクラスターでは、コピー後のログバックアップの復元-完全バックアップのみ。

現在は正常に動作しています。セカンダリレプリカからのコピーのみのバックアップを使用できます。

USE [master]
RESTORE DATABASE [xxxxx_testDB] FROM  
DISK = N'D:\Backups\FULL_COPY_ONLY\xxxxx_testDB_FULL_COPY_ONLY.bak' 
WITH  FILE = 1, 
MOVE N'xxxxx_testDB' TO N'D:\testdb\xxxxx_testDB.mdf',  
MOVE N'xxxxx_testDB_log' TO N'D:\testdb\xxxxx_testDB.ldf',  
NORECOVERY

GO


RESTORE LOG xxxxx_testDB
FROM DISK = 'D:\Backups\FULL_COPY_ONLY\xxxxx_testDB_LOG_1.trn'
WITH NORECOVERY; 
GO

RESTORE LOG xxxxx_testDB
FROM DISK = 'D:\Backups\FULL_COPY_ONLY\xxxxx_testDB_LOG_2.trn'
WITH NORECOVERY; 
GO


RESTORE DATABASE xxxxx_testDB WITH RECOVERY