热门标签 | HotTags
当前位置:  开发笔记 > 数据库 > 正文

SQLServerAlwaysOn架构及原理

SQLServerAlwaysOn架构及原理杜飞SQLServer2012所支持的AlwaysOn技术集中了故障转移群集、数据库镜像和日志传送三者的优点,但又不相同。故障转移群集的单位是SQ

SQLServerAlwaysOn架构及原理杜飞SQLServer2012所支持的AlwaysOn技术集中了故障转移群集、数据库镜像和日志传送三者的优点,但又不相同。故障转移群集的单位是SQ

SQL Server AlwaysOn架构及原理

杜飞

SQL Server2012所支持的AlwaysOn技术集中了故障转移群集、数据库镜像和日志传送三者的优点,但又不相同。故障转移群集的单位是SQL实例,数据库镜像和日志传送的单位是单个用户数据库,而AlwaysOn支持的单位是可用性组,每个组中可以包括一个或者是多个用户数据库。也就是说,一旦发生切换,则可用性组中的所有数据组会作为一个整体进行切换。

AlwaysOn底层依然采用Windows 故障转移群集的机制进行监测和转移,因此也需要先建立Windows Cluster,只不过可用性组中的数据库不一定非要再存放在共享存储上了。可以是存储在本地磁盘上。

下面,先看一下AlwaysOn的关键特性:

1. 同故障转移群集一样,也需要一个虚拟网络名称用于客户端的统一连接。

2.一个主服务器可以最多对应四个辅助服务器,总数达到五个,而且辅助服务器支持只读功能。

3.辅助服务器可以独立执行备份和DBCC维护命令。通过配置,可以实现客户端的只读请求可以被自动定向到辅助服务器。

4.主服务器和辅助服务器之间的数据会被加密和压缩,以提高安全性和网络传输效率。

5..支持自动、手动和强制三种故障转移方式。

6.有仪表盘用于监控AlwaysOn的运行状态。

7.可以实现多站点的部署,即主站点和辅助站点可以跨物理网络。

AlwaysOn的基本架构

在Windows MSCS故障转移群集的基础上部署AlwaysOn高可用组,用户可以在群集节点上安装SQL Server单机实例,也可以安装SQL Server群集实例,AlwaysOn仅要求所有SQL Server实例都运行在同一个MSCS中,但SQL Server实例本身是不需要群集模式的,这与SQL Server2008 群集的实例完全不同。在此推荐使用单机模式的SQL Server,好处是:可用性副本是个单机实例,那么数据库副本就存放在该运行该实例节点的本地磁盘上;如果可用性副本是个群集实例,那么数据库副本就存放在共享磁盘上。

可用性组从Windows群集角度来看,就是一个群集资源,其中的所有数据库作为一个整体在节点间进行故障转移,当然这不包括系统数据库,系统数据库是不能加入高可用性组中的。

因为需要借助Windos群集实现监控和转移,所以AlwaysOn会受到一些限制:

一个可用性组中的所有可用性副本必须运行在单一的Windows群集上,跨不同Windows群集的SQL Server实例不能配置成一个AlwaysOn可用性组。

一个可用性组的所有可用性副本必须运行在Windows群集的不同节点上。运行在同一个节点上的两个不同实例不能用作同一个可用性组的副本。

如果某个可用性副本实例是一个SQL群集实例,那同一个SQL群集的其他非活跃节点上安装的任何其他SQL实例都不能作为它的辅助副本。

一个数据库只能属于一个可用性组。

AlwaysOn最多可以支持五个副本,但只有一个可用性副本上运行的数据库是处于可读写状态。这个可读写的数据库被称为主数据库(PrimaryDatabase),同时这个可用性副本被称为主副本(primaryreplica)。其余的副本都被称为辅助副本(secondaryreplica),辅助副本上的数据库可能是不可访问的,,或者是只能接受只读操作(取决于可用性组的配置),这些数据库被称为辅助数据库。一但发生故障转移,任何一个辅助副本都可以成为新的主副本实例。主副本会不断地将主数据库上的数据变化发送到辅助副本,来实现副本间的数据库同步。下图就显示了一个可用性组中各副本之间的关系。

image

下面,咱们再通过一个图看 一下AlwaysOn可用性组与Windows故障转移群集之间的关系,在这个图中,Windows的故障转移群集使用到了两个子网,在左边的子网里,有两个节点 ;右边的子网里有三个节点,其中最右边两个节点上创建了一个SQL Server的群集实例,存放于共享存储;其他三个节点安装的是单机实例,存放于本地存储;一共四个实例组成了一个AlwaysOn可用性组,其中一个主副本,其他的都是辅助副本。

image

侦听器

AlwaysOn创建后,客户端就需要进行连接,为了让应用程序能够透明地连接到主副本而不受故障故障转移的影响,我们需要创建一个侦听器,侦听器就是一个虚拟的网络名称,可以通过这个虚拟网络名称访问可用性组,而不用关心连接的是哪一个节点,它会自动将请求转发到主节点,当主节点发生故障后,辅助节点会变为主节点,侦听器也会自动去侦听主节点。

一个侦听器包括虚拟IP地址、虚拟网络名称、端口号三个元素,一旦创建成功,虚拟网络名称会注册到DNS中,同时为可用性组资源添加IP地址资源和网络名称资源。用户就可以使用此名称来连接到可用性组中。与故障转移群集不同,除了使用虚拟网络名称之外,主副本的真实实例名还可以被用来连接。

