我们有一些正在运行的 SQL 2005 数据库,我想将其迁移到 SQL 2008。2008 实例已启动并正在运行。从一台服务器快速切换到另一台服务器的推荐方法是什么。
我喜欢让应用程序使用 2005,同时将事务推送到 2008,这样我就可以提前设置。然后应用程序团队可以更改与 2008 实例的连接并开始测试和更新。一切顺利时,我们可以打破进行传输的任何机制并使用 2008。
我对镜像和事务复制有些了解。镜像似乎可以工作,但我需要在正确的时间将故障转移到镜像数据库。这样 2005 数据库将无法使用,并且我们将无法故障恢复,因为系统表将采用 2008 格式。
复制似乎是不需要任何干预的更好选择 - 但它似乎也有点复杂,其中的细节我可能不知道,这可能会导致它不起作用。
谢谢
答案1
您无法测试镜像数据库,因为无法读取。
复制将允许您从订阅者读取内容,但复制不会复制所有内容。
另外,谈论应用程序团队“更改和更新”副本也是非常不正统的正在更新。应用程序团队应该测试并更新测试数据库,不是生产更新的候选...与传入更新流不兼容的变化会发生什么?
典型的更新场景是这样的:
- 应用程序开发测试应用程序在新数据库上的旧架构中是否运行良好。如果发现问题,则修复应用程序(数据库中没有架构更改)。
- 如果需要更改模式,则将其记录为升级脚本,以便在部署新版本时实施。
- 开发团队签署升级程序(所有应用程序修改和所有架构修改)
- 质量保证团队获取生产数据库的副本并验证是否可以升级应用程序,按照开发团队的建议,在升级后应用所有二进制文件更改架构更改
- QA 团队签署升级程序
- 运营团队准备升级。使用镜像是一种很好的方法,但出于最小化的原因停机时间在升级过程中,不是出于您所建议的验证应用程序的原因
- 执行升级:
- 撤下该应用
- 对数据库进行故障转移(或者中断镜像,如果你想要一条安全/快速的回退路径)
- 将架构更改脚本应用到新数据库
- 将二进制补丁应用于应用程序
- 在新数据库上启动应用程序
- 运行一些最小的验证测试
- 启用应用程序访问
答案2
对数据库进行冷备份,并像往常一样将其还原到 2008 实例,以便应用程序团队测试它们是否存在兼容性问题。一旦确定,就使用镜像或日志传送来保持数据库同步。在计划停机时间内停止 LS/镜像,使旧数据库脱机并恢复 2008 数据库,并让应用程序团队更改连接字符串或使用 DNS 别名切换到新服务器。