数据库的高可用是指在硬件、软件故障发生时,可以将业务从发生故障的数据库节点迁移至备用节点。本文主要讲述 SQL
Server 高可用方案,以及京东云 RDS 数据库的高可用实现。
一、高可用解决方案总览
1、故障转移集群
故障转移集群为整个 SQL Server 实例提供高可用性支持,这意味着在集群上某个节点的 SQL Server 实例发生了硬件错误、操作系统错误等会故障转移到该集群上的其它节点。通过多个服务器(节点)共享一个或多个磁盘来实现高可用性,故障转移集群在网络中出现的方式就像单台计算机一样,但是具有高可用特性。值得注意的是,由于故障转移集群是基于共享磁盘,因此会存在磁盘单点故障,因此需要在磁盘层面部署 SAN 复制等额外的保护措施。最常见的故障转移集群是双节点的故障转移集群,包括主主节点和主从节点。
2、事务日志传送
事务日志传送提供了数据库级别的高可用性保护。日志传送可用来维护相应生产数据库(称为“主数据库”)的一个或多个备用数据库(称为“辅助数据库”)。发生故障转移之前,必须通过手动应用全部未还原的日志备份来完全更新辅助数据库。日志传送具有支持多个备用数据库的灵活性。如果需要多个备用数据库,可以单独使用日志传送或将其作为数据库镜像的补充。当这些解决方案一起使用时,当前数据库镜像配置的主体数据库同时也是当前日志传送配置的主数据库。
事务日志传送可用于做冷备份和暖备份的方式。
3、数据库镜像
数据库镜像维护一个数据库的两个副本,这两个副本必须驻留在不同的 SQL Server 数据库引擎服务器实例上。通常,这些服务器实例驻留在不同位置的计算机上。启动数据库上的数据库镜像操作时,在这些服务器实例之间形成一种关系,称为“数据库镜像会话”。
其中一个服务器实例使数据库服务于客户端(主体服务器)。另一个服务器实例则根据镜像会话的配置和状态,充当热备用或温备用服务器(镜像服务器)。同步数据库镜像会话时,数据库镜像提供热备用服务器,可支持在已提交事务不丢失数据的情况下进行快速故障转移。未同步会话时,镜像服务器通常用作热备用服务器(可能造成数据丢失)。
在“数据库镜像会话”中,主体服务器和镜像服务器作为“伙伴”进行通信和协作。两个伙伴在会话中扮演互补的角色:“主体角色”和“镜像角色”。在任何给定的时间,都是一个伙伴扮演主体角色,另一个伙伴扮演镜像角色。每个伙伴拥有 其当前角色。拥有主体角色的伙伴称为“主体服务器”,其数据库副本为当前的主体数据库。拥有镜像角色的伙伴称为“镜像服务器”,其数据库副本为当前的镜像数据库。如果数据库镜像部署在生产环境中,则主体数据库即为“生产数据库”。
数据库镜像会话以同步操作或异步操作运行。在异步操作下,事务不需要等待镜像服务器将日志写入磁盘便可提交,这样可最大程度地提高性能。在同步操作下,事务将在伙伴双方处提交,但会延长事务滞后时间。
但是,SQL Server 镜像在 2012 以后的版本中被标记未过时,将有 AlwaysOn 取代。
4、复制
复制严格来说并不算是一个为高可用性设计的功能,但的确可以被应用于高可用性。复制提供了数据库对象级别的保护。复制使用的是发布 - 订阅模式,即由主服务器(称为发布服务器)向一个或多个辅助服务器或订阅服务器发布数据。复制可在这些服务器间提供实时的可用性和可伸缩性。它支持筛选,以便为订阅服务器提供数据子集,同时还支持分区更新。订阅服务器处于联机状态,并且可用于报表或其他功能,而无需进行查询恢复。SQL Server 提供四种复制类型:快照复制、事务复制、对等复制以及合并复制。
AlwaysOn 可用性组
AlwaysOn 可用性组是 SQL Server 2012 推出的新功能。同样提供了数据库级别的保护。它取数据库镜像和故障转移集群之长,使得业务上有关联的数据库作为一个可用性组共同故障转移,该功能还拓展了数据库镜像只能 1 对 1 的限制,使得 1 个主副本可以对应最多 4 个辅助副本(在 SQL Server 2014 中,该限制被拓展到 8 个),其中 2 个辅助副本可以被作为热备份和主副本实时同步,而另外两个异步辅助副本可以作为暖备份。此外,辅助副本还可以被配置为只读,并可用于承担备份的负载。
正因为如此,数据库镜像在 SQL Server 2012 中被标记为“过时”。
二、京东云 RDS 高可用实现
1、实现原理
京东云 SQL Server 在确保同样的功能和性能的前提下,以合理的预算,帮助您大量地屏蔽底层的技术细节,从而极大低降低管理复杂度。
毫无疑问,你可以选择自己搭建一套同城热备的高可用数据库,操心:租机柜、买服务器、配置服务器、配置存储、安装操作系统、安装并配置数据库、配置异地通信。无论从管理上还是周期上考虑,都很头疼。虽然你也可以选择把这一切都事先准备好,但是这意味着浪费。而云数据库:默认跨机架的热备高可用配置,数十秒建立完毕,可选跨机房配置;自动故障转移,一键主备切换,同时 IP 自动漂移。
京东云高可用基于 SQL Server 镜像原理,默认一主一备,可选跨机房部署,故障迁移极速完成,IP 自动捆绑飘逸,主备切换一键完成,详细原理图如下:
硬件层面的高可用:高性能 SSD 盘,磁盘损坏问题无需用户操心;服务器硬件方面,京东云方负责监控与维护。
2、便捷操作
数十秒生成高可用实例:
一键主动主备切换:
点击→“京东云”,薅一把最 Hou 的羊毛