微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

sql-server – 不停止更新生产IIS WebSite和SQL Server数据库

一个测试服务器使用测试数据库.我们在测试服务器上测试网站.如果没问题,我们会将网站和数据库架构从测试服务器更新到生产服务器.但这种方法非常痛苦且风险很大.

首先,我们必须将用户重定向到维护页面,因此网站暂停了一段时间.

其次,如果在更新时出现问题,我们必须回到旧网站,因为我们不能长时间将网站置于维护模式.

因此,我正在寻找一个可靠的解决方案来更新IIS网站和sql Server数据库,而不会丢失数据并使用维护模式.有没有办法做到这一点?大型网站如何做到这一点,没有数据丢失和暂停.

我们曾想过使用候选发布网站.我们计划暂时使用这个RC网站.首先,我们更新RC站点,然后交换RC和生产网站之间的绑定.但这次数据库出了问题.因为我们可以更改数据库架构,而旧版本无法使用新数据库.因此,如果我们使用临时数据库的临时站点,则会丢失数据.此外,如果临时站点使用旧的生产数据库,则更新的网站将无法与旧数据库一起使用.所以我需要一个可靠的实用解决方案来解决这个问题.

解决方法

这比你想象的要复杂几个数量级.具体而言,这不是关于HA,也不是关于连续整合.这些都不会提供你所需要的,它们只是更复杂的谜题的一部分.

根本无法以对模式更改透明/无视的方式编写代码更改.在最好的情况下,您可以以支持v.N和v.N 1的架构的方式编写代码,这本身就是一个很大的挑战.但是,当它从v.N过渡到v.N时,以支持模式的方式编写代码是不可能的.部署引起的模式更改对于在模式上运行的代码必须是原子的.由于架构更改本身不能是原子的,因此升级有两种可能的途径:

>在架构更改期间使代码脱机.这就是您现在正在做的事情,也是最安全的方法.当然,它意味着服务可用性停机并运行您已经遇到的风险(升级失败,冗长升级等).此方法的一种变体是将服务重定向到数据的只读副本,并提供降级的服务体验(在停机期间无法进行更改),这可能是也可能是不可接受的,具体取决于业务细节.
>待机升级.这意味着您可以拍摄服务数据的快照(各种HA解决方案可以提供开箱即用的备用快照,例如日志传送).升级快照,然后将实际服务数据上发生的所有事务应用于升级后的快照.这总是很棘手,因为它需要一种技术来检测,捕获和应用更改(例如,更改跟踪,复制,自定义解决方案等),并且需要将每个更改转换为新的升级模式.一旦升级的模式与主服务的更改保持同步,就可以将服务重定向升级的模式.这种重定向也比听起来要复杂得多.对于选择切断旧架构并停止接受新更改的时刻,同时确保所有更改都应用于新升级的架构DB本身就是一项挑战.另一个挑战是解决代码理解升级前和升级后架构版本的冲突.正如我所说,开发处理这两者的代码是有问题且容易出错的,因此一种解决方案是再次使服务脱机并更换代码.另一种解决方案是使用备用服务,运行代码来处理升级后的数据库架构并连接到升级后的数据库,并将实时请求重定向到备用,升级的服务.

一个更大的部署解决方案的特定服务必须升级时,我甚至没有触及服务交互的棘手主题.这是service API protocol back compatibility扮演主要角色,允许升级后服务与其对等服务一起发挥作用.

最终,没有任何银弹.我目睹了单机大型数据库部署,花了数周时间推出版本N 1,转录复制通过升级数据库的更改连续提供升级后的数据库架构.我目睹了数千台机器分阶段部署N1版本的部署,作为在几天内实现代码和数据更改的复杂舞蹈,以实现升级后的全部功能.这个问题很难解决.

原文地址:https://www.jb51.cc/mssql/78478.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