WhoIsNinja Asked: 2013-05-11 13:31:49 +0800 CST2013-05-11 13:31:49 +0800 CST 2013-05-11 13:31:49 +0800 CST AlwaysOn Architecture - 用于创建开发环境的 SQL Server 2012? 772 我在想,除了使用相同的架构设置 HADR 之外,是否可以以某种方式利用 SQL Server 2012 中的 AlwaysOn 架构来正确地为 DEV 和 QA 环境创建副本? sql-server sql-server-2012 3 个回答 Voted Best Answer Nathan Jolly 2013-05-11T19:41:29+08:002013-05-11T19:41:29+08:00 正如 Aaron Bertrand 在他的评论中提到的,AlwaysOn除了其(非常简洁的)冗余功能之外,仅旨在支持只读操作的卸载。 如果您正在寻找的只是一个让您的开发人员可以在不给生产服务器增加负载的情况下检查生产数据的地方,那么它也许是一种可能有用的技术——但您可以通过日志传送实现几乎相同的事情。 您可以从备用服务器构建您的开发环境——无论它使用 AlwaysOn、镜像还是日志传送——通过使用支持可写快照的存储设备,或可以通过 iSCSI 提供可写快照的服务器(例如ZFS 服务器)。但是,为此您可能需要额外的服务器,一些自由度来处理您的存储配置,并且可能需要有人在您尝试设置时依靠肩膀哭泣。 NetApp 的 SnapManager 网站上的“克隆”小视频提供了有关其工作原理的有用概述——不幸的是,我似乎找不到非特定于供应商的很好的描述。 Aaron Bertrand 2013-05-13T08:12:23+08:002013-05-13T08:12:23+08:00 很难准确地确定您要在这里完成什么。如果“开发”和“QA”是指“我们只希望能够针对生产环境的精确副本运行只读查询”,那么可以肯定的是,您可以使用生产环境中的辅助/副本来完成此操作。(不过,“精确”程度取决于您的可用性组是设置为同步提交模式还是异步提交模式。) 如果您希望在开发和/或 QA 中执行架构更改并在不干扰生产的情况下测试这些更改,则您不能这样做 - 辅助副本是只读的。也许您认为可用性组提供了某种负载平衡的合并复制灵丹妙药,但这不是它的用途。 你应该如何进行取决于你想要完成什么。对于可用性组,您绝对应该关注 HA/DR 方面,因为这些是它旨在解决的问题。您的 QA/DEV 要求——同样,除非它们仅设计用于针对本质上是生产数据库的克隆来测试只读操作——将需要以其他方式得到满足。根据您的开发/QA 周期,您可以使用以下任何一种或某些组合: 备份生产数据库并在开发/QA 中恢复它(当然你可以使用通过可用性组创建的备份),比如每晚。这可以让您的数据按您希望的频率更新。这通常意味着在模式/代码更改的情况下,您将需要暂停此过程,直到将这些更改部署到生产中(否则下一次备份将恢复您的更改)。 在 Dev/QA 中保留一个“主干”,并可能 - 结合上述 - 将更改迁移到生产数据库的恢复副本(允许您针对相对现代版本的数据测试您的更改)。您还可以绕过备份/恢复,并在针对您的主干中的任何数据进行测试后,将架构/代码更改简单地应用于生产。这简化了部署过程,但为回归/边缘情况引入了更多机会。 在任何一种情况下,迁移更改的部署部分都可能是您最大的障碍——有许多工具可以帮助解决这个问题;我在这里写了关于他们的博客。 DiGi 2013-05-12T01:24:17+08:002013-05-12T01:24:17+08:00 将数据库备份从生产服务器恢复到 QA 和 DEV 服务器是管理它的最简单方法。 恢复后,您必须应用更改脚本。AlwaysOn 是“数据库克隆”,但对于 DEV 和 QA,您需要“生产 DB + DEV 更改”。
正如 Aaron Bertrand 在他的评论中提到的,AlwaysOn除了其(非常简洁的)冗余功能之外,仅旨在支持只读操作的卸载。
如果您正在寻找的只是一个让您的开发人员可以在不给生产服务器增加负载的情况下检查生产数据的地方,那么它也许是一种可能有用的技术——但您可以通过日志传送实现几乎相同的事情。
您可以从备用服务器构建您的开发环境——无论它使用 AlwaysOn、镜像还是日志传送——通过使用支持可写快照的存储设备,或可以通过 iSCSI 提供可写快照的服务器(例如ZFS 服务器)。但是,为此您可能需要额外的服务器,一些自由度来处理您的存储配置,并且可能需要有人在您尝试设置时依靠肩膀哭泣。
NetApp 的 SnapManager 网站上的“克隆”小视频提供了有关其工作原理的有用概述——不幸的是,我似乎找不到非特定于供应商的很好的描述。
很难准确地确定您要在这里完成什么。如果“开发”和“QA”是指“我们只希望能够针对生产环境的精确副本运行只读查询”,那么可以肯定的是,您可以使用生产环境中的辅助/副本来完成此操作。(不过,“精确”程度取决于您的可用性组是设置为同步提交模式还是异步提交模式。)
如果您希望在开发和/或 QA 中执行架构更改并在不干扰生产的情况下测试这些更改,则您不能这样做 - 辅助副本是只读的。也许您认为可用性组提供了某种负载平衡的合并复制灵丹妙药,但这不是它的用途。
你应该如何进行取决于你想要完成什么。对于可用性组,您绝对应该关注 HA/DR 方面,因为这些是它旨在解决的问题。您的 QA/DEV 要求——同样,除非它们仅设计用于针对本质上是生产数据库的克隆来测试只读操作——将需要以其他方式得到满足。根据您的开发/QA 周期,您可以使用以下任何一种或某些组合:
在任何一种情况下,迁移更改的部署部分都可能是您最大的障碍——有许多工具可以帮助解决这个问题;我在这里写了关于他们的博客。
将数据库备份从生产服务器恢复到 QA 和 DEV 服务器是管理它的最简单方法。
恢复后,您必须应用更改脚本。AlwaysOn 是“数据库克隆”,但对于 DEV 和 QA,您需要“生产 DB + DEV 更改”。