阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

SQL Server不停机移动镜像数据库

114次阅读
没有评论

共计 1313 个字符,预计需要花费 4 分钟才能阅读完成。

SQL Server 数据库镜像是对于数据库可用性的软件解决方案。镜像在每个数据库级别被部署,并只能在完整恢复模式下工作。由于磁盘空间的问题,需要移动镜像数据库到一个不同的位置。我们想不停机、不破坏镜像来完成这个任务。需要在不同的环境做测试。

对于启用了数据库镜像的数据库的文件移动,我们只有有限的选择。常规方法如下:

  • 破坏数据库镜像会话,通过使用 Alter database 或 Attach Detach 移动在线数据库文件到一个新的位置。
  • 备份数据库,并在镜像服务器上恢复备份,然后重建镜像。

技术上来讲,这是可行的,但是它需要停机时间,并且尤其对于大数据库,移动和恢复需要大量额外时间。

给定的停机时间是客户端总是会考虑的,我们得找到一个不停机的方案。以下步骤说明了如何不停机移动数据库文件而不用打扰同步数据库镜像。

对于镜像实例:

  1. 在主服务器上暂停镜像(可选)。
  2. 在镜像服务器上使用 Alter database 语句来指向一个新位置。
  3. 停止镜像 SQL Server 服务。
  4. 移动镜像数据库文件到一个新位置,并确保文件上的权限也还在。
  5. 启动镜像 SQL Server 服务。
  6. 在主服务器数据库上恢复镜像,并验证镜像成功恢复。

对于主实例:

  1. 故障转移数据库到镜像服务器,以至于镜像服务器现在作为主服务器。
  2. 在新的主服务器上暂停镜像(可选)。
  3. 在新的镜像服务器上使用 Alter database 语句来指向一个新位置。
  4. 停止新镜像的 SQL Server 服务。
  5. 移动新的镜像数据库文件到一个新位置,并确保文件上的权限也还在。
  6. 启动新镜像的 SQL Server 服务。
  7. 在主服务器数据库上恢复镜像,并验证镜像成功恢复。

如果详细查看以上计划,可以看到应用程序会话在镜像数据库故障转移期间会重连。当应用程序负载在主服务器上运行时,停止镜像 SQL Server 服务,物理移动数据库文件,然后启动镜像 SQL Server 服务。所以无需停机时间。

然而,你要确保在主服务器上有足够的日志空间,因为镜像状态将会被断开(不只是一个库,而是实例上所有镜像的数据库)。当镜像状态断开时,日志记录不会从主服务器发送到镜像服务器,将会累积在主服务器。一旦镜像实例启动,镜像状态变为同步中,主服务器将会开始发送日志记录到镜像服务器。

我们可以通过以下 T -SQL 来检查所有镜像数据库的文件位置,来验证是否修改成功:

Select DB_NAME(dbid),name,filename 
from sysaltfiles
where DB_NAME(dbid) in (Select DB_NAME(database_id) 
from sys.database_mirroring where mirroring_state is not null
order by 1

总的来讲,当移动数据库时可以保持数据库镜像不用停机。对于见证服务器无需任何操作,在活动期间一直保持在线状态。首先这个方案应该在测试环境验证后,再在生产环境实施。非常重要的是,我们注意到在异步镜像模式,也可以参照这种做法,只是需要在应用停机的情况下来实施。

本文永久更新链接地址 :http://www.linuxidc.com/Linux/2017-03/141599.htm

正文完
星哥说事-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-22发表,共计1313字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中