永久删除节点虽然不像添加节点那样常见,但如果主机系统过时或过度配置,它将非常有用。
1 - 自动逐出运行状况不佳的节点
为了管理群集中节点的运行状况,Vertica 通过发送和接收检测信号来定期执行运行状况检查。在运行状况检查期间,群集中的每个节点都会验证对其编录、编录磁盘和本地存储位置('TEMP、DATA'、TEMP、DATA 和 DEPOT)的读写访问权限。验证后,节点发送检测信号。如果一个节点在五个间隔后未能发送检测信号(五次运行状况检查失败),则会将该节点从群集中逐出。
您可以使用 DatabaseHeartBeatInterval 参数控制相邻两次运行状况检查之间的时间。默认情况下,DatabaseHeartBeatInterval 设置为 120,即允许在无检测信号的情况下经过五个 120 秒的间隔。
逐出前允许的时间长度为:
TOT = DHBI * 5
其中,TOT 是在逐出之前所允许的无检测信号总时间(以秒为单位),DHBI 等于 DatabaseHeartBeatInterval 的值。
如果您设置的 DatabaseHeartBeatInterval 值过低,则可能导致节点在出现短暂的运行状况问题时被逐出。有时,此类过早逐出会降低 Vertica 数据库的可用性和性能。
另请参阅
常规参数中的 DatabaseHeartbeatInterval 常规参数
2 - 降低 K‑Safety 以启用节点移除
K-safety 级别为 1 的数据库至少需要三个节点才能运行,K-safety 级别为 2 的数据库至少需要 5 个节点才能运行。您可以按照如下方式检查群集的当前 K-safety 级别:
=> SELECT current_fault_tolerance FROM system;
current_fault_tolerance
-------------------------
1
(1 row)
要从具有 K-safety 所要求的最少节点数的群集中移除节点,请首先使用
MARK_DESIGN_KSAFE
降低 K-safety 级别。
当心
将数据库的 K-safety 级别降低到 0 会消除 Vertica 的容错功能。如果必须将 K-safety 降为 0,请首先备份数据库。3 - 从数据库中移除节点
注意
在 Eon 模式数据库中,可从包含节点的子群集(而非数据库)中移除节点。有关详细信息,请参阅移除节点。只要有足够的剩余节点来满足 K-Safety 要求,便可以从数据库中移除节点。不能删除对 K-safety 至关重要的节点。请参阅降低 K‑Safety 以启用节点移除。
可使用以下方法之一从数据库中移除节点:
-
管理控制台界面
-
管理工具
先决条件
在从数据库中移除节点之前,请验证数据库是否符合以下要求:
-
它正在运行。
-
它已备份。
-
该数据库具有符合 K-safety 所需的最少节点数。如有必要,请暂时降低数据库的 K‑safety 级别。
-
数据库中的所有节点都必须处于正常运行状态或处于活动备用状态。如果您在数据库节点关闭时尝试移除节点,Vertica 会报告错误“所有节点都必须处于 UP 或 STANDBY 才能删除节点 (All nodes must be UP or STANDBY before dropping a node)”。即使尝试移除处于关闭状态的节点,也会收到此错误。
管理控制台
使用管理控制台将节点从其管理页面中移除:
按照如下方式移除数据库节点:
-
选择要移除的节点。
-
在节点列表中单击移除节点 (Remove node)。
存在以下限制:
-
只能移除属于数据库群集的节点。
-
不能移除处于 DOWN 状态的节点。
移除节点时,它的状态会更改为 STANDBY。可稍后将处于 STANDBY 状态的节点添加回数据库。
管理工具
要使用管理工具从数据库中移除未使用的主机:
-
打开管理工具。有关访问管理工具的信息,请参阅使用管理工具。
-
在“主菜单 (Main Menu)”上,选择“查看数据库群集状态 (View Database Cluster State)”以验证数据库是否正在运行。如果数据库未在运行,请启动该数据库。
-
从“主菜单 (Main Menu)”中,选择“高级菜单 (Advanced Menu)”,然后选择“确定 (OK)”。
-
在“高级菜单 (Advanced Menu)”中,选择“群集管理 (Cluster Management)”,然后选择“确定 (OK)”。
-
在“群集管理 (Cluster Management)”菜单中,选择“从数据库中移除主机 (Remove Host(s) from Database)”,然后选择“确定 (OK)”。
-
当出现警告,提示您必须重新设计数据库并创建不包括待删除主机的投影时,选择“是 (Yes)”。
-
选择要从中移除主机的数据库,然后选择“确定 (OK)”。
此时将出现当前处于活动状态的主机列表。
-
选择要从数据库中移除的主机,然后选择“确定 (OK)”。
-
出现提示时,选择“确定 (OK)”以确认您希望移除这些主机。
-
收到主机已成功移除的通知时,选择“确定 (OK)”。
-
如果从大型群集 (Large Cluster) 配置中移除了某个主机,则打开 vsql 会话并运行 realign_control_nodes:
SELECT realign_control_nodes();
有关更多详细信息,请参阅 REALIGN_CONTROL_NODES。
-
如果该主机未被群集中的任何其他数据库使用,您可以从群集中移除该主机。请参阅从群集中移除主机。
4 - 从群集中移除主机
如果从数据库中移除的某个主机未被任何其他数据库使用,您可以使用
update_vertica
将该主机从群集中移除。在此操作期间,可让数据库一直运行。
当您使用 update_vertica 减小群集的大小时,它还会执行以下任务:
-
将 spread 修改为匹配小型群集。
-
将 管理工具配置为处理小型群集。
注意
您可以使用管理控制台从数据库中移除主机,但不能从群集中移除这些主机。在其中一台 Vertica 群集主机上,运行带 –-remove-hosts
开关的
update_vertica
。此开关采用要从群集中移除的主机的逗号分隔列表。您可以按名称或 IP 地址引用主机。例如,可以按如下方式移除主机 host01
、host02
和 host03
:
# /opt/vertica/sbin/update_vertica --remove-hosts host01,host02,host03 \
--rpm /tmp/vertica-10.1.1-0.x86_64.RHEL6.rpm \
--dba-user mydba
如果 --rpm
指定新的 RPM,则 Vertica 会先将其安装在现有群集主机上,然后再继续。
update_vertica
使用与
install_vertica
.相同的选项。有关所有选项,请参阅使用安装脚本安装 Vertica。
要求
-
如果
-remove-host
s 指定了包含多个主机的列表,则在该列表中的主机之间不能嵌入任何空格。 -
使用与原始安装相同的命令行选项。如果您针对数据库管理员用户名、密码或目录路径使用非默认值,请在移除主机时提供相同的信息;否则,此过程将失败。考虑将原始安装选项保存在属性文件中,以便在后续安装和更新操作中重新使用这些选项。请参阅静默安装 Vertica。