常時稼働の高可用性モードのデータベースが、別のインスタンスの別のデータベースと同期しています。 .bak
を使用してT-SQL
ファイルからプライマリデータベースに復元するにはどうすればよいですか?
私は高可用性に不慣れで、データベースを復元してから高可用性に戻す前に、データベースを高可用性から外す必要があるとのことですが、確信が持てません。
AlwaysOn
がまだ有効になっていて、セカンダリと自動同期するときに、プライマリに直接復元できることを願っています。
あなたの顧問に聞いてください。バックアップを復元すると、基本的にデータベーススキーマとデータが置き換えられます。同期をオフにし、DBをHAから削除して、プライマリとレプリカで復元を実行し、WITH NORECOVERYを使用してレプリカバージョンを復元状態のままにする必要があります。バックアップが整ったら、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;