SQL Server2012早期版本的SQL Server只有在实例启动的时候地会尝试绑定IP和端口,但是SQL Server2012却允许在副本实例处于运行状况的时候随时绑定新的IP地址、网络名称和端口号。因此可以为随时为为可用性组添加侦听器,而且这个操作会立即生效。当添加了侦听器之后,在SQL Server的错误日志中可以看到类似:在虚拟网络名称上停止和启动侦听器的消息。

要注意的是,SQLBrowser服务是不支持Listener的。这是因为应用程序在使用Listener的虚拟网络名连接SQLServer时,是以一个默认实例的形式进行访问的(只有主机名,没有实例名),因此客户端根本就不会去尝试使用SQLBrowser服务。

各副本间的数据同步

AlwaysOn必须要维护各副本间的数据一致性,当主副本上的数据发生变化,会同步到辅助副本上。这里AlwaysOn通过三个步骤来完成:

步骤1:主副本记录发生变化的数据;

步骤2:将记录传输到各个辅助副本;

步骤3:把数据变化操作在辅助副本上执行一遍。

具体实现如下:

推荐阅读
  • FTP作为一种传统的文件传输协议,广泛用于不同设备间的文件交换。然而,随着网络安全需求的提升及传输效率的要求,选择合适的FTP客户端变得尤为重要。本文将介绍如何利用WinSCP这款强大且安全的工具,实现两台电脑之间的文件高效传输。 ... [详细]
  • 深入浅出:Hadoop架构详解
    Hadoop作为大数据处理的核心技术,包含了一系列组件如HDFS(分布式文件系统)、YARN(资源管理框架)和MapReduce(并行计算模型)。本文将通过实例解析Hadoop的工作原理及其优势。 ... [详细]
  • 对于初次购买阿里云服务器的新手用户来说,如何高效地利用服务器资源并成功部署网站是一个重要的课题。本文将详细指导您完成从购买服务器到网站上线的六个关键步骤。 ... [详细]
  • 本文详细介绍了在 Windows 7 上安装和配置 PHP 5.4 的 Memcached 分布式缓存系统的方法,旨在减少数据库的频繁访问,提高应用程序的响应速度。 ... [详细]
  • 深入解析轻量级数据库 SQL Server Express LocalDB
    本文详细介绍了 SQL Server Express LocalDB,这是一种轻量级的本地 T-SQL 数据库解决方案,特别适合开发环境使用。文章还探讨了 LocalDB 与其他轻量级数据库的对比,并提供了安装和连接 LocalDB 的步骤。 ... [详细]
  • 本文介绍了多种Eclipse插件,包括XML Schema Infoset Model (XSD)、Graphical Editing Framework (GEF)、Eclipse Modeling Framework (EMF)等,涵盖了从Web开发到图形界面编辑的多个方面。 ... [详细]
  • 本文详细解析了Java中流的概念,特别是OutputStream和InputStream的区别,并通过实际案例介绍了如何实现Java对象的序列化。文章不仅解释了流的基本概念,还探讨了序列化的重要性和具体实现步骤。 ... [详细]
  • 惠普战86 Pro G2:新一代商用台式机的性能与设计解析
    惠普战86 Pro G2台式机以其卓越的性能和紧凑的设计,满足了现代商务环境的需求。本文将详细介绍这款商用台式机的各项特点,包括其强大的硬件配置、精美的外观设计以及出色的稳定性和安全性。 ... [详细]
  • 本文介绍了如何使用C# Winform开发局域网内的文件传输功能,详细描述了从用户界面到后端网络通信的具体实现。 ... [详细]
  • IEC60825激光产品安全标准详解
    随着激光技术在全球范围内的广泛应用,尤其是激光投影显示技术的兴起,了解和遵守相关的安全标准变得尤为重要。本文将详细介绍IEC60825激光产品安全标准及其重要性。 ... [详细]
  • 本文探讨了Java中有效停止线程的多种方法,包括使用标志位、中断机制及处理阻塞I/O操作等,旨在帮助开发者避免使用已废弃的危险方法,确保线程安全和程序稳定性。 ... [详细]
  • 本文详细介绍了Oracle RMAN中的增量备份机制,重点解析了差异增量和累积增量备份的概念及其在不同Oracle版本中的实现。通过对比两种备份方式的特点,帮助读者选择合适的备份策略。 ... [详细]
  • 解决远程桌面连接时的身份验证错误问题
    本文介绍了如何解决在尝试远程访问服务器时遇到的身份验证错误,特别是当系统提示‘要求的函数不受支持’时的具体解决步骤。通过调整Windows注册表设置,您可以轻松解决这一常见问题。 ... [详细]
  • Redis: 高效的键值存储系统
    Redis是一款遵循BSD许可的开源高性能键值存储系统,它不仅支持多种数据类型的存储,还提供了数据持久化和复制等功能,显著区别于其他键值缓存解决方案。 ... [详细]
  • 本文介绍了一个基本的同步Socket程序,演示了如何实现客户端与服务器之间的简单消息传递。此外,文章还概述了Socket的基本工作流程,并计划在未来探讨同步与异步Socket的区别。 ... [详细]
author-avatar
mobiledu2502929627
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有