24/7多用户环境中的SQL Server 2014架构更改


12

我们安装了SQL Server 2014 Enterprise,以运行应该24/7可用的数据库。我们的数据库足够大(200gb +)。另外,我们有很多服务每分钟都会访问数据库,以读取,更新或插入新数据。我们希望为客户提供“热”重新部署功能,并使我们的每日更新(.net和架构更新)对客户透明。我们已经找到了一种基于群集的解决方案,该群集具有负载平衡器来更新应用程序的二进制文件,但是对于数据库的更新部署过程以及解决此问题的最佳实践还有一些误解。

对于架构更改,请关闭一台服务器,应用架构更改,将其备份,然后将相同的更改应用于第二个实例。可以使用SQL Server工具来完成吗,这是一种通用方法吗?备份服务器后如何同步数据?还是我完全想错了方向,是否有更好的解决方案?

我们常见的架构更改:添加/删除列,添加/删除存储过程


您目前的SQL布局是什么?聚集吗?AlwaysOn?镜像了吗?一个实例?
LowlyDBA 2015年

如今,我们有单个实例,但是我们可以根据要求更改它,添加新服务器,等等
Shmitov Michael

4
您应该遵循蓝绿色的方法,这样您就可以拥有一个运行中的系统(绿色)并在登台(蓝色)上进行升级,然后切换角色。这是我们使用AlwaysON实施的,并且对我们有用-几乎相同的场景。它确实需要适当的计划,实施和测试。
Kin Shah 2015年

您能否给我更详细的情况,例如列删除架构的更改?
Shmitov Michael

前面的注释的解释是,我在AlwaysOn基础结构中切换了主要(S1)/次要(S2)节点,然后我决定从副本服务器上的架构中删除一些列(S1,这是切换之前的主要),但是我仍然可以获得一些复制数据从S2与表中的该列..我该如何处理此问题?
Shmitov Michael

Answers:


1

下面将需要更多的计划和测试。


蓝绿色概念:


蓝绿色概念的要旨是将您的生产分为两个环境,并且它们在任何时候都是相同的(数据同步),其中

  1. 蓝色(当前)将具有模式/内部版本或产品的当前版本,并将成为您的“实时”环境。

  2. 同时,绿色将成为您的暂存/测试环境,您将在其中将架构/构建或产品升级到NEXT版本,进行全面的回归测试并被业务用户批准。一旦高兴,您将在过渡期间将Green升级为您的“实时”环境,并将Blue降级为下一个版本的预生产/过渡或测试。

这样,您的停机时间将大大减少,并且可以将实时系统(在维护窗口中,因为您正在进行升级)上部署失败的风险降到最低。同样,遵循蓝绿色方法,您将在LIVE和PREVIOUS版本之间振荡,这将在下一个版本中进行。

同样,这将需要更多的硬件/许可以及计划和测试。

使用DACPAC和PowerShell可以自动执行大多数步骤。此外,如果要在一台服务器上安装多个实例,请确保在蓝色和绿色之间切换时重新平衡“内存”设置。LIVE环境比Passive环境获得更多的内存。

在我当前的环境中,我们已经实现了用于敏捷代码部署的蓝/绿模型,该模型使我们能够每2周提升代码,并有足够的时间进行测试和业务批准。而且,万一发生严重错误,可以轻而易举地回滚。我们已使用Dacpacs和PowerShell将大部分部署工作自动化。

在此处输入图片说明 (图片来源)

另请参阅Grant Fritchey关于回滚和恢复疑难解答的文章。挑战与策略


0

如果您的数据库没有被复制,那么添加和删除列将非常快地运行。因为add列只是SQL创建的空位置。删除列只会删除参考。

否则,如果有一些约束或索引,请小心。

ADD/DELETE程序只会影响执行本身。建议在对其进行任何更改之前运行重新编译

sp_recompile 'myproc'
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.