sql-server – 不停止更新生产IIS WebSite和SQL Server数据库
有一个测试服务器使用测试数据库.我们在测试服务器上测试网站.如果没问题,我们会将网站和数据库架构从测试服务器更新到生产服务器.但这种方法非常痛苦且风险很大.
首先,我们必须将用户重定向到维护页面,因此网站暂停了一段时间. 其次,如果在更新时出现问题,我们必须回到旧网站,因为我们不能长时间将网站置于维护模式. 因此,我正在寻找一个可靠的解决方案来更新IIS网站和Sql Server数据库,而不会丢失数据并使用维护模式.有没有办法做到这一点?大型网站如何做到这一点,没有数据丢失和暂停. 我们曾想过使用候选发布网站.我们计划暂时使用这个RC网站.首先,我们更新RC站点,然后交换RC和生产网站之间的绑定.但这次数据库出了问题.因为我们可以更改数据库架构,而旧版本无法使用新数据库.因此,如果我们使用临时数据库的临时站点,则会丢失数据.此外,如果临时站点使用旧的生产数据库,则更新的网站将无法与旧数据库一起使用.所以我需要一个可靠的实用解决方案来解决这个问题. 解决方法这比你想象的要复杂几个数量级.具体而言,这不是关于HA,也不是关于连续整合.这些都不会提供你所需要的,它们只是更复杂的谜题的一部分.根本无法以对模式更改透明/无视的方式编写代码更改.在最好的情况下,您可以以支持v.N和v.N 1的架构的方式编写代码,这本身就是一个很大的挑战.但是,当它从v.N过渡到v.N时,以支持模式的方式编写代码是不可能的.部署引起的模式更改对于在模式上运行的代码必须是原子的.由于架构更改本身不能是原子的,因此升级有两种可能的途径: >在架构更改期间使代码脱机.这就是您现在正在做的事情,也是最安全的方法.当然,它意味着服务可用性停机并运行您已经遇到的风险(升级失败,冗长升级等).此方法的一种变体是将服务重定向到数据的只读副本,并提供降级的服务体验(在停机期间无法进行更改),这可能是也可能是不可接受的,具体取决于业务细节. 当一个更大的部署解决方案的特定服务必须升级时,我甚至没有触及服务交互的棘手主题.这是service API protocol back compatibility扮演主要角色,允许升级后服务与其对等服务一起发挥作用. 最终,没有任何银弹.我目睹了单机大型数据库部署,花了数周时间推出版本N 1,转录复制通过升级前数据库的更改连续提供升级后的数据库架构.我目睹了数千台机器分阶段部署N1版本的部署,作为在几天内实现代码和数据更改的复杂舞蹈,以实现升级后的全部功能.这个问题很难解决. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |