0

谁能帮我这个 ...

我有一个 3 节点 sql 服务器集群,可以说 N1、N2 和 N3。三节点集群的名称是 SQLCLUS。应用程序使用连接字符串名称中的名称 SQLCLUS 连接到数据库。

该应用程序使用 SQL Server 会话管理。所以我远程桌面到 N1(它是主动的,而 N2 和 N3 是被动的)并从 locaiton

C:\Windows\Microsoft.NET\Framework64\v2.0.50727

我执行了以下命令

aspnet_regsql.exe -S SQLCLUS -E -ssadd -sstype p

命令执行成功。然后我可以登录到 SQLCLUS 并查看使用 2 个表创建的 ASpState 数据库。

然后我测试了使用 SQL Server 会话的应用程序,它也可以正常工作。

现在我的问题是...

  1. 如果故障转移到节点 N2 或 N3,我的应用程序还能工作吗?我没有从 N2 执行上述命令 (aspnet_regsql.exe)。

  2. 我也应该在 N2 和 N3 中执行命令 aspnet_regsql.exe -S SQLCLUS -E -ssadd -sstype p 吗?

  3. 执行上述命令后,sql server 会发生什么变化?我的意思是,是否有任何可以看到的服务 ot 设置更改?

非常感谢任何关于这方面的投入......

提前致谢...

    3.
4

1 回答 1

2

Sql Server 故障转移集群在概念上可以解释为冒烟和镜像 dns hack。以熟悉的术语思考集群会让您意识到它实际上是一项多么简单的技术。

Sql Server Failover Clustering 简述

假设您有两台计算机:SrvA 和 SrvB

您将外部硬盘 (F:) 插入 SrvA,安装 Sql Server 并将其配置为将其数据库文件存储在 f:\(可执行文件位于 C:\Program Files 下)。

拔下 HD,将其插入 SrvB,安装 Sql Server 并将其配置为将其数据库文件存储在 F:\ 完全相同的位置。

现在,您创建一个指向 SrvA 的 dns 别名“MyDbServer”,将外部 HD 插回 SrvA,然后启动 sql server。

一切都很好,直到有一天 SrvA 上的电源出现故障并且机器停机。

要从这场灾难中恢复,请执行以下操作:

  1. 将外部驱动器插入 SrvB
  2. 在 SrvB 上启动 sql server
  3. 调整“MyDbServer”的 dns 条目以指向 SrvB。

您现在已经启动并继续使用 SrvB,并且您的客户端应用程序很高兴地没有意识到 SrvA 失败,因为它们只使用名称“MyDbServer”进行连接。

现实中的故障转移集群

SrvA 和 SrvB 是集群节点。 外部硬盘是共享 SAN 存储。 三步恢复过程是在群集故障转移期间发生的,由Windows 故障转移群集服务自动管理。

每个 Sql Node 上需要运行什么样的任务?

您在 Sql Server 中执行的99.99%的任务将存储在共享存储上的数据库文件中,因此将在故障转移期间在节点之间移动。这包括从创建登录、创建数据库、在表上插入/更新/删除、Sql Agent 作业以及您能想到的几乎所有其他内容。这还包括 aspnet_regsql 命令执行的所有任务(从数据库的角度来看,它没有什么特别的作用)。

剩下的0.01%的事情必须在每个单独的节点上完成(因为它们没有存储在共享存储上)是应用服务包(记住可执行文件位于 c:)、某些注册表设置(一些Sql Server 注册表设置是“检查点”和故障转移,有些不是),注册第 3 方 COM dll(现在没有人真正这样做了)并更改运行 Sql Server 的服务帐户。

自己试试

如果您想验证 aspnet_regsql 不需要在每个节点上运行,请尝试故障转移并验证您的应用程序是否仍然有效。如果您确实在每个节点上运行 aspnet_regsql 并引用集群名称 (SQLCLUS),那么您将有效地覆盖数据库,因此如果它没有出错,它只会清除您现有的数据。

于 2013-05-22T06:39:55.457 回答