设为首页 收藏本站
查看: 1362|回复: 0

[经验分享] SQL Server HA - 高可用性解决方案解决方案概述

[复制链接]

尚未签到

发表于 2018-10-16 11:10:55 | 显示全部楼层 |阅读模式

  •   高可用性解决方案概述
  http://mssqlmct.blog.51cto.com/9951484/1641028
  11.1 高可用性解决方案概述
  11.1.1 可用性
  可用性是指在某个考察时段内,系统能够正常运行的概率或者时间占有率的期望值。。通常用以下公式进行计算,值越大则表明系统宕机时间越少。
DSC0000.jpg

  例如,对于一个 24*365 运行的业务系统,99.999% 的可用性表示每年宕机时间不超过 5 分钟。当然,正常预定的维护时间(即窗口)一般不计入宕机时间。例如,营业时间仅限于从上午7点到晚上10点(即7*15)的业务系统,在下班后进行停机维护的时间不算在宕机时间之内。
  高可用性(High-Availability)是一系列的技术总和,用来减少宕机时间和增加对业务数据的保护。
  在规划高可用性方案时需要综合考虑以下两个因素:
  ● RTO(Recovery Time Objective,即目标恢复时间)
  RTO 表示业务系统每次容忍多少宕机时间。如果业务停顿时间过长,损失自然也会增加。对于特别重要的业务系统,可能需要同时使用多种技术确保在发生故障时能够迅速恢复业务。
  ● RPO(Recovery Point Objective,即目标恢复点)
  RPO 表示容忍多少数据丢失。通常只要做好备份,就可以使数据不丢失。但当灾难发生时,从备份进行恢复的操作会导致数据库在现阶段不可用;如果恢复的时间特别长,业务停顿所造成的损失可能比丢失少量数据更严重。特别对于数据量非常大的数据库,更需要预先考虑到恢复时间和数据丢失之间的权重而制定充足的预案。
  通常 RTO 与 RPO 两者之间存在冲突,需要根据业务需求、投资规模等多方面因素来权衡,从而制订服务水平协议(Service Level Agreement,简称 SLA)。
  11.1.2 AlwaysOn 高可用性解决方案
  “AlwaysOn”一词至少在 SQL Server 2008 中已经出现,表示 SQL Server 可以持续地提供服务。但是当时“AlwaysOn”技术并没有提供管理界面(通过 Windows 管理工具进行管理),所以这个字样鲜为人知。
  尽管 SQL Server 2012 在 SSMS 中出现了“AlwaysOn”专用管理工具,但是其只能管理 AlwaysOn 可用性组,导致常被误解为 AlwaysOn 只有(或者等同于)可用性组这一种技术。
  SQL Server AlwaysOn 即“全面的高可用性和灾难恢复解决方案”。客户通过使用 AlwaysOn 技术,可以提高应用程序可用性,并且通过简化高可用性的部署和管理方面的工作,获得更好的硬件投资回报。
  SQL Server AlwaysOn 在以下2个级别提供了可用性。
  ● 数据库级可用性
  AlwaysOn 可用性组(Availability Group,简称 AG)是SQL Server 2012 引入的新特性,它允许将一组数据库(一个或多个用户数据库)传送到最多4个只读副本。SQL Server 2014 将只读副本的数量提升到8个。
  AG 可以是一种“热备份”技术。在同步提交模式下,主副本的数据被同步更新到其他辅助副本,主副本与辅助副本之间可以保持实时同步。当系统监测到主副本发生故障时,辅助副本可以立即成为新的主副本。
  由于这是一个数据库级的技术,因此在 SSMS 中提供了管理和配置界面。
DSC0001.jpg

  ● 实例级可用性
  AlwaysOn 故障转移群集实例(Failover Cluster Instance,简称 FCI)可以在多个16个节点之间实现故障转移(Failover)。企业版最多支持16个节点,标准版只支持2个节点)
  FCI 是一种“冷备份”技术。辅助节点并不从主节点同步数据,唯一的一份数据被保存在共享存储(群集共享磁盘)中。当主节点发生故障时,辅助节点提升为主节点并获取共享存储中的数据,然后才在这个新的主节点服务器中启动 SQL Server 服务。
  SQL Server 2012 对 FCI 技术做了一些改进,例如,可以不使用群集共享磁盘而使用共享文件夹,可以将 tempdb 配置在本地驱动器。
  由于这是一个实例(服务器)级的技术,因此 SQL Server 没有为它提供单独的管理界面,而是在 Windows 管理工具中的“故障转移群集管理器”界面中进行管理和配置,
