以高可用性恢复 SQL Server 2012 数据库

Posted

技术标签:

【中文标题】以高可用性恢复 SQL Server 2012 数据库【英文标题】:Restoring a SQL Server 2012 database in high availability 【发布时间】:2014-11-12 14:42:38 【问题描述】:

我有一个始终处于高可用性模式的数据库,它与不同实例上的另一个数据库同步。如何使用 T-SQL 从 .bak 文件恢复到主数据库?

我是高可用性的新手,我被告知我需要先将数据库从高可用性中移除,然后才能进行还原,然后再次将其恢复为高可用性,但我不确定。

我希望我可以在 AlwaysOn 仍然启用的情况下直接恢复到主服务器,它会自动与辅助服务器同步。

【问题讨论】:

应该在 dba.stackexchange.com 上提问 - 这实际上更像是一个 DBA 问题(而不是 编程 问题) - 投票决定是否采取行动 干杯马克。我不知道那个网站,所以我会在那里问。 【参考方案1】:

在 dba.***.com 上有这个问题的完整答案。

在此处交叉发布答案,以便可以从问题的两个版本中找到它: 从John M的回答逐字复制: https://dba.stackexchange.com/questions/82548/restoring-a-sql-server-2012-database-in-high-availability


听听你的顾问。通过恢复备份,您实际上是在替换数据库架构和数据。您将需要关闭同步,从 HA 中删除数据库并对主副本和副本执行还原,使用 WITH NORECOVERY 使副本版本处于还原状态。备份到位后,将数据库放回 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.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;

【讨论】:

【参考方案2】:

如果 Microsoft SQL 数据库是 Microsoft SQL 2012 AlwaysOn 可用性组 (AAG) 的一部分,并且还原到原始位置失败,请执行以下任务: 1. 从可用性组中删除要恢复的数据库。有关详细信息,请参阅http://msdn.microsoft.com/en-us/library/hh213326.aspx。 2. 使用还原管理器将数据库还原到 AAG 组中的所有节点。 3. 将数据库添加回可用性组。如需更多信息,请参阅http://msdn.microsoft.com/en-us/library/hh213078.aspx。

【讨论】:

以上是关于以高可用性恢复 SQL Server 2012 数据库的主要内容,如果未能解决你的问题,请参考以下文章

SQL Server 2012 标准版是不是能搭建alwayson

SQL Server 2012 数据库镜像配置完整篇

SQL Server 2017 高可用性

SQL Server 2016 AlwaysOn 安装及配置介绍

SQL Server关于AlwaysOn的理解

可以在 SQL Server 2012 上恢复 SQL Server 2014 的备份吗?