SQL Server 高可用性(二)群集与侦听器

简介: SQL Server 高可用性(二)群集与侦听器

一、群集

  1. MSFC

  在SQL Server中谈到群集,首先就会存在一个误区。实际上,SQL Server群集应当理解为“在MSFC中运行的SQL Server Service”,它依赖于MSFC。

  在Windows Server 2003时,Windows的群集被称为Microsoft Cluster Service(MSCS)。从Windows Server 2008 开始被称为 Microsoft Failover Cluster(MSFC)。

  在创建SQL Server群集之前,必须在Windows中实现一个MSFC,然后再将SQL Server安装成为MSFC中的一个“服务与应用程序”。

  1. 节点

  SQL Server群集实际上是将SQL Server实例作为一个服务安装在MSFC的每一个节点。MSFC最多允许16个节点。也就是说,可以将一个SQL Server实例安装到最多16个节点上。

  但同一时间只能在其中一个节点(主节点)运行这个SQL Server实例(服务)。即使你想在辅助节点上强行启动对应的SQL Server实例,MSFC也会加以阻止。

  1. Fail-over

  关于群集的第二个误区,是群集与负载平衡的区别。故障转移群集是用于获得高可用性的,而非用于实现负载平衡。

  MSFC会一直监听SQL Server实例(服务),当主节点上的SQL Server实例失败(Fail)了,MSFC会通知下一个节点立即运行SQL Server实例,并且MSFC将连接到旧节点上的全部请求转移到新的节点,从而保证客户端业务的连续性。这就是Fail-over(故障转移),也就是说,只有在发生故障时才会转移,而不是负载平衡(Load Balance)。

  1. 仲裁

  MSFC中存在一个非常重要的因素,那就是节点配置方式(仲裁)。可以理解为,仲裁需要使用投票机制,得票超过半数的节点才能成为主节点。

  Windows Server 2003时较常用的是2个节点加1个仲裁磁盘。

  Windows Server 2008则推荐使用节点多数(奇数个节点),当节点数量为偶数时才推荐添加一个仲裁磁盘。也就是说,Windows Server 2008 创建 Microfost Windows Cluster 时,仲裁磁盘(共享存储)并不是必须的。

二、侦听器

  侦听器在MSFC中被称为虚拟网络名称(Virtual Network Name)。

image.png

MSFC的侦听器

  MSFC自身就有一个侦听器,客户端可以直接访问这个侦听器。对这个侦听器的访问被MSFC重定向到主节点。

例如,使用远程桌面直接连接到侦听器。进入远程桌面后,再查看这台计算机的属性,可以发现其实就是主节点这台计算机。

image.png

  1. SQL Server Cluster的侦听器

  要访问SQL Server群集,必须访问SQL Server Cluster的侦听器。

image.png

如果直接访问主节点的名称,则报错,因为SQL Server群集实例并没有绑定到主节点名称,而是只绑定到MSFC中的SQl Server群集侦听器。

image.png

  1. AlwaysOn可用性组的侦听器

  要访问AlwaysOn可用性组,可以使用以下两种方式:

(1)访问AlwaysOn可用性组的侦听器

  连接到侦听器后,客户端可以实现read/write。而且由于后端的节点是自动Fail-over,所以客户端不用关心后端发生的节点切换。

image.png

2)直接访问指定的节点

  如果可以连接到指定的节点,客户端可以实现read-only(前提条件是该节点启用了read-only选项。但是客户端在write时可能会报错,因为这个节点不一定就是主节点。当这个节点Fail后,客户端的连接被断开。

image.png

相关文章
|
关系型数据库 MySQL 网络安全
5-10Can't connect to MySQL server on 'sh-cynosl-grp-fcs50xoa.sql.tencentcdb.com' (110)")
5-10Can't connect to MySQL server on 'sh-cynosl-grp-fcs50xoa.sql.tencentcdb.com' (110)")
|
SQL 安全 Java
驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接。错误:“The server selected protocol version TLS10 is not accepted by client
驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接。错误:“The server selected protocol version TLS10 is not accepted by client
1814 0
|
SQL 存储 网络安全
关系数据库SQLserver 安装 SQL Server
【7月更文挑战第26天】
339 6
解锁 SQL Server 2022的时间序列数据功能
【7月更文挑战第14天】要解锁SQL Server 2022的时间序列数据功能,可使用`generate_series`函数生成整数序列,例如:`SELECT value FROM generate_series(1, 10)。此外,`date_bucket`函数能按指定间隔(如周)对日期时间值分组,这些工具结合窗口函数和其他时间日期函数,能高效处理和分析时间序列数据。更多信息请参考官方文档和技术资料。
533 9
|
SQL 存储 监控
SQL Server的并行实施如何优化?
【7月更文挑战第23天】SQL Server的并行实施如何优化?
752 13
|
SQL 监控 数据库
SQL Server 查询超时问题排查
【7月更文挑战第8天】排查 SQL Server 查询超时涉及五个主要方面:检查复杂查询、评估服务器性能、审视配置参数、更新统计信息和分析执行计划。关注点包括查询的结构(如连接、子查询和索引),服务器资源(CPU、内存、网络延迟),连接和内存设置,以及统计信息的时效性。通过这些步骤可定位并解决性能瓶颈。
696 0
|
存储 SQL C++
对比 SQL Server中的VARCHAR(max) 与VARCHAR(n) 数据类型
【7月更文挑战7天】SQL Server 中的 VARCHAR(max) vs VARCHAR(n): - VARCHAR(n) 存储最多 n 个字符(1-8000),适合短文本。 - VARCHAR(max) 可存储约 21 亿个字符,适合大量文本。 - VARCHAR(n) 在处理小数据时性能更好,空间固定。 - VARCHAR(max) 对于大文本更合适,但可能影响性能。 - 选择取决于数据长度预期和业务需求。
1365 1
|
SQL 存储 Oracle
TDengine 3.3.2.0 发布:新增 UDT 及 Oracle、SQL Server 数据接入
**TDengine 3.3.2.0 发布摘要** - 开源与企业版均强化性能,提升WebSocket、stmt模式写入与查询效率,解决死锁,增强列显示。 - taos-explorer支持geometry和varbinary类型。 - 企业版引入UDT,允许自定义数据转换。 - 新增Oracle和SQL Server数据接入。 - 数据同步优化,支持压缩,提升元数据同步速度,错误信息细化,支持表名修改。 - 扩展跨平台支持,包括麒麟、Euler、Anolis OS等。
554 0
|
SQL Oracle 关系型数据库
MySQL、SQL Server和Oracle数据库安装部署教程
数据库的安装部署教程因不同的数据库管理系统(DBMS)而异,以下将以MySQL、SQL Server和Oracle为例,分别概述其安装部署的基本步骤。请注意,由于软件版本和操作系统的不同,具体步骤可能会有所变化。
1372 3
|
SQL 存储 安全
数据库数据恢复—SQL Server数据库出现逻辑错误的数据恢复案例
SQL Server数据库数据恢复环境: 某品牌服务器存储中有两组raid5磁盘阵列。操作系统层面跑着SQL Server数据库,SQL Server数据库存放在D盘分区中。 SQL Server数据库故障: 存放SQL Server数据库的D盘分区容量不足,管理员在E盘中生成了一个.ndf的文件并且将数据库路径指向E盘继续使用。数据库继续运行一段时间后出现故障并报错,连接失效,SqlServer数据库无法附加查询。管理员多次尝试恢复数据库数据但是没有成功。