我被分配了一个项目,我们有一个活跃的辅助环境,我相信可用性组会解决这个问题,但我有一些问题希望有人能为我回答。
情况:
我试图解决的不是标准的业务连续性或灾难恢复,而是加快升级(模式更改)环境的发布。
目前,支持我们面向客户的系统的数据库/UI/多维数据集每 8 周发布一次新版本,在那个发布周末需要 24 小时来应用新模式、应用数据回填以及进行系统维护,如重建索引和重启服务器.
希望有一个重复的环境,我们可以在发布日期之前更新它,并“交换”以最大限度地减少客户的停机时间。我主要关心的是有一种复制数据库的形式,它在数据方面保持最新,但辅助数据库可以对其进行模式修改,我不确定可用性组是否是最好的答案。
除了重新构建环境之外,我是否应该考虑另一种技术来解决我对可以升级的“热插拔”辅助环境的需求?
由于您提到了可用性组,这意味着您使用的是 SQL Server 企业版(可能还有 SQL Server 2012 或 2014)。
您可以使用数据库快照,但在我们的案例中,不同组件存在很多依赖关系,因此排除了使用数据库快照的可能性。
下面将需要更多的计划和测试。
蓝绿概念:
Blue-Green Concept 的要点是将您的生产分为 2 个环境,它们始终相同(数据同步),其中
蓝色(当前)将具有架构/构建或产品的当前版本,并将成为您的“实时”环境。
同时,Green 将成为您的暂存/测试环境,您可以在其中将架构/构建或产品升级到 NEXT 版本,进行完整的回归测试并获得业务用户的认可。一旦满意,在切换期间,您将把绿色升级为您的“实时”环境,并将蓝色降级为下一个版本的预生产/暂存或测试。
这样,您的停机时间就会大大减少,并且在实时系统(处于维护窗口,因为您正在进行升级)上部署失败的风险将大大降低。此外,按照蓝绿方法,您将在 LIVE 和 PREVIOUS 版本之间摇摆不定,后者将为下一个版本暂存。
同样,这将需要更多的硬件/许可以及规划和测试。
大多数步骤可以使用 DACPAC 和 PowerShell 自动执行。此外,如果您在一台服务器上安装多个实例,请确保在蓝色和绿色之间切换时重新平衡内存设置。LIVE 环境比 Passive 环境获得更多内存。
在我当前的环境中,我们已经实施了用于敏捷代码部署的蓝/绿模型,这使我们能够每 2 周升级一次代码,并有足够的时间进行测试和业务签署。此外,如果出现严重错误,回滚是轻而易举的事。我们使用 Dacpacs 和 PowerShell 实现了大部分部署工作的自动化。
(图片来源)
另请参阅 Grant Fritchey 关于回滚和恢复故障排除的文章;挑战与策略