Восстановление базы данных 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.