DSC0002.png

  11.1.3 其它高可用性解决方案
  ● 数据库镜像
  数据库镜像是 SQL Server 2005 SP1 正式引入的一项数据库级的高可用性技术。
  镜像可以是一种“暖备份”技术。主体服务器与镜像服务器同时运行着 SQL Server 服务,镜像服务器从主体服务器获得备份数据后立即进行还原,从而实现了镜像服务器的数据更新。镜像服务器同时也会获得少量的元数据,当主体服务器发生故障时,镜像服务器可迅速加载所需的所有元数据,然后成为新的主体服务器。
  数据库镜像技术存在着许多不足,SQL Server 2012 的联机手册就已经申明将在未来的版本中取消镜像技术。
  ● 日志传送
  日志传送依赖于传统的 Windows 文件复制技术与 SQL Server 代理。
  主服务器定期产生一个备份文件,辅助服务器再定期通过访问 Windows 文件夹从而读取并复制这些备份文件然后定期恢复到本地的数据库。实际上,日志传送技术只是分别在主服务器和辅助服务器上实现了自动备份与自动还原而已。
  ● 其它辅助技术
  对数据库进行备份,当出现故障时,手动将数据还原到服务器,使得数据库重新联机,这也可以算作实现高可用性的一种技术手段。
  复制(Replication)并不算是一个高可用性解决方案,只是它的功能可以实现高可用性。复制通过“发布-订阅”模式,由主服务器向辅助服务器发布数据,使这些服务器间实现可用性。
  11.1.4 各项技术的综合对比
  下表将 SQL Server 常用的高可用性解决方案进行综合对比。
对比项目  AlwaysOn
  故障转移群集
  AlwaysOn
  可用性组
数据库镜像日志传送副本数量无最多8个1个无限制  副本的可用性
  (只读访问)
不适用可以创建快照,然后访问快照“备用模式”时可以访问对外统一IP地址是是各自独立的IP地址各自独立的IP地址自动故障转移可以可以可以(需要有见证服务器)不可以故障转移单元实例一组数据库单个数据库不适用  11.1.5 同步提交与异步提交
  AlwaysOn 可用性组、数据库镜像等解决方案需要为主数据库建立一个或多个“热备用”或“温备用”的辅助副本,因此需要在主数据库和备用副本之间传送数据。
  在主数据库和备用副本之间进行数据更新,有以下两种模式。
  ◆ 同步提交模式
  同步提交时,需要经过一系列的过程。
  (1)主数据库在将事务日志写入文件的同时就传送给辅助数据库。然后主数据库等待辅助数据库的回应。
  (2)辅助数据库收到了来自主数据库的事务,写入本地事务日志文件(固化),然后发送确认信息给主数据库。
  (3)主数据库收到辅助数据库发来的确认信息,结束等待状态,继续运行。
  (4)主数据库在遇到检查点时才将缓存中的“脏页”回写到数据文件;辅助数据库根据收到的事务在本地进行重做(Re-do)。
DSC0003.jpg

  同步提交模式可以保证时刻拥有着一模一样的副本,因此具有极高的安全性。但是辅助服务器接收事务日志、写入事务日志文件和发送确认信息这一系列过程也会带来一定程度的延迟,从而影响到主数据库的性能。
  由于同步提交对性能影响较大,因此 SQL Server 仅允许单向的同步提交(从一个主副本单向同步到多个辅助副本)。而且,SQL Server 严格限制了同步提交的副本数量,AlwaysOn 可用性组的一个主副本最多可以同时向 2 个辅助副本实现同步提交,其他副本则使用异步提交模式。。
  ◆ 异步提交模式
  异步提交时,主数据库将事务发送给辅助数据库后,无需等待而直接继续运行。
  异步提交模式消除了主数据库的等待状态,因此这种提交模式对性能几乎没有影响。但是辅助数据库可能遇到更新数据失败的情况(例如,因网络故障导致未接受主数据库的事务,或写入本地事务日志日志文件时遇到错误),而此时主数据库如果发生故障则可能造成数据丢失。
  SQL Server 2014 最多允许 AlwaysOn 可用性组拥有 8 个辅助副本,其中同步提交的副本数量不能超过2个。


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-622277-1-1.html 上篇帖子: SQL 跟踪(SQL Trace)介绍 下篇帖子: SQL Server -- 数据库开发的二十一条军规
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表