技术开发 频道

详解SQL Server中的高可用性策略

  【IT168 评论】自从SQL Server 2005以来,微软已经提供了多种高可用性技术来减少宕机时间和增加对业务数据的保护,而随着SQL Server 2008,SQL Server 2008 R2,SQL Server 2012的不断发布,SQL Server中已经存在了满足不同场景的多种高可用性技术。

  在文章开始之前,我首先简单概述一下以什么来决定使用哪一种高可用性技术。

  依靠什么来决定使用哪一种高可用性技术?

  很多企业都需要他们的全部或部分数据高可用,比如说在线购物网站,在线商品数据库必7*24小时在线,否则在竞争激烈的市场环境下,宕机时间就意味着流失客户和收入。再比如说,一个依赖于SQL Server的呼叫中心,如果数据库宕机,则所有的呼叫员都只能坐在那里回复客户“对不起,系统故障”,这也是很难接受的。

  当然,在一个理想的世界中,所有的关键数据都会时刻在线,但在现实世界中,会存在各种各样的原因导致数据库不可用,由于无法预估灾难出现的时间和形式,需要提前采取措施来预防各种突发情况,因此SQL Server提供了多种高可用性技术,这些技术主要包括:集群、复制、镜像、日志传送、AlwaysOn可用性组以及其它诸如文件组备份还原、在线重建索引等单实例的高可用性技术。使用何种高可用性技术并不是随意挑一个熟悉技术直接使用,而是要基于业务和技术综合考虑。因为没有一项单独的技术可以实现所有的功能。如何根据具体的业务和预算采用这些技术,就是所谓的高可用性策略。

  在设计高可用性策略时应该首先考虑下述因素:

  •RTO(Recovery Time Objective)-也就是恢复时间目标,意味着允许多少宕机时间,通常用几个9表示,比如说99.999%的可用性意味着每年的宕机时间不超过5分钟、99.99%的可用性意味着每年的宕机时间不超过52.5分钟、99.9%的可用性意味着每年的宕机时间不超过8.75小时。值得注意的是,RTO的计算方法要考虑系统是24*365,还是仅仅是上午6点到下午9点等。您还需要注意是否维护窗口的时间在算在宕机时间之内,如果允许在维护窗口时间进行数据库维护和打补丁,则更容易实现更高的可用性。

  •RPO(Recovery Point Objective)-也就是恢复点目标,意味着允许多少数据损失。通常只要做好备份,可以比较容易的实现零数据损失。但当灾难发生时,取决于数据库损坏的程度,从备份恢复数据所需要的时间会导致数据库不可用,这会影响RTO的实现。一个早期比较著名的例子是某欧美的银行系统,只考虑的RPO,系统里只存在了完整备份和日志备份,每3个月一次完整备份,每15分钟一次日志备份,当灾难发生时,只能够通过完整备份和日志备份来恢复数据,因此虽然没有数据丢失,但由于恢复数据花了整整两天时间,造成银行系统2天时间不可用,因此流失了大量客户。另外一个相反的例子是国内某在线视频网站,使用SQL Server作为后端关系数据库,前端使用了No-SQL,定期将No-SQL的数据导入关系数据库作为备份,当灾难发生时最多允许丢失一天的数据,但是要保证高可用性。

  预算 –RTO和RPO统称为SLA(服务水平协议),设计高可用性策略时,要根据业务来衡量满足何种程度的SLA,这要取决于预算以及衡量不同SLA在故障时所造成的损失。SLA并不是越高越好,而是要基于业务需求,通常来说,在有限的预算之下很难实现很高的SLA,并且即使通过复杂的架构实现较高的SLA,复杂的架构也意味着高运维成本,因此需要在预算范围之内选择合适的技术来满足SLA。

  因此,综合来说,可以通过几个接单的问题确定高可用性的大框架:

  •股东能够接受的宕机时间是多少?

  •管理人员能够接受的宕机时间是多少?

  •为高可用性方案提供的预算是多少?

  •宕机导致的损失是每小时是多少钱?

  冷备份、暖备份和热备份

  根据主机和备机之间同步数据的程度,备份可以分为三种情况,分别为冷备份、暖备份和热备份。

  •冷备份:也就是所谓的备份,备用服务器被配置用于接受主服务器的数据,当出故障时,手动将数据还原到主数据库,或是重新配置程序的连接字符串或权限来使得备份数据库上线。

  •暖备份:主服务器数据会不停的将日志传送到备用服务器(间隔不定,可以是15分钟,30分钟,1分钟等等),在这方式下,主服务器到备份服务器通常是异步更新,所以不能保证主服务器和备份服务器数据一致。此外,该方案通常不会实现自动故障监测和故障转移。

  •热备份:主服务器的数据自动在备份服务器上进行同步,大多数情况下都会包含自动的故障监测和故障转移,并且能够保证主服务器和备份服务器的数据一致性。

  随着冷备份到暖备份到热备份,成本会直线上升。

  具体何种版本支持哪些高可用特性,请参阅:http://msdn.microsoft.com/zh-cn/library/cc645993.aspx,值得注意的是免费的Express版本可以作为数据库镜像的见证服务器,从而节省了成本。

  故障转移集群

  故障转移集群为整个SQL Server实例提供高可用性支持,这意味着在集群上某个节点的SQL Server实例发生了硬件错误、操作系统错误等会故障转移到该集群上的其它节点。通过多个服务器(节点)共享一个或多个磁盘来实现高可用性,故障转移集群在网络中出现的方式就像单台计算机一样,但是具有高可用特性。值得注意的是,由于故障转移集群是基于共享磁盘,因此会存在磁盘单点故障,因此需要在磁盘层面部署SAN复制等额外的保护措施。最常见的故障转移集群是双节点的故障转移集群,包括主主节点和主从节点。

  事务日志传送

  事务日志传送提供了数据库级别的高可用性保护。日志传送可用来维护相应生产数据库(称为“主数据库”)的一个或多个备用数据库(称为“辅助数据库”)。发生故障转移之前,必须通过手动应用全部未还原的日志备份来完全更新辅助数据库。日志传送具有支持多个备用数据库的灵活性。如果需要多个备用数据库,可以单独使用日志传送或将其作为数据库镜像的补充。当这些解决方案一起使用时,当前数据库镜像配置的主体数据库同时也是当前日志传送配置的主数据库。

  事务日志传送可用于做冷备份和暖备份的方式。

0
相关文章