高可用性でのSQL Server 2012データベースの復元


13

別のインスタンスの別のデータベースと同期された、常時オンの高可用性モードのデータベースがあります。.bakを使用してファイルからプライマリデータベースに復元するにはどうすればよいT-SQLですか?

私は高可用性に不慣れであり、復元を行う前にデータベースを高可用性から削除してから再び高可用性に戻す必要があるとアドバイスされましたが、よくわかりません。

プライマリAlwaysOnがまだ有効であり、セカンダリと自動的に同期する間に、プライマリに直接復元できることを望んでいます。

回答:


15

アドバイザーの話を聞いてください。バックアップを復元することにより、基本的にデータベースのスキーマとデータを置き換えます。WITH NORECOVERYを使用して、同期をオフにし、HAからDBを削除し、プライマリおよびレプリカで復元を実行し、レプリカバージョンを復元状態のままにする必要があります。バックアップが完了したら、DBをHAに戻し、同期を再度開始します。

HAはミラーリングに非常に似ており、同様のテクノロジーを使用します。HA DBも同様に処理する必要があります。

コードは次のようになります。

-プライマリで

ALTER AVAILABILITY GROUP MyAG REMOVE DATABASE AdventureWorks2012;

-プライマリで

RESTORE DATABASE AdventureWorks2012
   FROM AdventureWorksBackups
   WITH NORECOVERY, 
      MOVE 'AdventureWorks2012_Data' TO 
'C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\Data\NewAdvWorks.mdf', 
      MOVE 'AdventureWorks2012_Log' 
TO 'C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\Data\NewAdvWorks.

RESTORE LOG AdventureWorks2012
   FROM AdventureWorksBackups
   WITH RECOVERY;

-二次的に

RESTORE DATABASE AdventureWorks2012
   FROM AdventureWorksBackups
   WITH NORECOVERY, 
      MOVE 'AdventureWorks2012_Data' TO 
'C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\Data\NewAdvWorks.mdf', 
      MOVE 'AdventureWorks2012_Log' 
TO 'C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\Data\NewAdvWorks.ldf';

RESTORE LOG AdventureWorks2012
   FROM AdventureWorksBackups
   WITH NORECOVERY;

-プライマリで

ALTER AVAILABILITY GROUP MyAG ADD DATABASE AdventureWorks2012;

-二次的に

ALTER DATABASE AdventureWorks2012 SET HADR AVAILABILITY GROUP = MyAG;

上記の答えに関する質問...提供されたコードでは、PRIMARYはNoRecoveryで復元されました。NoRecoveryを使用してレプリカのみを作成すると考えていました。
-Truett

正しいが、読み続けてください。ログの復元がコーディングされ、最後にWITH RECOVERYを使用して使用できるようになりました。
スティーブMangiameli

セカンダリ上の可用性グループに再参加できない場合、トランザクションログの復元が必要になる場合があります。このソースは、次のエラー決意を助けた:The mirror database, "dbname", has insufficient transaction log data to preserve the log backup chain of the principal database. This may happen if a log backup from the principal database has not been taken or has not been restored on the mirror database.
ハンス・ボン

したがって、ログが復元されます。上記のコメントを参照してください。
スティーブMangiameli

@SteveMangiameli、これを上げてくれてありがとう。便利になりました。現在、ファイルからではなく論理バックアップデバイスから復元していることを理解しています。ファイルから復元する場合、別々の.bakファイルと.trnファイルを使用します。
ハンス・ボン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.