如果我不能完全表达清楚,请原谅。这不是故意的,我是一家小公司的高级开发人员,目前必须扮演经理的角色。
无论如何,故事是这样的,我们在“集群”中拥有 2 台装有 SQL Server 2008 Standard 的旧戴尔服务器。我将其放在引号中,因为我仍然不完全清楚这意味着什么。我们有 2 台全新的刀片服务器,想将现有数据库迁移到新硬件上。
好的,问题就在这里。我们需要在停机时间很短或没有停机时间的情况下完成此操作。有人告诉我,我们可以驱逐被动节点,然后拉入一台新服务器。但我还被告知这是一个危险的步骤,因为可能会出现问题,导致集群失败,然后我们将一无所有,因为主动服务器将无法重新启动。
有人知道如何处理这个问题吗?有人告诉我,确保成功的唯一方法是至少停机一天,在新硬件上启动新集群,然后逐个迁移数据库。
[编辑] 由于它仍然与这个问题相关,我想添加另一个问题。我们是否可以从集群中删除一台机器。然后创建一个新的集群,将删除的节点作为活动机器,然后将新服务器放入其中?在出现问题时,在新机器换入换出的同时有效地保留旧集群?
答案1
几乎没有停机时间
虽然现在运行企业需要高可用性,但对您来说帮助不大,在这种情况下,您最明显的功能是能够在集群中拥有最多 16 个节点,因此在您的情况下,您只需添加 2 个节点,然后删除不再需要的节点。我会考虑在您升级硬件时升级版本
... 但我也被告知这是一个危险的举措,因为可能会出错,导致集群失败,然后我们将一无所有,因为活动服务器将无法重新启动。
一切皆有可能。虽然我从未见过服务器 208 sql 2008 故障转移群集突然死机,但理论上是可能的。请注意,在节点升级期间,活动节点不会“关闭”,因此无需关闭任何节点。群集只是在 1 个节点上运行,无法进行故障转移。最合理的最坏情况是旧节点不知何故死机,而替换节点不会添加,在这种情况下,您将无法运行故障转移功能,直到导致服务器无法添加的问题得到解决。
有人告诉我,确保成功的唯一方法是至少停机一天,在新硬件上启动一个新集群,然后逐个迁移数据库。
这可能是确保工作成功的唯一方法。我会问一个天真的问题:“如果移动集群需要一天的停机时间,我为什么要首先进行集群?我可以购买 2 台机器,让 1 台处于关闭状态,随时准备投入使用,以获得这种可用性。”简而言之,你需要找到一个真正使用过集群并了解相关技术的人。假设没有独特的问题(例如,你的公司写了一些几乎在集群上运行的集群感知软件)我认为大多数专业的微软管理员都会不好意思说需要一天的停机时间来更换/添加现有工作集群的硬件
答案2
首先,问题末尾推荐的策略也是我推荐的方法,但鉴于这不是一个选项,所以我将这样处理。你似乎对集群感到困惑,基本上两个服务器都安装了 SQL 和集群服务,通过集群服务使用命令,你可以将 SQL 从一台服务器“滚动”到另一台服务器。如果我是你,我会按照你的建议去做,将所有服务滚动到一个节点,从集群中删除第二个节点,将一台新服务器添加为集群节点,将所有服务滚动到新的集群节点,添加第二个新节点,从集群中删除第二个旧节点。
**请注意,如果您不熟悉集群服务和/或集群 SQL 安装,并且尝试在实时系统上执行此操作,那么结果可能会非常糟糕。比计划停机一天还要糟糕。我要么聘请一位有集群经验的顾问,要么如果那不是一个选择,设置一个测试环境,以便可以对流程进行彻底测试。
这里是指向向集群添加节点的步骤的链接。
答案3
除非您想再次使用硬件,否则根本不需要破坏旧集群。我建议如下:
- 使用新刀片创建新集群
- 在新集群上安装 SQL,保持驱动器号、路径、端口和实例名称(如果适用)相同
- 安装后,将 master 和 msdb 数据库从旧 SQL 服务器恢复/替换到新服务器以获取登录名和作业,或者在旧服务器上编写作业脚本并使用 sp_help_revlogins
- 将数据库从旧服务器日志传送或镜像到新服务器,以使数据保持最新
这将使您的新实例与旧实例处于相同的状态,同时重新安装操作系统和 SQL。为了切换到新集群,您可以执行以下操作,假设旧实例的名称为 INSTA,新实例的名称为 INSTB:
- 使旧 SQL 实例脱机
- 恢复新服务器上的数据库
- 从 Active Directory 的 DNS 中删除 INSTA DNS 记录
- 在 Active Directory DNS 中创建指向 INSTB 的新 CNAME(别名)DNS 记录
完成此操作后,应用程序应连接到 SQL 实例的旧名称,但这会将它们带到新服务器。您可能需要在所有应用程序服务器上运行“ipconfig /flushdns”,以使 DNS 更改更快地工作,请确保 ping 旧名称以查看它何时指向回滚。我们使用此方法进行切换,因为它允许我们在需要回滚时保留旧集群。在将 SQL Server 网络名称参数更改为其他名称之前,您将无法启动旧的 SQL 实例,但是一旦完成,如果您想回滚,只需将 DNS 别名指向旧别名即可。
答案4
在不知道硬件具体情况的情况下,我的建议是将旧的被动节点映像到新服务器上。使用 Acronis 之类的软件,可以将映像放到新硬件上,这样您就可以将被动节点移动到新硬件上。到达那里后,您可以启动它并验证它是否正常运行(尽可能),然后尝试将其故障转移到新硬件。虽然有很多事情可能会出错,但正如 Jim B 所说,它很有可能会正确地故障转移到新硬件,或者无法工作,而只能返回到旧硬件。如果可行,则可以在另一个节点上重复该过程。如果不行,您可以重新打开旧的被动节点(您不必破坏它),然后尝试其他方法。