Восстановление базы данных SQL Server 2012 в режиме высокой доступности

У меня есть база данных, которая всегда находится в режиме высокой доступности и синхронизирована с другой базой данных в другом экземпляре. Как я могу восстановить с .bak файл в первичную базу данных с использованием T-SQL?

Я новичок в области высокой доступности, и мне посоветовали вывести базу данных из высокой доступности, прежде чем я смогу выполнить восстановление, а затем снова вернуть ее в режим высокой доступности, но я не уверен.

Я надеюсь, что смогу просто восстановить напрямую в основной, пока AlwaysOn все еще включен, и он будет автоматически синхронизироваться с дополнительным.

2 ответа

На dba.stackru.com есть полный ответ на этот вопрос.

Перекрестная публикация ответа здесь, так что его можно найти в обеих версиях вопроса: дословно скопировано из ответа Джона М.: https://dba.stackexchange.com/questions/82548/restoring-a-sql-server-2012-database-in-high-availability


Послушай своего советника. Восстанавливая резервную копию, вы по сути заменяете схему базы данных и данные. Вам нужно будет отключить синхронизацию, удалить базу данных из HA и выполнить восстановление на первичном сервере и реплике, оставив версию реплики в состоянии восстановления с помощью WITH NORECOVERY. Как только ваша резервная копия находится на месте, поместите БД обратно в HA и снова запустите синхронизацию.

HA очень похож на зеркалирование и использует аналогичную технологию, но не настолько привередливую. Вы также захотите относиться к своим базам данных HA аналогично.

Код будет похож на следующее:

- на первичном

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.ldf';
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 DATABASE AdventureWorks2012 SET HADR AVAILABILITY GROUP = MyAG;

Если база данных Microsoft SQL является частью групп доступности AlwaysOn (AAG) Microsoft SQL 2012, и восстановление в исходное расположение не выполняется, выполните следующие задачи: 1. Удалите базу данных, которую необходимо восстановить, из групп доступности. Для получения дополнительной информации см. http://msdn.microsoft.com/en-us/library/hh213326.aspx. 2. Используйте Restore Manager для восстановления базы данных на всех узлах в группе AAG. 3. Добавьте базу данных обратно в группы доступности. Для получения дополнительной информации см. http://msdn.microsoft.com/en-us/library/hh213078.aspx.

Другие вопросы по тегам