Oracle 集群软件管理 - 添加和删除集群节点
---Oracle* Clusterware Clusterware Administration and Deployment Guide
7 Adding and Deleting Cluster Nodes
描述如何将节点添加到现有群集,以及如何从群集中删除节点。
本章为 Linux 、 UNIX 和 Windows 系统提供这些任务的过程。
本章包括以下主题:

  • 添加群集节点的必备步骤
  • 在 Linux 和 UNIX 系统上添加和删除群集节点
  • 在 Windows 系统上添加和删除群集节点
    相关主题
  • 克隆 Oracle Clusterware
    一:添加群集节点的必备步骤
    注意 :
    在向集群添加节点之前,请确保执行 Oracle Grid Infrastructure 安装和升级指南中列出的 Linux 预安装任务。
    不要安装 Oracle 集群软件。当您向集群添加节点时,软件将从现有节点复制。
    完成以下步骤以准备要添加到群集的节点:
    1. 建立物理连接。
    将节点的硬件连接到集群的网络基础结构。这包括建立网络连接、配置网络互连、配置共享磁盘子系统连接等。有关此步骤的详细信息,请参阅硬件供应商文档。
    2. 安装操作系统。
    安装与群集中其他节点上的操作系统匹配的操作系统的克隆映像。这包括安装所需的服务修补程序、更新和驱动程序。有关此过程的详细信息,请参阅操作系统供应商文档。
    注:
    Oracle 建议您使用克隆映像。但是,如果安装满足安装要求,则根据供应商文档安装操作系统。
    3. 创建 Oracle 用户。
    必须在现有节点上的新节点上创建所有 Oracle 用户。例如,如果要将节点添加到具有两个节点的群集,并且这两个节点对于 Oracle Grid Infrastructure home 和 Oracle home 具有不同的所有者,则必须在新节点上创建这些所有者,即使您不打算在新节点上安装 Oracle home 。
    注意:
    仅对 Linux 和 UNIX 系统执行此步骤。
    作为 root 用户,使用与现有节点上相同的用户 ID 和组 ID 创建 Oracle 用户和组。
    4. 确保在节点上配置了 SSH
    5. 使用群集验证实用程序( CVU )验证硬件和操作系统安装。
    在要添加的节点上配置硬件和操作系统后,可以运行以下命令来验证要添加的节点是否可由群集中的其他节点访问。还可以使用此命令验证用户与本地节点中所有给定节点的等效性、所有给定节点之间的节点连接、所有给定节点对共享存储的可访问性等等。
    a 、从现有节点上的 Grid_home/bin 目录中,运行 CVU 命令以获得引用节点的属性与当前集群环境中所有其他节点的属性的详细比较。将 ref_node 替换为要与 CVU 比较要添加的节点的现有集群中的节点的名称。在 -n 选项后指定以逗号分隔的节点列表。在下面的示例中, orainventory_group 是 Oracle Inventory group 的名称, osdba_group 是 osdba group 的名称:
    $ cluvfy comp peer [-refnode ref_node] -n node_list [-orainv orainventory_group] [-osdba osdba_group] [-verbose]
    b 、请确保网格基础结构管理存储库为四个以上添加的每个节点提供至少 500 MB 的额外空间,如下所示:
    $ oclumon manage -get resize
    如有需要,增加额外空间,如下所示:
    $ oclumon manage -repos changerepossize total_in_MB
    另见:
    有关使用 OCLUMON 的详细信息,请参阅 Oracle Autonomous Health Framework 用户指南
    注:
    对于引用节点,选择希望 CVU 与之进行比较的集群节点,例如,要添加的节点,使用 -n 选项指定
    完成本节中的过程后,就可以将节点添加到集群了。
    注:
    在完成 Oracle Clusterware 安装后,请避免更改主机名,包括添加或删除域限定条件。必须从群集中删除主机名已更改的节点,并用新名称重新添加。
    Linux UNIX 系统上添加和删除集群节点
    在 Linux 和 UNIX 系统上添加或删除群集节点。
    添加节点部分中的过程假定您已经执行了“添加群集节点的先决条件步骤”部分中的步骤。
    节点添加过程的最后一步包括将 Oracle Clusterware home 从现有节点上的 Oracle Clusterware home 扩展到要添加的节点。
    本节包括以下主题:
  • 在 Linux 和 UNIX 系统上添加群集节点
  • 删除 Linux 和 UNIX 系统上的群集节点
    注:
    从 Oracle Clusterware 11g release 2 ( 11.2 )开始, Oracle Universal 安装程序在添加节点时默认为静默模式。
    2.1 Linux UNIX 系统上添加群集节点
    有两种方法可用于将节点添加到集群中。
    2.1.1 使用 Fleet Patching Provisioning 添加节点
    如果您有一个 Fleet Patching 和 Provisioning 服务器,则可以使用 Fleet Patching 和 Provisioning 通过一个命令将节点添加到群集,如下例所示:
    $ rhpctl addnode gihome -client rhpclient -newnodes clientnode2:clientnode2-vip –root
    前面的示例使用 root 用户登陆(要添加的节点的登录名)将名为 clientnode2 的节点和 VIP clientnode2 VIP 添加到名为 rhpclient 的 Fleet Patching 和 Provisioning 客户端。
    2.1.2 使用 Oracle Grid Infrastructure Installer 添加节点
    如果不希望使用 Fleet Patching 和 Provisioning 向集群添加节点,则可以使用 Oracle Grid Infrastructure Installer 来完成此任务。
    注意 :
    您可以使用 $Oracle_home/install/response/gridSetup 。 rsp 模板创建一个响应文件来添加节点,使用 Oracle Grid Infrastructure Installer 进行非交互式 ( 静默模式 ) 操作。
    使用 Oracle Grid Infrastructure 安装程序将节点添加到群集
  1. 运行 ./gridSetup.sh 启动安装程序。
  2. 在“选择配置”选项页上,选择“ Add more nodes to the cluster ”。
  3. 在群集节点信息页上,单击 Add... 为要添加的节点提供信息。
  4. 验证过程在“执行先决条件检查”页上完成后,检查摘要,然后单击“安装”。
  5. 如果出现提示,则以 root 身份运行 orainstRoot.sh 脚本,用中央库存的位置填充 /etc/oraInst.loc 文件。例如:

    /opt/oracle/oraInventory/orainstRoot.sh
  6. 如果集群上配置了 Oracle RAC 或 Oracle RAC 单节点数据库,并且有本地 Oracle home ,请执行以下操作将 Oracle database home 扩展到节点 3 :
    a 、登陆到 node1 上的 Oracle_home/addnode 目录,并使用以下语法以安装 Oracle RAC 的用户身份运行 addnode.sh 脚本:
    $ ./addnode.sh "CLUSTER_NEW_NODES={node3}"
    b 、在 node3 上以 root 身份运行 Oracle_home/root.sh 脚本,其中 Oracle_home 是 Oracle RAC home 。
    如果有使用 Oracle 自动存储管理群集文件系统( Oracle ACFS )共享的 Oracle home ,请执行以下操作将 Oracle 数据库 home 扩展到节点 3 :
    a 、在 node3 上以 root 身份运行 Grid_home/root.sh 脚本,其中 Grid_home 是 Oracle 网格基础设施的 home 。
    b 、 以从要添加的节点上的 Oracle_home/oui/bin 目录安装 Oracle RAC 的用户身份运行以下命令以添加 Oracle RAC database home :
    $./runInstaller -attachHome ORACLE_HOME="ORACLE_HOME" "CLUSTER_NODES={node3}" LOCAL_NODE="node3" ORACLE_HOME_NAME="home_name" –cfs
    c 、登陆到 node1 上的 Oracle_home/addnode 目录,并使用以下语法以安装 Oracle RAC 的用户身份运行 addnode.sh 脚本:
    $ ./addnode.sh -noCopy "CLUSTER_NEW_NODES={node3}"
    注意 :
    使用 -noCopy 选项,因为目标节点上的 Oracle home 已经完全由软件填充。
    如果在非 Oracle ACFS 的共享文件系统上有共享的 Oracle home ,则必须首先在目标节点上为 Oracle RAC 数据库 home 创建装载点,装载并附加 Oracle RAC 数据库 home ,然后更新 Oracle Inventory ,如下所示:
    a 、在群集中的现有节点上运行 srvctl config database -db db_name 命令以获取挂载点信息。
    b 、在 node3 上以 root 用户身份运行以下命令以创建挂载点:

    mkdir -p mount_point_path
    c 、装载承载 Oracle RAC 数据库主目录的文件系统。
    d 、 以从要添加的节点上的 Oracle_home/oui/bin 目录安装 Oracle RAC 的用户身份运行以下命令以添加 Oracle RAC database home :
    $ ./runInstaller -attachHome ORACLE_HOME="ORACLE_HOME" "CLUSTER_NODES={local_node_name}" LOCAL_NODE="node_name" ORACLE_HOME_NAME="home_name" -cfs
    登陆到 node1 上的 Oracle_home/addnode 目录,并使用以下语法以安装 Oracle RAC 的用户身份运行 addnode.sh 脚本:
    $ ./addnode.sh -noCopy "CLUSTER_NEW_NODES={node3}"
    注:
    运行 addnode.sh 后,确保 Grid_home/network/admin/samples 目录的权限设置为 750 。
  7. 以 root 身份在 node3 上运行 Grid_home/root.sh 脚本,并按照说明运行后续脚本。
    注:
  • 如果在上一步中运行了 root.sh 脚本,则无需再次运行。
  • 如果您有 policy-managed 数据库,则必须确保在运行 root.sh 脚本之前将 Oracle home 克隆到新节点。
  • 如果在要添加到群集的节点上配置了任何管理员管理的数据库实例,则必须在运行 root.sh 脚本之前将 Oracle home 扩展到新节点。
    或者,使用 srvctl remove instance 命令删除管理员管理的数据库实例。
  1. 从 Grid_home/bin 目录以 root 用户身份运行以下命令,启动新节点上的 Oracle ACFS 资源:

    srvctl start filesystem -device volume_device_name -node node3
    注:
    确保 Oracle ACFS 资源(包括 Oracle ACFS 注册表资源和 Oracle home 所在的 Oracle ACFS 文件系统资源)在新添加的节点上联机。
  2. 以安装 Oracle Clusterware 的用户身份运行以下 CVU 命令,以检查群集完整性。此命令验证是否已在网络、共享存储和群集软件级别将任意数量的指定节点成功添加到群集:
    $ cluvfy stage -post nodeadd -n node3 [-verbose]
    2.2 Linux UNIX 系统上删除群集节点
    注:
  • 在从集群中删除节点之前,可以从节点中删除 Oracle RAC 数据库实例,但不需要执行此步骤。如果不删除该实例,则该实例仍处于配置状态,但从未运行。从群集中删除节点不会从群集中删除节点的配置信息。剩余的配置信息不会干扰群集的操作。
    另请参阅: Oracle Real Application Clusters Administration and Deployment Guide 以获取有关删除 Oracle RAC 数据库实例的更多信息
  • 如果删除由 GNS 服务的集群的最后一个节点,则必须从 GNS 中删除该集群的条目。
  • 如果集群中有未固定的节点,那么 Oracle Clusterware 会在一段时间后忽略这些节点,不需要删除它们。
  • 如果为某个节点创建特定于节点的配置(例如禁用特定节点上的服务,或将该节点添加到服务器池的候选列表中),则从群集中删除该节点时不会删除该特定于节点的配置。必须手动删除此类特定于节点的配置。
  • 在对群集进行任何更改后,投票文件将自动备份到 OCR 中。
  • 如果要从 Oracle Flex 集群中删除非集线器节点,只需完成此过程的步骤 1 到 4 。
    要从群集删除节点,请执行以下操作:
  1. 确保 Grid_home 正确指定每个节点上 Oracle Clusterware home 的完整目录路径,其中 Grid_home 是已安装 Oracle Clusterware 软件的位置。
  2. 以 root 用户或安装 Oracle Clusterware 的用户身份运行以下命令,以确定要删除的节点是否处于活动状态以及是否已固定:
    $ olsnodes -s -t
    如果节点已固定,则运行 crsctl unpin css 命令。否则,继续下一步。
  3. 在要删除的节点上,根据您是否有共享或本地 Oracle home ,以安装 Oracle Clusterware 的用户身份完成以下过程之一:
  • 对于本地主节点,通过运行以下命令从要删除的节点卸载 Oracle Clusterware home ,如下所示,其中 Grid_home 是为 Oracle Clusterware 主节点定义的路径:
    $ Grid_home/deinstall/deinstall –local
    注意:
    –如果未指定 -local 标志,则该命令将从群集中的每个节点中删除 Oracle Grid Infrastructure home 。
    –如果剪切并粘贴前面的命令,则将其粘贴到文本编辑器中,然后再将其粘贴到命令行以删除此文档可能包含的任何格式。
    注:
    或者,在配置 Oracle Grid Infrastructure 之后,如果要从 grid infrastructure 中删除任何节点,则可以通过运行 Grid_home/gridSetup.sh 、选择从集群中删除节点并按照提示进行操作来完成此操作。
  • 如果您有一个共享 home ,则按以下顺序在要删除的节点上运行以下命令。
    运行以下命令取消配置 Oracle Clusterware :
    $ Grid_home/crs/install/rootcrs.sh -deconfig -force
    从 Grid_home/oui/bin 目录运行以下命令以分离 Grid home :
    $ ./runInstaller -detachHome ORACLE_HOME=Grid_home -silent –local
    按照安装实用程序的提示,手动删除任何配置文件。
  1. 从未删除的任何节点上,以 root 用户身份从 Grid_home/bin 目录中运行以下命令以从群集删除该节点:

    crsctl delete node -n node_to_be_deleted
  2. 运行以下 CVU 命令以验证指定的节点是否已从群集成功删除:
    $ cluvfy stage -post nodedel -n node_list [-verbose]
  3. 如果删除 Oracle Clusterware 关闭的群集节点,请确定已删除节点的 VIP 是否仍然存在,如下所示:
    $ srvctl config vip -node deleted_node_name
    如果 VIP 仍然存在,则按如下方式删除它:
    $ srvctl stop vip -node deleted_node_name
    $ srvctl remove vip -vip deleted_vip_name
    使用 Fleet Patching 和 Provisioning 删除节点
    或者,您也可以使用 Fleet Patching 和 Provisioning ,通过一个命令从群集删除节点,如下例所示:
    $ rhpctl deletenode gihome -client rhpclient -node clientnode2 –root
    前面的示例使用 root 用户(要删除的节点的登录名)从名为 rhpclient 的 Fleet Patching 和 Provisioning 客户端中删除名为 clientnode2 的节点。
    Windows 系统上添加和删除群集节点
    本节介绍在 Windows 系统上添加和删除群集节点。本节包括以下主题:
  • 在 Windows 系统上向群集添加节点
  • 删除 Windows 系统上的群集节点
    另见:
    用于 Microsoft Windows x64 ( 64 位)的 Oracle 网格基础结构安装和升级指南,了解有关删除整个群集的详细信息
    3.1 Windows 系统上向集群添加节点
    在添加节点之前,请确保完成“添加集群节点的先决条件步骤”中列出的先决条件。
    此过程描述如何向集群添加节点。本程序假设 :
  • 现有的集群中有两个节点,分别名为 node1 和 node2
  • 您正在添加一个名为 node3 的节点
  • 您已经在本地的 node1 和 node2 上成功安装了 Oracle Clusterware ,其中 Grid_home 表示成功安装的 home
    注意 :
    在 Oracle 数据库已经从 Windows 系统上的 Oracle 数据库 10g 版本 1(10.1) 升级的配置中,不要使用本节描述的过程来添加集群节点。
    添加一个节点 :
  1. 验证集群和节点 3 的完整性 :
    C:>cluvfy stage -pre nodeadd -n node3 [-fixup] [-verbose]
    您可以指定 -fixup 选项和一个目录,如果验证失败, CVU 会将修复集群或节点的指令打印到这个目录中。
  2. 在 node1 上,切换到 Grid_homeaddnode 目录并运行 addnode.bat 脚本,如下所示 :
    C:>addnode.bat "CLUSTER_NEW_NODES={node3}" "CLUSTER_NEW_VIRTUAL_HOSTNAMES={node3-vip}"
  3. 在新节点上运行以下命令 :
    C:>Grid_homecrsconfiggridconfig.bat
  4. 只有当您将数据库系统配置为使用 Oracle ACFS 时,才需要以下步骤 :
    a. 对于每个配置为使用 Oracle ACFS 的数据库,从 Oracle RAC 数据库 home 运行以下命令 :
    C:>ORACLE_HOME/bin/srvctl stop database -db database_unique_name
    注:
    运行 srvctl config database 命令以列出使用 Oracle Clusterware 配置的所有数据库。使用 srvctl config database-db database_unique_name 查找数据库详细信息。如果 ORACLE_HOME 路径指向 ORACLE ACFS mount 路径,则数据库使用 ORACLE ACFS 。使用命令输出查找配置为在新添加的节点上运行的数据库实例名称。
    b 、使用 Windows 服务器管理器控件停止和删除服务。
    c 、对于在本步骤第一部分中收集的每个数据库和数据库 home ,运行以下命令:
    C:> ORACLE_HOME/bin/srvctl start database -db database_unique_name
  5. 运行以下命令以验证所有已配置节点(包括先前存在的节点和已添加的节点)上 Oracle Clusterware 组件的完整性:
    C:>cluvfy stage -post crsinst -n all [-verbose]
    完成本节中添加节点的过程后,您可以选择将带有 Oracle RAC 组件的 Oracle 数据库扩展到新节点,使它们成为现有 Oracle RAC 数据库的成员。
    为 Microsoft 事务服务器创建 OraMTS 服务
    用于 Microsoft 事务服务器 (OraMTS) 的 Oracle 服务允许在 Microsoft 应用程序协调的事务中使用 Oracle 数据库作为资源管理器。 OraMTS 充当 Oracle 数据库到 Microsoft 分布式事务协调器 (MSDTC) 的代理。因此, OraMTS 提供了客户端连接池,并允许利用 Oracle 的客户端组件参与可启动和分布式事务。此外, oramt 可以在任何操作系统上运行 Oracle 数据库,前提是服务本身运行在 Windows 上。
    在 Oracle Database 12c 之前的版本中, OraMTS 服务是作为纯软件安装的一部分创建的。从 Oracle Database 12c 开始,您必须使用配置工具来创建此服务。
    在为 Oracle RAC 添加节点或执行软件安装后创建 OraMTS 服务,如下所示 :
  6. 打开命令窗口。
  7. 将目录更改为 %ORACLE_HOME%bin 。
  8. 运行 OraMTSCtl 实用程序来创建 OraMTS 服务,其中 host_name 是应该在其上创建服务的节点列表 :
    C:..bin> oramtsctl.exe -new -host host_name
    3.2 删除 Windows 系统上的群集节点
    删除 Windows 系统上的群集节点
    从 Windows 系统中删除群集节点。
    此过程假设 Oracle Clusterware 安装在 node1 、 node2 和 node3 上,并且您正在从集群中删除 node3 。
    注:
  • Oracle 不支持使用 Oracle Enterprise Manager 删除 Windows 系统上的节点。
  • 如果删除由 GNS 服务的集群的最后一个节点,则必须从 GNS 中删除该集群的条目。
  • 在从集群中删除节点之前,可以从节点中删除 Oracle RAC 数据库实例,但不需要执行此步骤。如果不删除该实例,则该实例仍处于配置状态,但从未运行。从群集中删除节点不会从群集中删除节点的配置信息。剩余的配置信息不会干扰群集的操作。
    另请参阅: Oracle Real Application Clusters Administration and Deployment Guide 以获取有关删除 Oracle RAC 数据库实例的更多信息
    要删除 Windows 系统上的群集节点,请执行以下操作:
  1. 仅当您有 local home 时,在要删除的节点上,使用 -local 选项运行以下命令以更新节点列表:
    C:>Grid_homeouibinsetup.exe -updateNodeList ORACLE_HOME=Grid_home "CLUSTER_NODES={node_to_be_deleted}" CRS=TRUE -local
    注:
    如果要从 Oracle Flex 集群中删除非集线器节点,则没有运行此命令。
  2. 在要删除的节点上运行 deinstall 工具,以卸载并取消配置 Oracle Clusterware home ,如下所示:
    C:Grid_homedeinstall>deinstall.bat -local
    注意:
  • 如果未指定 -local 标志,则该命令将从群集中的每个节点中删除 OracleGrid 基础结构主节点。
  • 如果剪切并粘贴前面的命令,则在将其粘贴到命令行以删除此文档可能包含的任何格式之前,将其粘贴到文本编辑器中。
  1. 在未删除的节点上,运行以下命令:
    C:>Grid_homebincrsctl delete node -n node_to_be_deleted
  2. 运行以下 CVU 命令以验证指定的节点是否已从群集成功删除:
    C:>cluvfy stage -post nodedel -n node_list [-verbose]
  3. 如果删除 Oracle Clusterware 关闭的群集节点,则确定已删除节点的 VIP 是否仍然存在,如下所示:
    C:> ORACLE_HOME/bin/srvctl config vip -node deleted_node_name
    如果 VIP 仍然存在,则按如下方式删除它:
    C:> ORACLE_HOME/bin/srvctl stop vip -node deleted_node_name
    C:> ORACLE_HOME/bin/srvctl remove vip -node deleted_node_name
最后修改:2022 年 04 月 03 日
如果觉得我的文章对你有用,请随意赞赏