此部分介绍如何准备和安装 Vertica 服务器。本指南还提供有关安装 Vertica 管理控制台的说明。
有关安装客户端驱动程序的信息,请参阅客户端驱动程序。
先决条件
-
本文档假定您已熟悉体系结构中讨论的概念。
-
要执行本文档中所述的过程,必须拥有群集中所有节点的 root 密码或 sudo 访问权限(用于访问所有命令)。
在开始使用 Vertica 之前,请首先考虑您的业务需求和可用资源。Vertica 可在各种环境中运行,并且可根据您的要求使用不同的方法进行安装。这将确定使用哪一条安装路径进行继续安装。
您可以选择在物理主机硬件上运行 Vertica,或者在云上部署 Vertica。
您是否有权访问要用于安装 Vertica 的内部部署硬件?在以下情况下,内部部署硬件有优势:
您的业务要求需要将敏感数据保存在内部。
与支付更高的云部署长期总成本相比,您更愿意支付较高的前期成本 (CapEx) 购买用于内部部署的硬件。
您无法连续访问 Internet。
您更喜欢对环境进行端到端控制,而不是依赖第三方云提供商来存储数据。
您可能已经为 Vertica 投资了一个数据中心和适合的硬件,并希望继续利用这些投资。
如果您计划在内部部署环境中安装 Vertica,本文档的以下部分将指导您完成准备和安装:手动安装。
Vertica 可以在 Amazon Web Services (AWS)、Google Cloud Platform (GCP) 和 Microsoft Azure 上运行。要获得以下任何优势,您可以考虑在云资源上运行 Vertica:
您计划快速扩大和缩小群集大小,以适应不断变化的分析工作负载。您将在高峰工作负载期间配置更多的计算资源,且不会在低需求期间产生相同的资源成本。Vertica 数据库的 Eon 模式专为此用例而设计。
相对于在前期为内部部署支付更高的硬件购买成本,您更愿意为持续的云部署随时间推移而支付 OpEx。
您需要降低维护内部部署物理硬件(例如适应服务器购买、硬件折旧、软件维护、功耗、占地面积和备份基础设施)所涉及的成本、人工和专业知识。
您希望更简单、更快速地进行部署。在云上安装,那么在安装过程中不必具备更为特定的硬件专业知识。此外,在 AWS 和 GCP 这样的云平台上,Vertica 提供了模板,您只需要执行几个步骤,即可部署一套已经安装了 Vertica 和管理控制台的预配置资源。
您的工作负载非常多变,并且您希望在需要时租用基础设施,而不愿意为数据中心的闲置设备付费。
您是一家初创企业,在产品或服务打开市场并不断增长之前,您不希望扩建数据中心。
如果您计划在云上安装 Vertica,请首先查看在云中安装。
您可以使用以下两种模式之一创建 Vertica 数据库:Eon 模式或企业模式。模式用于确定数据库的底层架构,例如 Vertica 的数据存储方式、数据库群集的扩展方式以及数据加载方式;创建数据库后,将无法更改模式。数据库模式不影响您在使用数据库时运行查询和其他日常任务的方式。
有关企业模式和 Eon 模式的深入解释,请参阅体系结构。
在您决定如何运行 Vertica 之后,可以选择适合您需求的安装方法。
通过命令行手动安装 Vertica 适用于所有平台。您应首先设置一个节点群集,然后安装 Vertica。
如果您的群集有许多特定配置要求,并且您有一位数据库管理员具备在您选择的平台上手动设置群集的专业知识,那么手动安装可能适合您。虽然手动安装需要更长的时间,但是您可以根据系统的确切需求配置群集。
对于内部部署环境,必须手动安装 Vertica。请参阅手动安装入门。
对于 Amazon AWS、Google Cloud Platform 和 Microsoft Azure,您可以选择自动或手动安装。有关在每个云平台上手动安装的信息,请参阅在云中安装。
可以在 Amazon AWS、Google Cloud Platform 和 Microsoft Azure 上进行自动安装。
自动安装会部署一个预配置的环境,该环境由可以运行您的群集的云资源组成,并且已经安装了 Vertica 和管理控制台。在所选平台上将一些参数输入到模板中,即可快速启动并运行 Vertica。
此外,当您使用 AWS 自动部署时,管理控制台提供特定于 AWS 的群集管理功能,包括启动 AWS 群集节点并在其上创建 Vertica 数据库的群集创建向导。
对于 Amazon AWS、Google Cloud Platform 和 Microsoft Azure,您可以选择自动或手动安装。有关在每个云平台上手动安装的信息,请参阅在云中安装。
如果您选择使用 Eon 模式安装数据库,则必须计划使用公共存储来存储数据库的数据。公共存储基于对象存储,例如 AWS S3 或 Pure Storage FlashBlade 服务器。
无论您使用何种对象存储平台,都必须确保它具有持久性(防止数据丢失)。Eon 模式数据库中的数据安全程度不会超过它所在的对象存储的安全程度。大多数云提供商的对象存储都带有保证冗余,以防数据丢失。当您以内部部署方式安装 Eon 模式数据库时,可能还需要采取额外步骤来防止数据丢失。
大多数云提供商并不限制对象存储中可以存储的数据量。唯一真正的限制来自您的预算;存储更多数据,需要更多资金。
当您以内部部署方式来部署 Eon 模式数据库时,您的存储将受对象存储大小的限制。与云不同,您必须提前计划所需的存储量。例如,如果您安装了带有三个 8TB 刀片的 Pure Admin FlashBlade,那么理论上,您的数据库可以增长到 24TB。在实践中,您需要考虑对象存储的其他用途、数据压缩等因素,以及未回收的 ROS 容器(Vertica 不再使用但对象存储尚未删除的存储容器)消耗的空间。
以下计算器可帮助您根据估计的数据大小以及公共存储的使用来确定公共存储需求的大小。“值 (Value)”列中具有白色背景的值是可编辑的。您可根据自己的具体环境对其进行更改。
您可以使用 Amazon Web Services、Microsoft Azure 或 Google Cloud Platform 在几分钟内启动 Vertica 群集。
Vertica 在所有三个平台上提供简单的自动部署;只需输入几个参数,即可启动一个功能齐全的已安装 Vertica 和管理控制台的环境。
如果启动预配置的环境不能满足您的特定需求,您可以改为在云中设置节点并手动安装 Vertica,以便更好地控制您的设置。
您可以在企业模式或 Eon 模式下创建数据库。Eon 模式数据库仅在 AWS 环境中受支持,且为了实现云中的更轻松可扩展性进行了优化。AWS 环境以及 Vertica 兼容的所有其他平台也支持企业模式。
Vertica 提供资源的自动配置和云中的快速部署。
AWS:
Vertica 在 AWS Marketplace 中提供 CloudFormation 模板 (CFT)。使用 CFT 可在几分钟内自动启动预配置的 AWS 资源,同时还会自动安装 Vertica 和管理控制台。
每个 CFT 都包含浏览器内的 Vertica 管理控制台。当您使用其中一种 CFT 安装 Vertica 时,管理控制台提供特定于 AWS 的群集管理选项,包括快速创建新群集和 Vertica 数据库的能力。
要在 AWS 上自动部署 Vertica,请参阅使用 CloudFormation 模板安装 Vertica。
部署后,您可以使用管理控制台创建 Eon 模式或企业模式群集和数据库:
另请参阅官方 AWS 文档。
Google Cloud Platform:
对于 GCP,Vertica 提供了可从 Google Cloud Marketplace 获得的自动安装程序。
输入一些参数,Google Cloud Launcher 将部署 Vertica 解决方案,包括您的新数据库。您可以创建一个最多包含 16 个节点的群集。该解决方案包括 Vertica 管理控制台作为您入门学习的主要 UI。
要在 GCP 上自动部署 Vertica,请参阅 Vertica 文档的 GCP 部分中的从 Google Cloud Marketplace 部署 Vertica。
另请参阅官方 Google Cloud Platform 文档。
Microsoft Azure:
Vertica 提供来自 Microsoft Azure Marketplace 的全自动群集部署。此解决方案将自动部署 Vertica 群集并创建初始数据库,让您在部署完成后登录 Vertica 管理控制台并开始使用它。
要在 Azure 上自动部署 Vertica,请参阅 Vertica 文档的 Microsoft Azure 部分中的从 Azure Marketplace 部署 Vertica。
另请参阅官方 Microsoft Azure 文档。
如果您有许多特定的配置要求,并且有一位在您选择的环境中熟练设置和维护云资源的管理员,则手动安装可能是您的正确选择。设置和维护可能需要较长的时间,并且需要较多的专业知识,但您将对群集的配置方式拥有较多控制权。
在云资源上手动安装 Vertica 的过程与使用本地硬件非常相似。
请参阅以下关于手动安装 Vertica 的指南: 手动安装
但是,在准备安装环境时考虑您的平台非常重要。Vertica 提供了特定于云的文档,用于详细了解每个平台如何与 Vertica 一起工作。在安装之前,请确保还参考您正在使用的平台的文档,以便正确设置云资源。
AWS:
要在 AWS 上手动安装 Vertica,请参阅 Vertica 文档的 AWS 部分: 用于 Amazon Web Services 的 Vertica
有关如何设置 AWS 资源的详细信息,请参考官方 AWS 文档。
Google Cloud Platform:
要在 GCP 上手动安装 Vertica,请参阅 Vertica 文档的 GCP 部分: 用于 Google Cloud Platform 的 vertica
有关设置 GCP 资源的更多详细信息,请参考官方 Google Cloud Platform 文档。
Microsoft Azure:
要在 Azure 上手动安装 Vertica,请参阅 Vertica 文档的 Azure 部分: Microsoft Azure 上的 Vertica
有关设置 Azure 资源的更多详细信息,请参考官方 Microsoft Azure 文档。
此部分讨论 Vertica 的手动安装过程。您可以手动安装 Vertica 内部部署数据库,也可以在以 Eon 模式或企业模式运行的云环境中安装 Vertica。
在安装内部部署数据库时,通常执行手动安装。大多数云环境都提供了 Vertica 自动安装方式。有关在所选云平台上配置群集的其他资源,请参阅在云中安装。
本页提供安装任务概述。请仔细阅读并遵守本主题所有章节的说明。
Vertica 仅支持每个群集一个运行数据库。
Vertica 支持在一个、两个或多个节点上安装。不论群集中有多少个节点,安装 Vertica 的步骤都相同。
所有 Vertica 配置都需要满足在安装 Vertica 之前中列出的先决条件。
任何时候,一个主机上都只能运行一个 Vertica 实例。
要运行
install_vertica
脚本以及添加、更新或删除节点,必须以 root、sudo 或具有所有权限的用户身份登录。所有安装都必须运行该脚本,包括升级安装和单节点安装。
在主机上安装 Vertica 有四种主要方案,它们是:
单节点安装,其中的 Vertica 作为一个 localhost 进程安装在单个主机上。这种安装形式以后无法扩展为更多主机,通常用于开发或评估用途。
安装到物理主机硬件群集。这是在测试或生产环境中部署 Vertica 时最常用的方案。
在 Amazon Web Services (AWS) 中安装。您可以通过在 MC 中使用 CloudFormation 模板和分步向导创建 Vertica 群集来进行安装,或者在创建实例时使用安装了 Vertica 的 Amazon Machine Image (AMI) 手动部署。Eon 模式数据库当前仅在 AWS 资源上受支持。有关 AWS 特定的安装过程,请参阅为 Vertica 数据库群集部署 AWS 实例。
安装到本地虚拟主机硬件群集。与物理主机上的安装过程相似,但网络配置有所不同。
在安装 Vertica 之前介绍了如何构建硬件平台以及如何为 Vertica 安装准备 Linux。
这些初期步骤可划分为两个类别:
配置硬件和安装 Linux
配置网络
完成在安装 Vertica 之前章节中的步骤后,即已做好运行安装脚本的准备。
安装 Vertica 介绍如何:
在安装 Vertica 之后介绍了运行安装脚本后应执行的后续步骤。根据需要可以跳过其中一些步骤:
安装许可证密钥。
验证已正确设置内核和用户参数。
在非群集主机上安装 vsql 客户端应用程序。
解决 spread 配置期间的任何 SLES 11.3 问题。
在线使用 Vertica 文档,或下载并安装 Vertica 文档。在 https://docs.vertica.com/latest 查找要下载的在线文档和文档包。
安装客户端驱动程序。
使用 Vertica 软件包进行扩展安装。
本主题介绍安装程序为了使 Vertica 能够运行而创建和配置的 Linux 帐户。在安装 Vertica 时,安装脚本会选择性地创建以下 Linux 用户和组:
dbadmin—管理用户
verticadba—DBA 用户组
dbadmin 和 verticadba 为默认名称。如果想要更改这些 Linux 帐户的名称,可使用安装脚本执行此操作。有关详细信息,请参阅使用安装脚本安装 Vertica。
有关详细信息,请参阅以下主题:
Linux dbadmin 用户拥有磁盘上的数据库编录和数据存储的所有权。在运行安装脚本时,Vertica 会在数据库群集中的每个节点上创建此用户。它还会将 dbadmin 添加到 Linux dbadmin 和 verticadba 组,并按以下方法配置该帐户:
配置并授权 dbadmin 在所有群集节点之间使用无密码 SSH。必须安装并配置 SSH 才能允许无密码登录。请参阅启用安全 shell (SSH) 登录。
将 dbadmin 用户的 BASH shell 设置为运行脚本(例如 install_vertica 和
管理工具)所需的 /bin/bash
。
提供以下目录的读取-写入-执行权限:
/opt/vertica/*
/home/dbadmin
—数据库数据和编录文件的默认目录(可通过安装脚本进行配置)
安装过程完成后,启动或运行 Vertica 不需要 root 或 sudo 权限。
Dbadmin 用户可登录并执行 Vertica 任务,例如创建数据库、安装/更改许可证密钥或安装驱动程序。如果 dbadmin 想要将数据库目录设为不同于默认值的位置,则 root 用户(或具有 sudo 权限的用户)必须创建请求的目录,并将所有权更改到 dbadmin 用户。
Vertica 可防止 dbadmin 用户(或在安装过程中指定的不同于 dbadmin 的用户名)以外的其他用户执行管理操作。只有此用户可以运行 Administration Tools。
在安装 Vertica 之前,请完成本部分中的所有任务。完成本部分的任务后,继续安装 Vertica。
必须验证服务器是否满足支持的平台中所述的平台要求。“支持的平台”主题详细说明了以下组件受支持的版本:
服务器操作系统和管理控制台 (Management Console) (MC)
支持的 MC 浏览器
支持的文件系统
为硬件安装最新的供应商驱动程序。
所有内部驱动器均连接到单个 RAID 控制器。
RAID 阵列应构建一个硬件 RAID 设备作为相邻 /data 卷。
在执行群集安装之前,请在所有目标主机上安装 Perl 5。可从 www.perl.org 下载 Perl。
Vertica 提供了多个验证实用程序用于验证准主机的性能。这些实用程序在安装 Vertica RPM 时安装,但可以在运行 install_vertica
脚本之前使用它们。有关运行这些实用程序以及验证主机是否满足建议要求的更多详细信息,请参阅验证脚本。
Vertica Analytics Platform 基于大规模并行处理 (MPP) 无共享架构,其中的查询处理工作负载被划分到 Vertica 数据库的所有节点。Micro Focus 强烈建议为 Vertica 群集使用同类硬件配置;也就是说,群集的每个节点都应具有类似的 CPU、时钟速度、核心数、内存和操作系统版本。
请注意,Micro Focus 尚未在使用不同硬件规格的节点构成的群集上测试 Vertica。尽管 Vertica 数据库预期可在混合硬件配置中正常工作,但性能会受制于群集中最慢节点的性能。
Vertica 在时钟频率较高的处理器上表现最佳。如果可能,请选择内核较少、速度较快的处理器,而不是内核较多、速度较慢的处理器。
不管是内部还是客户执行的测试,都表明了处理器架构之间的性能差异,即使考虑到内核数量和时钟频率的差异也是如此。如果可能,请通过安装 Vertica 并使用您的数据和工作负载运行实验来比较平台。考虑在通过不同处理器架构上运行虚拟机的云平台上进行测试,即使您打算部署 Vertica 内部部署数据库。
调整 Vertica 节点和群集大小的建议(以前的《Vertica 硬件计划指南》)中提供了详细的硬件建议。
必须验证服务器是否符合 Vertica 服务器和管理控制台中所述的平台要求。
Vertica 在安装期间和一些管理任务期间使用 sudo 命令。确保可在所有主机上将 sudo 用于以下命令:
# which sudo
/usr/bin/sudo
如果未安装 sudo,请按照如何在 Red Hat Enterprise Linux 上启用 sudo 中的说明在所有主机上执行操作。
当使用 sudo 安装 Vertica 时,执行安装的用户必须具有群集中所有节点的权限。
为 sudo 配置单独命令的权限可能是一个非常繁琐且容易出错的过程;因此,Vertica 文档并未包含 sudoers 文件中可能包含的每条 sudo 命令。相反,Vertica 建议临时提升 sudo 用户权限,使其在整个安装过程中拥有所有权限。
要允许 root sudo 以任意计算机上的任意用户身份访问所有命令,请使用 visudo 作为 root 用户来编辑 /etc/sudoers
文件并添加以下行:
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
完成安装后,移除 sudo 权限或将 sudo 权限重置为预安装设置。
Vertica 中包含的所有 shell 脚本都必须在 BASH shell 下运行。如果在 Debian 系统中,则默认 shell 可能为 DASH。不支持 DASH。使用 chsh
命令,将 root 和 dbadmin 用户的 shell 更改为 BASH。
例如:
# getent passwd | grep root
root:x:0:0:root:/root:/bin/dash
# chsh
Changing shell for root.
New shell [/bin/dash]: /bin/bash
Shell changed.
然后,以 root 用户身份将 /bin/sh
的符号链接从 /bin/dash
更改为 /bin/bash
:
# rm /bin/sh
# ln -s /bin/bash /bin/sh
注销并重新登录,以使更改生效。
这组步骤涉及网络配置。这些步骤因安装方案而异。单节点安装只需要很少的网络配置,因为单个 Vertica 服务器实例不需要与群集中的其他节点通信。对于群集和云安装方案,必须做出多项配置决策。
Vertica 支持具有多个网络接口的服务器配置。例如,可能需要使用一个端口作为用于群集主机间(通过 install_vertica
的 --hosts
选项提供的主机)的内部通信专用网络接口,并将另一个单独的接口用于客户端连接。
除一种特殊的例外情况以外,单节点的网络配置与多节点群集的网络配置完全相同。如果在将保留永久单节点配置(例如用于开发或概念证明)的单个主机上安装 Vertica,则可以将 localhost
或环回 IP(通常为 127.0.0.1)用作 --hosts
的值来安装 Vertica。如果以后可能需要在配置中添加节点,则不要在节点定义中使用主机名 localhost
。
如果将主机与多个网络接口配合使用,则配置 Vertica 使用分配给连接到其他群集主机的 NIC 的地址。
使用专门的千兆位交换机。否则,性能可能受到严重影响。
不要将 DHCP 动态分配的 IP 地址用于专用网络。仅使用静态地址或永久租用的 DHCP 地址。
Vertica 支持使用 IPv4 或 IPv6 IP 地址来标识数据库群集中的主机。Vertica 使用单个地址来标识数据库群集中的主机。用于标识群集中主机的所有 IP 地址都必须使用同一个 IP 系列。
对于数据库群集中的主机,既可以分配 IPv4 网络地址又可以分配 IPv6 网络地址。在这些地址中,只有一个用于标识群集中的节点。您可以使用其他地址来处理客户端连接或与其他系统的连接。
在安装时通知 Vertica 使用哪个地址系列。默认情况下,Vertica 针对主机使用 IPv4 地址。如果您希望数据库中的节点使用 IPv6 地址,请向您传递到 install_vertica
脚本的实参添加 --ipv6
选项。
大多数情况下,您选择的地址系列不会影响数据库的功能。但是,也有一些例外:
如果要使用管理控制台来管理数据库,请使用 IPv4 地址标识群集中的节点。当前,MC 不支持使用 IPv6 地址的数据库。
如果您针对群集选择 IPv6 地址,它会自动使用点对点网络模式。
当前,AWS 是 Vertica 在其上支持 IPv6 寻址的唯一云平台。要在 AWS 上使用 IPv6,必须使用 IP 地址(而不是主机名)标识群集主机。AWS DNS 不支持将主机名解析为 IPv6。
如果为数据库群集中的主机仅分配 IPv6 地址,则与不支持 IPv6 的其他系统交互时,可能会出现问题。
您传递给安装脚本的信息中包含主机列表,安装脚本将使用这些主机构成 Vertica 群集。如果您在此列表中使用主机名而不是 IP 地址,请确保主机名解析为您要针对群集使用的 IP 地址系列。例如,如果您希望群集使用 IPv6 地址,请确保 DNS 或 /etc/hosts
文件将主机名解析为 IPv6 地址。
可以将 DNS 配置为同时返回主机名的 IPv4 和 IPv6 地址。在这种情况下,除非您提供 --ipv6
实参,否则安装程序使用 IPv4 地址。如果使用 /etc/hosts
进行主机名解析(这是最佳实践),则主机名无法同时解析为 IPv4 和 IPv6 地址。
如果查询工作负载大量使用网络,则可以将 --control-network
参数与
install_vertica
脚本(请参阅使用安装脚本安装 Vertica)配合使用,以便在不同于其他 Vertica 数据通信的子网上配置 spread 通信。
--control-network
参数可接受 default
值或广播网络 IP 地址(例如 192.168.10.255
)。
验证 root 用户可使用安全 Shell (SSH) 登录 (ssh) 到群集中包含的所有主机。SSH(SSH 客户端)是用于登录远程计算机以及在远程计算机上运行命令的程序。
如果尚未在所有主机上安装 SSH,请在安装 Vertica 之前,以 root 用户身份登录每个主机并安装 SSH。可以从 OpenSSH 下载免费版本的 SSH 连接工具。
请确保 /dev/pts
已挂载。在缺少挂载点 /dev/pts
的主机上安装 Vertica 可能导致在创建数据库时发生以下错误:
TIMEOUT ERROR: Could not login with SSH. Here is what SSH said:Last login: Sat Dec 15 18:05:35 2007 from v_vmart_node0001
必须授权 dbadmin 用户使用无密码 ssh。在典型安装中,不需要做任何更改;但如果将系统设为不允许无密码登录,则需要为 dbadmin 用户启用此功能。请参阅启用安全 shell (SSH) 登录。
验证 Vertica 所需的端口是否未使用,方法是以 root 用户身份运行以下命令并将其与所需端口进行比较,如下所示:
netstat -atupn
如果正在使用的是 Red Hat 7/CentOS 7 系统,则使用以下命令:
ss -atupn
Vertica 要求本地网络中的多个端口处于开放状态。Vertica 不建议在节点之间放置防火墙(所有节点都应该在防火墙的后面),但如果必须在节点之间使用防火墙,请确保以下端口可用:
本主题简要概述了 Vertica 所需的操作系统设置。每个项目都会提供链接,以了解关于设置的更多详细信息以及有关进行配置更改的详细步骤。安装程序会对所有这些设置进行测试,并在当前配置不符合 Vertica 要求时提供提示、警告和故障。
这些常规操作系统设置如果不符合 Vertica 要求,将由安装程序自动配置。通过将 --no-system-configuration
参数用于 install_vertica
脚本,可以阻止安装程序自动进行这些配置更改。
以下常规操作系统设置必须手动完成。
以下任务与 Vertica 所需的系统用户的配置有关。
本节中的主题将详细说明在安装操作系统时必须配置的系统设置。完成操作系统的安装后,将无法轻易更改这些设置。
Vertica 安装程序会检查安装的操作系统类型。如果操作系统不符合支持的操作系统之一(请参阅 Vertica 服务器和管理控制台),或无法确定操作系统,那么安装程序将会停止运行。
如果安装程序检测到不支持的操作系统,将会生成以下问题标识符之一:
[S0320] - Fedora 操作系统不受支持。
[S0321] - Red Hat/CentOS 的版本不受支持。
[S0322] - Ubuntu/Debian 的版本不受支持。
[S0323] - 无法确定操作系统。由于与支持的操作系统列表不匹配,因此未知操作系统不受支持。
[S0324] - Red Hat 的版本不受支持。
根据部署需求选择存储格式类型。Vertica 建议使用以下存储格式类型(如适用):
ext3
ext4
NFS(用于备份)
XFS
在 Eon 模式下运行时用于公共存储和相关备份任务的 Amazon S3 标准
备份和临时目录位置的存储格式类型必须支持 fcntl lockf (POSIX) 文件锁定。
不论系统中安装的 RAM 量是多少,Vertica 都需要至少 2 GB 的交换分区。安装程序会以标识符 S0180 报告此问题。
对于典型安装,不论安装的 RAM 量是多少,Vertica 都建议在对系统进行分区时包含一个用于交换的 2GB 主分区。可以接受更大的交换空间,但不是必需的。
如果没有至少 2 GB 交换分区,则在运行 Vertica 时可能会遇到性能问题。
通常在安装 Linux 时定义交换分区。有关配置交换分区的详细信息,请参见相应平台的文档。
Vertica 建议的磁盘块大小为 4096 字节,这是 ext4 和 XFS 文件系统的默认值。
在格式化文件系统时设置磁盘块大小。如果更改块大小,则需要重新格式化磁盘。
有关详细信息,请参阅推荐的存储格式类型。
Vertica 要求您的主机上的每个逻辑处理器至少有 1GB 的 RAM。如果您的主机不符合此要求,安装程序会以标识符 S0190 报告此问题。
由于性能的原因,通常需要高于最小值的 RAM。有关调整硬件大小的详细信息,请参阅 Vertica 知识库硬件文档。
除了单个主机的 RAM 要求外,如果针对群集中的所有主机报告的 RAM 数不同,安装程序还会给出提示。如果一个或多个节点的 RAM 少于数据库中的其他节点,则确保所有主机具有相同数量的 RAM 有助于防止出现性能问题。
Vertica 要求节点之间的多个端口保持开放状态。可在基于 Redhat/CentOS 和 Ubuntu/Debian 的系统上使用防火墙(IP 表)。请注意,在 SuSE 系统上不支持使用防火墙,SuSE 系统必须禁用防火墙。安装程序会以标识符 N0010(对于使用 IP 表的系统)和 N011(对于 SuSE 系统)报告在 IP 表配置中发现的问题。
安装程序会检查 IP 表配置,如果存在任何已配置的规则或链,将会发出警告。安装程序不会检测该配置是否可能与 Vertica 存在冲突。您有责任确认防火墙允许 Vertica 流量,如确保端口可用中所述。
可以修改防火墙以允许 Vertica 网络流量,或者如果网络安全可靠,也可以禁用防火墙。请注意,在 SuSE 上运行的 Vertica 系统不支持防火墙。
/opt/vertica/sbin/install_vertica \--failure-threshold FAIL <other install options...>
。
有关如何配置 iptables 以及允许特定端口成为公开端口的详细信息,请参见面向您的平台的平台特定文档:
要禁用 iptable,请以 root 或 sudo 用户身份运行以下命令:
# service iptables save
# service iptables stop
# chkconfig iptables off
如果正在使用 ipv6 版本的 iptable,要禁用 iptable,请以 root 或 sudo 用户身份运行以下命令:
# service ip6tables save
# service ip6tables stop
# chkconfig ip6tables off
要禁用系统防火墙,请以 root 或 sudo 用户身份运行以下命令:
# systemctl mask firewalld
# systemctl disable firewalld
# systemctl stop firewalld
有关如何配置 iptables 以及允许特定端口成为公开端口的详细信息,请参见面向您的平台的平台特定文档:
要在 Debian 上禁用 iptable,请以 root 或 sudo 用户身份运行以下命令:
/etc/init.d/iptables stop
update-rc.d -f iptables remove
要在 Ubuntu 上禁用 iptable,请运行以下命令:
sudo ufw disable
在 SUSE 系统上必须禁用防火墙。要在 SuSE 系统上禁用防火墙,请运行以下命令:
/sbin/SuSEfirewall2 off
install_vertica 脚本将会检查所需的端口是否处于开放状态并且可供 Vertica 使用。安装程序会以标识符 N0020
报告任何问题。
下表列出了 Vertica 所需的端口。
这些常规操作系统设置如果不符合 Vertica 要求,将由安装程序自动配置。通过将 --no-system-configuration
参数用于 install_vertica
脚本,可以阻止安装程序自动进行这些配置更改。
在安装过程中,Vertica 会尝试自动更改各种操作系统级别的设置。安装程序无法更改系统中超出安装程序要求的阈值的值。通过将 --no-system-configuration
参数用于 install_vertica
脚本,可以阻止安装程序自动进行这些配置更改。
要永久编辑某些设置并防止其在重新引导后恢复原来的设置,请使用 sysctl。
与 Vertica 的安装相关的 sysctl 设置包括:
以 root 用户身份打开 /etc/sysctl.conf 文件:
# vi /etc/sysctl.conf
输入参数和值:
parameter = value
例如,要设置 fs.file-max
参数和值以满足 Vertica 要求,请输入:
fs.file-max = 65536
保存更改并关闭 /etc/sysctl.conf 文件。
以 root 用户身份重新加载配置文件:
# sysctl -p
可通过打开 /etc/sysctl.conf 文件来查看安装程序是否已添加某项设置:
# vi /etc/sysctl.conf
如果安装程序已添加某项设置,则会显示以下行:
# The following 1 line added by Vertica tools. 2015-02-23 13:20:29
parameter = value
Vertica 系统用户(默认为 dbadmin)必须能够提高和降低 Vertica 进程的优先级。为此,/etc/security/limits.conf
文件中的 Nice 选项必须包含 dbadmin 用户的条目。安装程序将以标识符S0010 报告此问题。
如果默认值不符合系统要求,安装程序会自动配置正确的设置。如果设置此值时出现问题,或者已在安装程序中使用 ‑‑no‑system‑configuration
实参且当前设置不正确,安装程序将会报告此问题。
要为 dbadmin 用户设置 Nice 限制配置,请编辑 /etc/security/limits.conf
并添加以下行。将 dbadmin 替换为系统用户的名称。
dbadmin - nice 0
本主题详细说明如何更新 min_free_kbytes 设置,使其在 Vertica 支持的范围以内。安装程序将以标识符S0050(如果设置的值过低)或 S0051(如果设置的值过高)报告此问题。
vm.min_free_kbytes 设置将配置页面回收阈值。增大此数字时,系统会更早开始回收内存,减小此数字时,系统会更晚开始回收内存。min_free_kbytes 的默认值是在启动时基于系统中可用的物理 RAM 页数进行计算。
该设置必须是以下选项中的最大值:
系统配置的默认值
4096
运行以下命令的结果:
$ memtot=`grep MemTotal /proc/meminfo | awk '{printf "%.0f",$2}'`
$ echo "scale=0;sqrt ($memtot*16)" | bc
如果默认值不符合系统要求,安装程序会自动配置正确的设置。如果设置此值时出现问题,或者已在安装程序中使用 ‑‑no‑system‑configuration
实参且当前设置不正确,安装程序将会报告此问题。
要手动设置 min_free_kbytes:
使用以下命令确定当前/默认设置:
$ sysctl vm.min_free_kbytes
如果前一条命令的结果是 No such file or directory
,或默认值小于 4096,则运行以下命令确定正确的值:
$ memtot=`grep MemTotal /proc/meminfo | awk '{printf "%.0f",$2}'`
$ echo "scale=0;sqrt ($memtot*16)" | bc
使用上一条命令输出中的值,在 /etc/sysctl.conf
中编辑或添加 vm.min_free_kbytes
的当前值。
# The min_free_kbytes setting
vm.min_free_kbytes=16132
运行 sysctl -p
立即在 sysctl.conf
中应用更改。
本主题详细说明如何更改用户可打开的文件数上限设置,使其满足 Vertica 要求。安装程序会以标识符 S0060 报告此问题。
如果默认值不符合系统要求,安装程序会自动配置正确的设置。如果设置此值时出现问题,或者已在安装程序中使用 ‑‑no‑system‑configuration
实参且当前设置不正确,安装程序将会报告此问题。
Vertica 要求在打开文件时不限制 dbadmin 用户。每个用户的打开文件限制计算如下:
用户可打开的文件数上限 = { ≥ 65536 | ≤ RAM-MBs }
作为 dbadmin 用户,您可以通过运行 ulimit -n
来确定打开文件的限制。例如:
$ ulimit -n
65536
要手动设置该限制,请编辑 /etc/security/limits.conf
,并针对配置为数据库管理员(默认为 dbadmin
)的用户编辑/添加 nofile
设置。例如:
dbadmin - nofile 65536
该设置必须不小于 65536 MB,但不大于 fs.nr_open
的系统值。例如,Red Hat Enterprise Linux 9 上的 fs.nr_open
值的默认值为 1048576 MB。
本主题详细说明如何修改系统中可打开的文件数限制,使其符合 Vertica 要求。安装程序将以标识符S0120。
Vertica 会打开许多文件。一些平台对于可打开的文件数具有全局限制。必须将可打开的文件数限制设为足够大的值,以免干扰数据库操作。
建议的值至少为以 MB 为单位的内存量,但不小于 65536。
如果默认值不符合系统要求,安装程序会自动配置正确的设置。如果设置此值时出现问题,或者已在安装程序中使用 ‑‑no‑system‑configuration
实参且当前设置不正确,安装程序将会报告此问题。
要手动设置可打开的文件数限制:
运行 /sbin/sysctl fs.file-max
以确定当前限制。
如果该限制不是 65536 或以 MB 为单位的系统内存量(两者中较大者),则在
fs.file-max=max number of files
中编辑或添加 /etc/sysctl.conf
。
# Controls the maximum number of open files
fs.file-max=65536
运行 sysctl -p
立即在 sysctl.conf
中应用更改。
本主题详细说明如何启用 Vertica 所需的“su”pam_limits.so 模块。安装程序将以标识符S0070 报告此设置问题。
在一些系统上,文件 /etc/pam.d/su
中没有设置名为 pam_limits.so
的 Pam 模块。如果没有设置该模块,它会禁止将限制(例如打开文件描述符)传递到任何使用 su -
开头的命令。
特别是,Vertica init 脚本将无法启动 Vertica,因为它会使用 su -
命令调用管理工具来启动数据库。此问题最早在 Debian 系统中发现,但在其他 Linux 发行版中可能会导致配置缺失。有关更多详细信息,请参见 pam_limits 手册页。
如果默认值不符合系统要求,安装程序会自动配置正确的设置。如果设置此值时出现问题,或者已在安装程序中使用 ‑‑no‑system‑configuration
实参且当前设置不正确,安装程序将会报告此问题。
要手动配置此设置,请将以下行附加到 /etc/pam.d/su
文件:
session required pam_limits.so
有关更多详细信息,请参阅 pam_limits 手册页:man pam_limits
。
本主题说明如何将 pid_max
更改为支持的值。pid_max
的值应该是
pid_max = num-user-proc + 2**15 = num-user-proc + 32768
其中,num-user-proc 是以兆字节为单位的内存大小。
pid_max
的最小值是 524288。
如果您的 pid_max
值太低,安装程序会报告此问题并指示最小值。
如果默认值不符合系统要求,安装程序会自动配置正确的设置。如果设置此值时出现问题,或者已在安装程序中使用 ‑‑no‑system‑configuration
实参且当前设置不正确,安装程序将会报告此问题。
要更改 pid_max
值:
# sysctl -w kernel.pid_max=524288
本主题详细说明如何修改 dbadmin 用户的 Linux 地址空间限制,使其符合 Vertica 要求。地址空间设置可控制每个用户的最大线程数和进程数。如果此设置不符合要求,则安装程序会以标识符报告此问题。S0090。
如果默认值不符合系统要求,安装程序会自动配置正确的设置。如果设置此值时出现问题,或者已在安装程序中使用 ‑‑no‑system‑configuration
实参且当前设置不正确,安装程序将会报告此问题。
不得通过用户限制来减小可供 dbadmin 用户使用的地址空间,而必须将其设为无限制 (unlimited)。
要手动设置地址空间限制:
以 dbadmin 用户身份运行 ulimit -v
以确定当前限制。
如果该限制不是无限制 (unlimited),则在 /etc/security/limits.conf
中添加以下行。将 dbadmin 替换为数据库管理员用户
dbadmin - as unlimited
本主题详细说明如何修改系统中的文件大小限制,以使其符合 Vertica 要求。安装程序将以标识符S0100 报告此问题。
如果默认值不符合系统要求,安装程序会自动配置正确的设置。如果设置此值时出现问题,或者已在安装程序中使用 ‑‑no‑system‑configuration
实参且当前设置不正确,安装程序将会报告此问题。
不得通过用户限制来减小 dbadmin 用户的文件大小限制,而必须将其设为无限制 (unlimited)。
要手动设置文件大小限制:
以 dbadmin 用户身份运行 ulimit -f
以确定当前限制。
如果该限制不是无限制 (unlimited),则在 /etc/security/limits.conf
中编辑/添加以下行。将 dbadmin 替换为数据库管理员用户。
dbadmin - fsize unlimited
本主题详细说明如何更改用户进程限制,使其符合 Vertica 要求。安装程序会以标识符:S0110 报告不支持的调度程序问题。
如果默认值不符合系统要求,安装程序会自动配置正确的设置。如果设置此值时出现问题,或者已在安装程序中使用 ‑‑no‑system‑configuration
实参且当前设置不正确,安装程序将会报告此问题。
用户进程限制必须足够高,以允许 Vertica 打开大量线程。建议的限制是以 MB 为单位的 RAM 量,并且必须不小于 1024。
要手动设置用户进程限制:
以 dbadmin 用户身份运行 ulimit -u
以确定当前限制。
如果该限制不是服务器上以 MB 为单位的内存量,则在 /etc/security/limits.conf
中编辑/添加以下行。将 4096 替换为服务器上以 MB 为单位的系统内存量。
dbadmin - nproc 4096
本主题详细说明如何修改系统中的进程可以拥有的内存映射数量限制,使其符合 Vertica 要求。安装程序将以标识符S0130。
如果默认值不符合系统要求,安装程序会自动配置正确的设置。如果设置此值时出现问题,或者已在安装程序中使用 ‑‑no‑system‑configuration
实参且当前设置不正确,安装程序将会报告此问题。
Vertica 在执行处理时会使用大量内存,并且可能达到每个进程的内存映射默认限制。
建议的值至少为系统中以 KB 为单位的内存量 / 16,但不小于 65536。
要手动设置内存映射限制:
运行 /sbin/sysctl vm.max_map_count
以确定当前限制。
如果该限制不是 65536 或以 KB 为单位的系统内存量 / 16(两者中较大者),则在 /etc/sysctl.conf
中编辑或添加以下行。将 65536 替换为系统值。
# The following 1 line added by Vertica tools. 2014-03-07 13:20:31
vm.max_map_count=65536
运行 sysctl -p
立即在 sysctl.conf
中应用更改。
以下常规操作系统设置必须手动完成。
Vertica 要求手动配置多个常规操作系统设置。您应该在 /etc/rc.local
脚本中配置其中一些设置,以防止它们在重新引导时恢复原有设置。该脚本包含系统每次启动时运行的脚本和命令。
/etc/init.d/after.local
文件而不是 /etc/rc.local
。
Vertica 使用 /etc/rc.local
中的设置来设置以下功能:
以 root 用户身份打开 /etc/rc.local
:
# vi /etc/rc.local
输入脚本或命令。例如,要根据 Vertica 要求配置透明大页,请输入以下内容:
echo never > /sys/kernel/mm/redhat_transparent_hugepage/enabled
/etc/rc.local
中的最后一行必须为 exit 0
。向 /etc/rc.local
添加的所有内容都必须在此行之前。
保存更改,然后关闭 /etc/rc.local
。
如果使用 Red Hat 7.0 或 CentOS 7.0 或更高版本,请以 root 或 sudo 身份运行以下命令:
$ chmod +x /etc/rc.d/rc.local
在重新引导时,启动过程中将会运行该命令。如果想要命令立即生效,也可以 root 用户身份手动运行该命令。
如果使用 Red Hat 7.0 或 CentOS 7.0 或更高版本,请确保优化系统服务在 Vertica 重新引导时不会启动。关闭优化会阻止对操作系统的监控以及基于此监控对操作系统进行的任何优化。优化还可以静默启用 THP,这可能会导致其他方面(例如预读)出现问题。
以 sudo 或 root 用户身份运行以下命令:
$ chkconfig tuned off
在 SuSE 12 上,安装程序检查 Vertica 可在以下各项下运行的控制组 (cgroup) 的 cgroup 设置:
verticad
vertica_agent
sshd
安装程序验证 pid.max
资源对于由 Vertica 创建的所有线程是否足够大。我们检查以下各项的内容:
/sys/fs/cgroup/pids/system.slice/verticad.service/pids.max
/sys/fs/cgroup/pids/system.slice/vertica_agent.service/pids.max
/sys/fs/cgroup/pids/system.slice/sshd.service/pids.max
如果这些文件存在并且它们未能包含值 max
,则安装停止并且安装程序返回失败消息(代码 S0340)。
如果这些文件不存在,会在 systemd
运行 verticad
和 vertica_agent
启动脚本时自动创建这些文件。但是,这些文件的默认值是由该站点的 cgroup 配置过程管理的。Vertica 不会更改默认值。
在安装 Vertica 之前,请按如下方式配置您的系统:
# Create the following directories:
sudo mkdir /sys/fs/cgroup/pids/system.slice/verticad.service/
sudo mkdir /sys/fs/cgroup/pids/system.slice/vertica_agent.service/
# sshd service dir should already exist, so don't need to create it
# Set pids.max values:
sudo sh -c 'echo "max" > /sys/fs/cgroup/pids/system.slice/verticad.service/pids.max'
sudo sh -c 'echo "max" > /sys/fs/cgroup/pids/system.slice/vertica_agent.service/pids.max'
sudo sh -c 'echo "max" > /sys/fs/cgroup/pids/system.slice/sshd.service/pids.max'
安装后,您可以为 Vertica 数据库的后续重新启动配置控制组。您可以编辑配置文件 /etc/init.d/after.local
并添加前面显示的命令来完成此操作。
after.local
是以 root 用户身份执行的,所以可以省略 sudo
命令。
Admintools 使用 Linux cron
包来计划可定期滚动保存数据库日志的作业。如果不安装此包,永远不会滚动保存数据库日志。如果缺少滚动保存功能,可能会导致大量消耗日志存储空间。在忙碌的群集中,Vertica 每天都可能产生数百 GB 的日志。
cron
默认安装在大多数 Linux 发行版上,但在某些 SUSE 12 系统上可能不存在。
要安装 cron
,请运行以下命令:
$ sudo zypper install cron
本主题详细说明如何将磁盘预读更改为支持的值。Vertica 要求将磁盘预读设置为不小于 2048 的值。安装程序将以标识符S0020 报告不支持的调度程序问题。
这些命令必须使用 root 权限执行,并且假定 blockdev 程序位于 /sbin
中。
Blockdev 程序在整体设备而不是在单独的分区上运行。在同一设备上不能将预读值设为不同的设置。如果您对一个分区运行 blockdev(例如:/dev/sda1),那么该设置仍将应用于整个 /dev/sda 设备。例如,运行 /sbin/blockdev \--setra 2048 /dev/sda1
还会使 /dev/sda2 到 /dev/sdaN 均使用预读值 2048。
对于 Vertica 系统中的每个驱动器,Vertica 建议在大多数部署中将预读值设为不小于 2048。该命令会立即更改指定磁盘的预读值。第二行将该命令添加到 /etc/rc.local
,使系统在每次启动时应用该设置。请注意,一些部署可能要求更高的值,在支持人员的指导下,可以将该设置设为高达 8192。
/etc/rc.local
的系统,请使用在达到目标运行级别后运行的等效启动脚本。例如,SUSE 使用 /etc/init.d/after.local
。以下示例将驱动器 sda 的预读值设为 2048。
$ /sbin/blockdev --setra 2048 /dev/sda
$ echo '/sbin/blockdev --setra 2048 /dev/sda' >> /etc/rc.local
如果您使用的是 Red Hat 7.0 或 CentOS 7.0 或更高版本,请以 root 或 sudo 身份运行以下命令:
$ chmod +x /etc/rc.d/rc.local
对于 Vertica 系统中的每个驱动器,请将预读值设为 2048。在 shell 中运行一次该命令,然后将其添加到 /etc/rc.local
,使系统在每次启动时应用该设置。请注意,在一些 Ubuntu 系统中,rc.local 中的最后一行必须为“exit 0
”。因此,您必须手动将以下行添加到 etc/rc.local
中的最后一行 exit 0
之前。
/etc/rc.local
的系统,请使用在达到目标运行级别后运行的等效启动脚本。例如,SuSE 使用 /etc/init.d/after.local
。/sbin/blockdev --setra 2048 /dev/sda
本主题详细说明如何将 I/O 计划更改为支持的调度程序。Vertica 要求将“I/O 计划 (I/O Scheduling)”设置为
deadline
或
noop
。安装程序会检查系统正在使用什么调度程序,从而以标识符 S0150 报告不支持的调度程序问题。如果安装程序未能检测到使用的调度程序类型(如果系统使用的是 RAID 阵列通常会这样),则会以标识符 S0151 报告此问题。
如果系统使用的不是 RAID 阵列,则完成以下步骤,以便将系统更改为支持的 I/O 调度程序。如果使用的是 RAID 阵列,则查询 RAID 供应商文档,了解能够为您的硬件提供最佳性能的调度程序。
Linux 内核可使用多种不同的 I/O 调度程序来设置磁盘输入和输出的优先级。大多数 Linux 发行版默认使用完全公平队列 (CFQ) 方案,该方案为输入和输出请求设定同等优先级。此调度程序在运行需要同等 I/O 资源访问权的多个任务的系统上非常高效。但在包含编录和数据目录的 Vertica 驱动器上使用时,可能会产生瓶颈,因为它为写入请求提供了与读取请求同等的优先级,而且其每进程 I/O 队列可能会使请求数量多于其他进程的进程处于不利地位。
对于包含编录和数据目录的驱动器,配置主机使用 Deadline 或 NOOP I/O 调度程序,而不是 CFQ 调度程序:
Deadline 调度程序为读取请求提供高于写入请求的优先级。它还对所有请求施加截止期限。在达到截止期限后,这类请求将获得高于其他所有请求的优先级。此计划方法有助于防止进程出现 I/O 访问短缺的情况。Deadline 调度程序最适合在物理介质驱动器(使用旋转盘片的磁盘)上使用,因为它会尝试将磁盘上相邻扇区的访问请求进行分组,从而缩短驱动器花在寻道上的时间。
NOOP 调度程序使用简单的 FIFO 方法,将所有输入和输出请求置于一个队列中。此调度程序最适合在固态硬盘 (SSD) 上使用。由于 SSD 没有物理读取磁头,因此在访问非相邻扇区时不存在性能损失。
对于包含编录和数据目录的 Vertica 驱动器,如果不使用以上调度程序中的一种,可能导致数据库性能下降。系统中的其他驱动器(例如包含交换空间、日志文件或 Linux 系统文件的驱动器)仍可以使用默认的 CFQ 调度程序(尽管对于 SSD 而言应该始终使用 NOOP 调度程序)。
有两种方法可以设置磁盘设备所用的调度程序:
将调度程序的名称写入 /sys
目录中的文件。
--或--
使用内核启动参数。
可以使用 /sys
目录下面的虚拟文件来查看和更改 Linux 用于单个驱动器的 I/O 请求的调度程序。控制数据块设备所用的调度程序的文件名称为:
/sys/block/deviceName/queue/scheduler
其中,deviceName 是磁盘设备的名称,例如 sda
或 cciss\\!c0d1
(Micro Focus RAID 阵列上的第一个磁盘)。通过查看此文件的内容可以显示调度程序的所有可能设置。当前选择的调度程序用方括号括起来:
# cat /sys/block/sda/queue/scheduler
noop deadline [cfq]
要更改调度程序,请将您希望设备使用的调度程序的名称写入到其调度程序文件中。必须具有 root 用户权限才能写入此文件。例如,要设置 sda 驱动器使用 Deadline 调度程序,请以 root 用户身份运行以下命令:
# echo deadline > /sys/block/sda/queue/scheduler
# cat /sys/block/sda/queue/scheduler
noop [deadline] cfq
更改调度程序会立即影响设备的 I/O 请求。Linux 内核开始对所有驱动器的输入和输出请求使用新的调度程序。
通过 /sys
目录对 I/O 调度程序做出的更改仅持续到系统重新引导为止,因此需要在启动脚本中添加用于更改 I/O 调度程序的命令(例如存储在 /etc/init.d
中的脚本,或通过 /etc/rc.local
中的命令)。此外还需要为系统中的想要更改其调度程序的每个驱动器使用单独的命令。
例如,使配置立即生效并将其添加到 rc.local,以便在后续重新引导时使用该配置。
/etc/rc.local
的系统,请使用在达到目标运行级别后运行的等效启动脚本。例如,SuSE 使用 /etc/init.d/after.local
。echo deadline > /sys/block/sda/queue/scheduler
echo 'echo deadline > /sys/block/sda/queue/scheduler' >> /etc/rc.local
exit 0
”。因此,您必须手动将以下行添加到 etc/rc.local
中的最后一行 exit 0
之前。
如果系统包含混合的固态硬盘和物理介质驱动器,或者包含大量未存储 Vertica 编录和数据目录的驱动器,则可以优先使用这种方法来设置 I/O 调度程序,而不是使用启动参数。
如果您使用的是 Red Hat 7.0 或 CentOS 7.0 或更高版本,请以 root 或 sudo 身份运行以下命令:
$ chmod +x /etc/rc.d/rc.local
使用 elevator
内核启动参数来更改系统中所有磁盘所用的默认调度程序。如果主机中的大多数或所有驱动器都是同一类型(物理介质或 SSD)并且将会包含编录或数据文件,则这是可使用的最佳方法。此外还可以使用启动参数来更改系统中大多数驱动器所需的调度程序默认设置,然后使用 /sys
文件来将单独的驱动器更改为其他 I/O 调度程序。elevator 启动参数的格式为:
elevator=schedulerName
其中,schedulerName 是 deadline
、noop
或 cfq
。可使用引导装载程序(在最近的 Linux 发行版中为 grub 或 grub2)设置驱动参数。有关如何添加内核启动参数的详细信息,请参见相应发行版的文档。
可以修改透明大页以满足 Vertica 配置要求:
对于 Red Hat 7/CentOS 7 和 Amazon Linux 2.0,必须启用透明大页。安装程序将以标识符S0312 报告不支持的调度程序问题。
对于 Red Hat 8/CentOS 8 和 SUSE 15.1,Vertica 按工作负载提供建议设置以优化系统性能。
对于其他所有系统,必须禁用透明大页或将其设为 madvise
。安装程序将以标识符S0310 报告不支持的调度程序问题。
Vertica 按工作负载建议透明大页设置以优化性能。下表列出了针对主要运行并发查询(例如短时间运行的仪表板查询)或顺序 SELECT 或 load (COPY) 查询的系统提出的建议:
有关按工作负载优化系统性能的其他设置,请参阅启用或禁用 defrag。
确定是否启用了透明大页。为此,请运行以下命令。
cat /sys/kernel/mm/transparent_hugepage/enabled
[always] madvise never
括号内返回的设置是当前设置。
对于不支持 /etc/rc.local
的系统,请使用在达到目标运行级别后运行的等效启动脚本。例如,SuSE 使用 /etc/init.d/after.local
。
可通过编辑 /etc/rc.local
并添加以下脚本来启用透明大页:
if test -f /sys/kernel/mm/transparent_hugepage/enabled; then
echo always > /sys/kernel/mm/transparent_hugepage/enabled
fi
必须重新引导系统以使设置生效,或以 root 用户的身份运行以下 echo 行以继续安装而不重新引导:
# echo always > /sys/kernel/mm/transparent_hugepage/enabled
如果您使用的是 Red Hat 7.0 或 CentOS 7.0 或更高版本,请以 root 或 sudo 身份运行以下命令:
$ chmod +x /etc/rc.d/rc.local
为确定是否已启用透明大页,请运行以下命令。
cat /sys/kernel/mm/transparent_hugepage/enabled
[always] madvise never
括号内返回的设置是当前设置。根据平台操作系统,可能不会显示 madvise
设置。
可采用两种方法之一禁用透明大页:
编辑引导装载程序(例如 /etc/grub.conf
)。通常情况下,可以将以下内容添加到内核行的末尾。但在编辑引导装载程序配置之前,请查阅系统文档。
transparent_hugepage=never
编辑 /etc/rc.local
(在支持 rc.local 的系统上)并添加以下脚本。
if test -f /sys/kernel/mm/transparent_hugepage/enabled; then
echo never > /sys/kernel/mm/transparent_hugepage/enabled
fi
对于不支持 /etc/rc.local
的系统,请使用在达到目标运行级别后运行的等效启动脚本。例如,SuSE 使用 /etc/init.d/after.local
。
不论选择哪种方法,都必须重新引导系统以使设置生效,或运行以下两个 echo 行以继续安装而不重新引导:
echo never > /sys/kernel/mm/transparent_hugepage/enabled
swappiness 内核参数定义内核将 RAM 内容复制到交换空间的数量和频率。Vertica 建议使用值 0。安装程序以标识符 S0112 报告任何 swappiness 问题。
您可以通过运行以下命令来检查 swappiness 值:
$ cat /proc/sys/vm/swappiness
要设置 swappiness 值,请在 /etc/sysctl.conf
中添加或更新如下行:
vm.swappiness = 1
这样还可以确保该值在重新启动后仍然存在。
如有必要,可通过在运行时以 root 身份登录并运行以下命令来更改 swappiness 值:
$ echo 1 > /proc/sys/vm/swappiness
如果在数据库运行时更改主机 NTP 设置,可能会导致数据损坏和性能问题。在更改 NPT 设置之前,请先停止数据库。如果无法停止数据库,请停止每台主机上的 Vertica 进程,然后更改 NTP 设置,一次一台主机。
有关详细信息,请参阅在主机上停止 Vertica。
必须在群集中的所有主机上运行网络时间协议 (NTP) 守护程序,才能使其时钟保持同步状态。Spread 守护程序依赖于所有节点将其时钟进行同步,以用于定时用途。如果节点没有运行 NTP,则安装可能失败,并且显示 spread 配置错误或其他错误。
ntp
,而 CentOS 和 Red Hat 称其为 ntpd
。如果以下命令产生错误,请尝试使用其他 NTP 守护程序引用名称。
为验证主机是否已配置为在启动时运行 NTP 守护程序,请输入以下命令:
$ chkconfig --list ntpd
Debian 和 Ubuntu 不支持 chkconfig
,但它们提供了可选的软件包。可使用命令 sudo apt-get install sysv-rc-conf
安装此软件包。为验证是否已使用 sysv-rc-conf
实用工具将主机配置为在启动时运行 NTP 守护程序,请输入以下命令:
$ sysv-rc-conf --list ntpd
chkconfig
命令可能生成类似于 ntpd: unknown service
的错误。如果出现此错误,请验证 Linux 发行版将 NTP 守护程序称为 ntpd
,而不是 ntp
。否则,在配置之前,需要安装 NTP 守护程序软件包。有关如何查找和安装软件包的说明,请查阅 Linux 文档。
如果已安装 NTP 守护程序,则应显示与以下类似的输出:
ntp 0:off 1:off 2:on 3:on 4:off 5:on 6:off
该输出指示了运行守护程序的运行级别。验证系统的当前运行级别(通常为 3 或 5)已将 NTP 守护程序设为 on
。如果当前运行级别未知,可使用 runlevel
命令查明运行级别:
$ runlevel
N 3
如果系统基于 Red Hat 6/CentOS 6 或 SUSE Linux Enterprise Server,请使用 service
和 chkconfig
实用程序启动 NTP 并将其设为在系统启动时启动。
$ /sbin/service ntpd restart
$ /sbin/chkconfig ntpd on
Red Hat 6/CentOS 6 —NTP 使用位于 ntp.org 的默认时间服务器。可通过编辑 /etc/ntpd.conf
来更改默认的 NTP 服务器。
SLES —默认情况下未配置任何时间服务器。在安装完成并添加时间服务器后,必须编辑 /etc/ntpd.conf
。
默认情况下,一些 Ubuntu 和 Debian 系统上没有安装 NTP 守护程序。首先安装 NTP,然后启动 NTP 进程。如下所示,可通过编辑 /etc/ntpd.conf
来更改默认的 NTP 服务器:
$ sudo apt-get install ntp
$ sudo /etc/init.d/ntp reload
要验证网络时间协议守护程序 (NTPD) 是否正确运行,请在群集中的所有节点上发出以下命令。
对于 Red Hat 6/CentOS 6 和 SLES:
$ /usr/sbin/ntpq -c rv | grep stratum
对于 Ubuntu 和 Debian:
$ ntpq -c rv | grep stratum
层级别 16 指示 NTP 未正确同步。
如果检测到层级别 16,则等待 15 分钟,然后再次发出该命令。要使 NTP 服务器稳定下来,可能需要这么长时间。
如果 NTP 仍旧检测到层级别 16,则验证在群集与您尝试同步的远程计算机之间的所有防火墙上,NTP 端口(UDP 端口 123)是否均处于开放状态。
前述链接是截至 Vertica 文档上次发布时的最新链接,并且在不同版本之间可能有所变化。
在安装 Vertica 之前,必须在系统上启用以下一项以进行时钟同步:
chrony
NTPD
必须在安装前启用并激活网络时间协议 (NTP)。否则,安装程序会以标识符 S0030 报告此问题。
有关安装和使用 chrony 的信息,请参阅以下信息。有关 NTPD 的信息,请参阅启用网络时间协议 (NTP)。有关 chrony 的详细信息,请参阅 Red Hat 文档中的使用 chrony。
chrony 套件包含:
chronyd - 用于时钟同步的守护程序。
chronyc - 用于配置 chronyd 的命令行实用程序。
一些版本的 Red Hat/CentOS 7 上默认安装了 chrony。但如果系统中尚未安装 chrony,则必须下载该软件包。要下载 chrony,请以 sudo 或 root 用户身份运行以下命令:
# yum install chrony
要查看 chronyd 守护程序的状态,请运行以下命令:
$ systemctl status chronyd
如果 chrony 正在运行,则会显示与以下类似的输出:
chronyd.service - NTP client/server
Loaded: loaded (/usr/lib/systemd/system/chronyd.service; enabled)
Active: active (running) since Mon 2015-07-06 16:29:54 EDT; 15s ago
Main PID: 2530 (chronyd)
CGroup: /system.slice/chronyd.service
ââ2530 /usr/sbin/chronyd -u chrony
如果 chrony 未在运行,则以 sudo 或 root 用户身份执行以下命令。此命令还会使 chrony 在系统启动时运行:
# systemctl enable chronyd
要验证 chrony 守护程序是否正常运行,请在群集中的所有节点上发出以下命令:
$ chronyc tracking
将显示与以下类似的输出:
Reference ID : 198.247.63.98 (time01.website.org)
Stratum : 3
Ref time (UTC) : Thu Jul 9 14:58:01 2015
System time : 0.000035685 seconds slow of NTP time
Last offset : -0.000151098 seconds
RMS offset : 0.000279871 seconds
Frequency : 2.085 ppm slow
Residual freq : -0.013 ppm
Skew : 0.185 ppm
Root delay : 0.042370 seconds
Root dispersion : 0.022658 seconds
Update interval : 1031.0 seconds
Leap status : Normal
层级别 16 指示 chrony 未正确同步。如果 chrony 仍旧检测到层级别 16,请验证 UDP 端口 323 处于开放状态。在群集与尝试同步的远程计算机之间的所有防火墙上,此端口必须保持开放状态。
除非 SELinux 在许可模式下运行,否则 Vertica 不支持 SELinux。如果安装程序检测到已安装 SELinux 并且无法确定模式,则会以标识符 S0080 报告此问题。如果可以确定模式,并且该模式不是许可模式,则会以标识符 S0081 报告此问题。
可以禁用 SELinux 或将其更改为使用许可模式。
要禁用 SELinux:
编辑 /etc/selinux/config
并将 SELinux 设置更改为禁用 (SELINUX=disabled
)。这会在引导时禁用 SELinux。
以 root/sudo 用户身份,键入 setenforce 0
以立即禁用 SELinux。
要将 SELinux 更改为使用许可模式:
编辑 /etc/selinux/config
,并将 SELINUX 的设置更改为许可模式 (SELINUX=Permissive
)。
以 root/sudo 用户身份,键入 setenforce Permissive
以立即切换至许可模式。
可以禁用 SELinux 或将其更改为使用许可模式。
要禁用 SELinux:
编辑 /selinux/config
并将 SELinux 设置更改为禁用 (SELINUX=disabled
)。这会在引导时禁用 SELinux。
以 root/sudo 用户身份,键入 setenforce 0
以立即禁用 SELinux。
要将 SELinux 更改为使用许可模式:
编辑 /selinux/config
,并将 SELinux 的设置更改为许可模式 (SELINUX=Permissive
)。
以 root/sudo 用户身份,键入 setenforce Permissive
以立即切换至许可模式。
本主题详细说明 Vertica 所支持的各种 CPU 频率调整方法。一般而言,如果不需要 CPU 频率调整,则将其禁用以免影响系统性能。
在将 cpufreq 调控器设为 performance
时,安装程序将允许启用 CPU 频率调整。如果将 CPU 调控器设为 ondemand,并且 ignore_nice_load
为 1 (true),则安装程序将会失败,并显示错误 S0140。如果将 CPU 调控器设置为 ondemand,并且 ignore_nice_load
为 0 (false),则安装程序将会发出警告,并显示标识符 S0141。
CPU 频率调整是一项硬件兼软件功能,可通过在系统负载较低时放慢处理器速度以及在系统负载增加时加快其运行速度,来帮助计算机节省能源。由于提高 CPU 频率以响应更高系统负载的情况并非即时操作,因此此功能可能会影响系统性能。始终在 Vertica 数据库主机上禁用此功能,以防止其对性能造成干扰。
在主机系统 BIOS 中禁用 CPU 调整。主机 BIOS 中可能有多项需要调整的设置,以便完全禁用 CPU 频率调整。有关进入系统 BIOS 和禁用 CPU 频率调整的详细信息,请查阅主机硬件文档。
如果无法通过系统 BIOS 禁用 CPU 调整,则可通过 Linux 内核禁用调整功能或将 CPU 频率调控器设为始终全速运行 CPU,来限制 CPU 调整带来的影响。
用于禁用频率调整的方法取决于 Linux 内核当前使用的 CPU 调整方法。有关在内核中禁用调整或更改 CPU 调控器的说明,请参见 Linux 发行版文档。
可以根据 Vertica 配置要求修改 defrag 实用程序,也可以根据工作负载优化系统性能。
在所有 Red Hat/CentOS 系统上,必须禁用 defrag 实用程序才能满足 Vertica 配置要求。
对于 SUSE 15.1,Vertica 建议启用 defrag 以获得最优性能。
Vertica 按工作负载建议 defrag 设置以优化性能。下表列出了针对主要运行并发查询(例如短时间运行的仪表板查询)或顺序 SELECT 或 load (COPY) 查询的系统提出的建议:
有关按工作负载优化系统性能的其他设置,请参阅启用或禁用透明大页。
通过运行以下命令确定是否已启用 defrag:
cat /sys/kernel/mm/redhat_transparent_hugepage/defrag
[always] madvise never
括号内返回的设置是当前设置。如果未使用 madvise
或 never
作为 defrag 设置,则必须禁用 defrag。
编辑 /etc/rc.local,
并添加以下脚本:
if test -f /sys/kernel/mm/redhat_transparent_hugepage/enabled; then
echo never > /sys/kernel/mm/redhat_transparent_hugepage/defrag
fi
必须重新引导系统以使设置生效,或运行以下 echo 行以继续安装而不重新引导:
# echo never > /sys/kernel/mm/redhat_transparent_hugepage/defrag
通过运行以下命令确定是否已启用 defrag:
cat /sys/kernel/mm/transparent_hugepage/defrag
[always] madvise never
括号内返回的设置是当前设置。如果未使用 madvise
或 never
作为 defrag 设置,则必须禁用 defrag。
编辑 /etc/rc.local,
并添加以下脚本:
if test -f /sys/kernel/mm/transparent_hugepage/enabled; then
echo never > /sys/kernel/mm/transparent_hugepage/defrag
fi
必须重新引导系统以使设置生效,或运行以下 echo 行以继续安装而不重新引导:
# echo never > /sys/kernel/mm/transparent_hugepage/defrag
如果使用的是 Red Hat 7.0/CentOS 7.0 或 Red Hat 8.0/CentOS 8.0,请以 root 或 sudo 身份运行以下命令:
$ chmod +x /etc/rc.d/rc.local
通过运行以下命令确定是否已启用 defrag:
cat /sys/kernel/mm/transparent_hugepage/defrag
[never] madvise never
括号内返回的设置是当前设置。如果未使用 madvise
或 always
作为 defrag 设置,则必须启用 defrag。
编辑 /etc/rc.local,
并添加以下脚本:
if test -f /sys/kernel/mm/transparent_hugepage/enabled; then
echo always > /sys/kernel/mm/transparent_hugepage/defrag
fi
必须重新引导系统以使设置生效,或运行以下 echo 行以继续安装而不重新引导:
# echo always > /sys/kernel/mm/transparent_hugepage/defrag
如果使用的是 Red Hat 7.0/CentOS 7.0 或 Red Hat 8.0/CentOS 8.0,请以 root 或 sudo 身份运行以下命令:
$ chmod +x /etc/rc.d/rc.local
Vertica 建议安装下列工具,以便在出现任何问题时,支持人员可以协助诊断系统问题:
pstack(或 gstack)软件包。当未安装时,将标识为问题 S0040。
mcelog 软件包。当未安装时,将标识为问题 S0041。
sysstat 软件包。当未安装时,将标识为问题 S0045。
要在 Red Hat 6 和 CentOS 6 系统中安装必需的工具,请以 sudo 或 root 用户身份运行以下命令:
yum install pstack
yum install mcelog
yum install sysstat
要在 Red Hat 7/CentOS 7 系统中安装必需的工具,请以 sudo 或 root 用户身份运行以下命令:
yum install gdb
yum install mcelog
yum install sysstat
要在 Ubuntu 和 Debian 系统中安装必需的工具,请以 sudo 或 root 用户身份运行以下命令:
apt-get install pstack
apt-get install mcelog
apt-get install sysstat
apt-get install rasdaemon
而不是 apt-get install mcelog
。
要在 SuSE 系统中安装必需的工具,请以 sudo 或 root 用户身份运行以下命令。
zypper install sysstat
zypper install mcelog
pstack/gstack 没有单独的 SuSE 软件包。但 gdb 软件包中包含 gstack,因此可选择安装 gdb 或从源代码编译 pstack/gstack。要安装 gdb 软件包:
zypper install gdb
以下任务与 Vertica 所需的系统用户的配置有关。
Vertica 对运行和管理 Vertica 的系统用户有特定的要求。如果在安装期间指定某个用户,但该用户不存在,则安装程序会以标识符 S0200 报告此问题。
Vertica 要求系统用户拥有数据库文件所有权并运行数据库进程和管理脚本。默认情况下,安装脚本会自动使用用户名 dbadmin 配置并创建此用户。有关安装脚本创建的默认用户的详细信息,请参阅关于 Vertica 创建的 Linux 用户及其权限。如果决定手动创建自己的系统用户,则必须在运行安装脚本之前 创建该用户。如果手动创建该用户:
dbadmin
和 verticadba
的实例为所选名称的占位符。
该用户必须在所有节点上都具有相同的用户名和密码
该用户必须使用 BASH shell 作为用户的默认 shell。如果不是,则安装程序会以标识符 [S0240] 报告此问题。
该用户必须在 verticadba 组中(例如:
usermod -a -G verticadba userNameHere
)。否则,安装程序会以标识符 [S0220] 报告此问题。
用户的登录组必须为 verticadba 或与该用户具有相同名称的组(例如 dbadmin 的主组为 dbadmin)。可使用 id 命令检查用户的组。例如:id dbadmin
。“gid”组是用户的主组。如果未正确配置此设置,则安装程序会以标识符 [S0230] 报告此问题。Vertica 建议使用 verticadba 作为用户的主登录组。例如:
usermod -g verticadba userNameHere
。如果用户的主组不是建议的 verticadba,则安装程序会以提示 [S0231] 报告此问题。
该用户必须具有主目录。如果不是,则安装程序会以标识符 [S0260] 报告此问题。
该用户的主目录必须归该用户所有。如果不是,则安装程序会以标识符 [S0270] 报告此问题。
系统必须知晓该用户的主目录(可使用 usermod 命令设置此目录:
usermod -m -d /path/to/new/home/dir userNameHere
)。如果未正确配置此设置,则安装程序会以 [S0250] 报告此问题。
该用户的主目录必须归 dbadmin 的主组所有(如果有必要,可使用 chown
和 chgrp
命令)。如果未正确配置此设置,则安装程序会以标识符 [S0280] 报告此问题。
该用户的主目录应该具有安全的权限。具体而言,不能供任何人或组进行写入。理想情况下,在使用 ls 查看时,这些权限应该为“---
”(无权限)或“r-x
”(读取和执行)。如果未按照建议配置此设置,则安装程序会以提示 [S0290] 报告此问题。
本主题详细说明如何设置或更改 TZ 环境变量并更新 tzdata 包。如果未设置此变量,则安装程序会以标识符 S0305 报告此问题。
在安装 Vertica 之前,更新系统的 tzdata 包,并通过指定 TZ
环境变量为数据库管理员帐户设置默认时区。如果正在通过 install_vertica
脚本创建数据库管理员,则在安装 Vertica 之后设置 TZ
变量。
tzdata 包是在大多数 Linux 系统中预先安装的公共域时区数据库。系统会针对全球时区变化定期更新 Tzdata 包。Micro Focus 建议在安装或更新 Vertica 之前更新到最新的 tzdata 包。
使用以下命令更新 tzdata 包:
基于 RedHat 的系统: yum update tzdata
Debian 和 Ubuntu 系统:apt-get install tzdata
当客户端收到 SQL 查询的结果集时,如果有必要,所有行将包含调整为相同时区的数据。除非客户端使用 SQL SET TIME ZONE 命令(如《SQL 参考手册》中所述)明确覆盖相应设置,否则该时区将是启动程序节点的默认时区。任何节点的默认时区均由 TZ
环境变量控制。如果未定义 TZ
,则使用操作系统时区。
TZ
变量都必须设置为相同的值。如果操作系统时区未设置为数据库的目标时区,则确保已在所有群集节点上将 Linux 环境变量 TZ
设为目标值。
如果未设置 TZ 变量,安装程序将会返回警告。如果操作系统时区符合数据库要求,则使用操作系统时区,并且可以安全地忽略警告。
如果在启动
管理工具之前在命令行中显式设置 TZ
环境变量,则当前设置将不会生效。管理工具使用 SSH 在其他节点上启动副本,因此每次使用 SSH 时,都会重置启动命令的 TZ
变量。必须在群集所有节点上的 .profile
或 .bashrc
文件中设置 TZ
才能正常生效。
可采用多种不同的方法来设置时区,具体取决于 Linux 发行版或系统管理员的首选项。
要在 Red Hat 和 SUSE Linux 系统上设置系统时区,请编辑:
/etc/sysconfig/clock
要设置 TZ
变量,请编辑 /etc/profile
、/home/dbadmin/.bashrc
或 /home/dbadmin/.bash_profile
,然后添加以下行(例如,对于美国东部时区):
export TZ="America/New_York"
有关 Vertica 识别哪些时区名称的详细信息,请参阅附录:在 Vertica 中使用时区。
本主题详细说明如何设置或更改 LANG 环境变量。LANG 环境变量用于控制主机的区域设置。如果未设置此变量,则安装程序会以标识符 S0300 报告此问题。如果此变量未设置为有效值,则安装程序会以标识符 S0301 报告此问题。
每个主机都具有对应 Linux 环境变量 LANG
的系统设置。 LANG
在缺少 LC_ALL
和其他 LC_ 环境变量的情况下确定本机语言、本地习俗和编码字符集的区域设置类别。LANG
可由应用程序用来确定将哪种语言用于错误消息和说明、合并序列、日期格式等等。
要更改数据库管理员的 LANG
设置,请编辑所有群集主机上的 /etc/profile
、/dbadmin/.bashrc
或 /home/dbadmin/.bash_profile
,并设置环境变量;例如:
export LANG=en_US.UTF-8
LANG
设置用于控制 Vertica 中的以下各项:
操作系统级别的错误和警告,例如 COPY 操作期间的“找不到文件 (file not found)”。
一些格式化函数,例如 TO_CHAR 和 TO_NUMBER。另请参阅用于数字格式化的模板模式。
LANG
设置不控制以下项目:
Vertica 特定的错误和警告消息。这些消息目前始终为英语。
SQL 返回的发送到 Vertica 的结果的整理。相反,必须使用数据库参数来控制此设置。有关详细信息,请参阅为国际数据集实施区域设置部分。
LC_ALL
环境变量,它将取代 LANG
的设置。
要想成功安装 Vertica,在安装数据库平台之前,必须先在群集中的所有节点上安装三个软件包。
必需的软件包为:
openssh — 节点之间的 管理工具连接所需。
which — Vertica 操作系统集成和验证安装所需。
dialog — 与 Administration Tools 的交互性所需。
安装必需的软件包所遵循的过程取决于在其上运行节点或群集的操作系统。有关安装软件包的详细信息,请参见相应操作系统的文档。
对于 CentOS/Red Hat 系统 —通常情况下,使用 yum 实用程序来管理 Red Hat 和 CentOS 系统上的软件包。
运行以下 yum 命令安装各个软件包依赖项。yum 实用工具将指导完成安装过程:
# yum install openssh
# yum install which
# yum install dialog
对于 Debian/Ubuntu 系统 —通常情况下,使用 apt-get 实用程序来管理 Debian 和 Ubuntu 系统上的软件包。
运行以下 apt-get 命令安装各个软件包依赖项。apt-get 实用工具将指导完成安装过程:
# apt-get install openssh
# apt-get install which
# apt-get install dialog
您可以在以下情况下指定磁盘存储位置:
安装 Vertica 时(见下文)。
安装 Vertica 时,install_vertica 脚本中的 --data-dir
参数允许您指定一个包含数据库数据和编录文件的目录。该脚本默认为数据库管理员的默认主目录
/home/dbadmin
。
数据和编录目录必须存在于群集中的每个节点上。
每个节点上的目录必须归数据库管理员所有。
编录和数据路径名称只能包含字母数字字符,不能有前置空格字符。如果不能遵守这些限制条件,将导致数据库创建失败。
如果其他数据库正在使用目录,Vertica 将拒绝覆盖目录。因此,如果您创建了一个用于评估的数据库,然后删除了该数据库,而您想要再使用该数据库名称,请确保您已彻底清理先前使用的磁盘存储位置。有关详细信息,请参阅管理存储位置。
尽管 Vertica 支持在一个节点、两个节点和多个节点上安装,但本节将介绍如何在节点群集上安装 Vertica 软件。本节假定已执行在安装 Vertica 之前中的任务,并且拥有 Vertica 许可证密钥。
要安装 Vertica,请完成以下任务:
要下载并安装 Vertica 服务器软件包:
使用 Web 浏览器访问 Vertica 网站。
单击支持 (Support) 选项卡并选择客户下载 (客户下载)。
登录门户下载安装软件包。
确保下载的软件包与操作系统以及安装软件包的目标计算机架构相匹配。
将安装软件包传送到 管理主机。
如果在群集中的任何主机上安装了之前版本的 Vertica,则使用 管理工具 闭正在运行的数据库。
该数据库必须正常停止;不能升级需要恢复的数据库。
如果正在使用 sudo 用户,则跳至下一步。如果是 root 用户,则以 root 用户身份登录到管理主机(或以其他用户身份登录并切换到 root 用户)。
$ su - root
password: root-password
#
安装 Vertica 之后,将不再需要 root 权限。要验证 sudo,请参阅常规硬件和操作系统要求和建议。
使用以下命令之一运行 RPM 软件包安装程序:
如果是 root 用户并且正在安装 RPM:
# rpm -Uvh pathname
在安装 Vertica RPM 时,您可能会看到有关 SHA256 签名的意外警告。此警告表示您需要导入 GPG 密钥。可以从 Vertica 客户端驱动程序页面所选版本的“安全 (Security)”部分下下载密钥,只有 10.0 之后的版本才需要执行执行此操作。下载密钥后,可以使用以下命令导入:
如果正在使用 sudo 用户安装 RPM:
$ sudo rpm -Uvh pathname
如果使用的是 Debian:
$ sudo dpkg -i pathname
其中,pathname 是您下载的 Vertica 软件包文件。
请在安装 Vertica 软件包后运行安装脚本。安装脚本使用 Bash shell 在单个节点上运行。它会将 Vertica 软件包复制到您计划的群集中的所有其他主机(由 --hosts
实参确定)上。
安装脚本对每个目标主机运行多次测试,以验证这些主机是否满足 Vertica 节点的系统要求和性能要求。安装脚本会修改一些操作系统配置设置,以满足这些要求。其他设置无法由安装脚本进行修改,而必须手动重新配置。
有关所有安装选项,请参阅 install_vertica 选项。
以 root(或 sudo)用户身份运行安装脚本。用户必须以 root 或具有 sudo 权限的用户身份通过 BASH shell 运行该脚本。在运行安装脚本时,可以配置许多选项。有关完整的选项列表,请参阅下面的基本安装参数。
如果安装程序由于未满足任何要求而失败,则可以纠正问题,然后使用相同的命令行选项重新运行安装程序。
要执行基本安装:
以 root 用户身份:
# /opt/vertica/sbin/install_vertica --hosts host_list --rpm package_name --dba-user dba_username
使用 sudo:
$ sudo /opt/vertica/sbin/install_vertica --hosts host_list --rpm package_name --dba-user dba_username
install_vertica
放在 /opt/vertica
以外的位置,请创建从该位置到 /opt/vertica
的符号链接。请在所有群集节点上创建此符号链接,否则数据库将无法启动。
当系统提示输入密码以登录其他节点时,提供请求的密码。这样做将允许在其他群集节点上安装软件包和系统配置。
如果您是 root 用户,则这是 root 用户密码。
如果您正在使用 sudo,则这是 sudo 用户密码。
该密码不回显在命令行上。例如:
Vertica Database 12.0.x Installation Tool
Please enter password for root@host01:password
如果 dbadmin 用户或参数 --dba-user
中指定的用户不存在,则安装脚本会提示输入用户密码。提供该密码。例如:
Enter password for new UNIX user dbadmin:password
Retype new UNIX password for user dbadmin:password
仔细检查
install_vertica
返回的任何警告或故障并纠正问题。
例如,文件系统的 RAM 不足、网络吞吐量不足和预读过高设置可能导致今后出现性能问题。此外,如果存在未解决的 LANG 警告,可能导致数据库无法启动并出现 VSQL 问题。系统的 LANG 属性必须兼容 UTF-8。修正问题后,重新运行安装脚本。
安装成功后,按照脚本指示断开与 管理主机的连接。然后,完成所需的安装后步骤。
此时不再需要 root 权限,并且数据库管理员可以执行任何剩余步骤。
Vertica 支持实施美国联邦信息处理标准 140-2 (FIPS)。可以在操作系统中启用 FIPS 模式。
在安装过程中,install_vertica 脚本会检测主机是否在 FIPS 模式下运行。安装程序将搜索文件 /proc/sys/crypto/fips_enabled
并检查其内容。如果此文件存在且文件名中包含“1”,则表明主机正在 FIPS 模式下运行,并显示以下消息:
/proc/sys/crypto/fips_enabled exists and contains '1', this is a FIPS system
在 libssl 和 libcrypto 库不含版本信息的某些系统上,当启动 Vertica 时,您可能会看到消息
No version information available
此消息是良性消息,您可以忽略它。
作为 Vertica 安装的一部分,会创建指向相应 OpenSSL 文件的符号链接。步骤如下:
RPM 安装程序将两个 OpenSSL 库文件放在 /opt/vertica/lib 中:
libssl.so.1.1
libcrypto.so.1.1
install_vertica 脚本在 /opt/vertica/lib 中创建两个符号链接:
libssl.so
libcrypto.so
这些符号链接指向 libssl.so.1.1 和 libcrypto.so.1.1,RPM 安装程序会将它们放在 /opt/vertica/lib 中。
要在 Vertica Analytic Database 上实施 FIPS 140-2,需要配置您正在使用的服务器和客户端。要查看详细配置步骤,请转到实施 FIPS 140-2。
下表描述了所有
install_vertica
脚本选项。大多数选项都有长短两种形式 — 例如 \--hosts
和 -s
。
install_vertica
至少需要两个选项:
--hosts
/ -s
--rpm
/ -r
| --deb
例如:
# /opt/vertica/sbin/install_vertica --hosts node0001,node0002,node0003 \
--rpm /tmp/vertica-10.1.1-0.x86_64.RHEL6.rpm
有关最低安装要求的详细信息,请参阅执行基本安装。
--help
\--accept-eula -Y
请将此选项与 --license
(-L
) 结合使用以激活许可证。
\--add-hosts host-list -A host-list
--add-hosts
会通过将主机添加到数据库群集,然后重新配置 Spread,以修改现有的 Vertica 安装。这对提高系统性能或将数据库设为 K-safe 非常有用。
如果已使用 --point-to-point
(-T
) 将 spread 配置为在现有群集内使用直接点对点通信,则在添加新主机时也必须使用此类通信;否则,新主机会自动使用 UDP 广播流量,从而导致群集通信问题,进而导致 Vertica 无法正常运行。例如:
--add-hosts host01
--add-hosts 192.168.233.101
还可以将此选项与
update_vertica
脚本一起使用。有关详细信息,请参阅添加节点。
\--broadcast -U
不要将此选项与 --point-to-point
(-T
) 结合使用。
将配置从 --broadcast
(-U
)(默认值)更改为 --point-to-point
(-T
) 或执行相反方向的更改时,还必须指定 --control-network
(-S
)。
--clean
此选项不能与 update_vertica
结合使用。
\--config-file file -z file
--record-config
创建的现有属性文件。此属性文件包含映射到
install_vertica
脚本中的选项的键/值设置,其中许多布尔实参默认设为 false。\--control-network { bcast-addess | default } -S { bcast-addess | default }
bcast-addess:一个广播网络 IP 地址,可用于在子网上配置不同于其他 Vertica 数据通信的 spread 通信。
default
bcast-addess 必须至少匹配数据库中部分节点的子网。如果地址不匹配数据库中任何节点的子网,则安装程序将会显示错误并停止运行。如果提供的地址匹配部分节点的子网,但不匹配所有节点的子网,则安装程序将会显示警告,但安装仍会继续。
理想情况下,--control-network
的值应匹配所有节点子网。
在更改 spread 相关的选项时,还可以使用此选项强制执行群集范围的 spread 重新配置。
\--data-dir data-directory -d data-directory
默认值: /home/dbadmin
\--dba-group group -g group
默认值: verticadba
。
\--dba-user dba-username -u dba-username
dbadmin
。
对于以 root 身份完成的新安装,此选项是可选项,但是在升级或使用 sudo 安装时则必须指定。升级时,请使用此选项指定之前的同一 DBA 帐户名称。如果使用 sudo 安装,则 dba-username 必须已经存在。
如果手动创建该用户,请修改用户的 .bashrc
文件以包含以下行: PATH=/opt/vertica/bin:$PATH
以便 dbadmin 用户可以轻松启动 vsql 和 admintools 等 Vertica 工具。
\--dba-user-home dba-home-directory -l dba-home-directory
默认值: /home/dbadmin
。
\--dba-user-password dba-password -p dba-password
--dba-user-password-disabled
--dba-user
的密码。此实参将阻止安装程序提示输入 --dba-user
的密码。可以稍后使用 passwd
等标准用户管理工具分配密码。\--failure-threshold [ threshold-arg ]
HINT
:在安装测试期间遇到 HINT 或更严重的问题时停止安装。HINT 配置是应该执行的设置,但如果忽略该设置,数据库的运行也不会受到明显的负面影响。
WARN
:在遇到 WARN 或更严重的问题时停止安装。WARN 问题可能会影响数据库的性能。但用于基本测试时,或对于 Community Edition 用户而言,如果不要求极端性能,也可以忽略 WARN 问题。
FAIL
:在遇到 FAIL 或更严重的问题时停止安装。FAIL 问题可能造成严重不利的性能后果,如果不加以解决,在后期可能造成处理问题。但即使忽略 FAIL 问题,仍可启动 Vertica。
HALT
:在遇到 HALT 或更严重的问题时停止安装。如果选择此选项,数据库可能无法启动。不支持在生产环境中使用。
NONE
:不停止安装。数据库可能无法启动。不支持在生产环境中使用。
默认值: WARN
\--hosts host-list -s host-list
--hosts host01,host02,host03
-s 192.168.233.101,192.168.233.102,192.168.233.103
需要满足以下要求:
如果升级现有的 Vertica 安装,请使用之前使用的相同主机名。
主机的 IP 地址或主机名必须唯一。列出的同一主机不得使用多个 IP 地址/主机名。
--ipv4
--ipv6
--hosts
列表中传递 IPv6 地址时,必须指定此选项。如果在 --hosts
选项中使用主机名,则名称必须解析为 IPv6 地址。此选项自动启用
--[point-to-point](#pointToPoint)
选项。\--large-cluster [ num-control-nodes | default]
为该选项提供以下实参之一:
--hosts
值之中的较小值。对于企业模式,设置整个群集中控制节点的数量。在 Eon 模式下,设置初始默认子群集中的控制节点数。此值必须介于 1 到 120 之间(包含)。default
:Vertica 将控制节点数设为 --hosts
(-s
) 中列出的群集节点总数的平方根。有关详细信息,请参阅在安装 Vertica 时启用大型群集。
默认值: default
\--license { licensefile | CE } -L { licensefile | CE }
/opt/vertica/config/share
。在多节点安装中,–-license
选项还将许可证应用于 --hosts host_list
中声明的所有节点。要激活许可证,请将此选项与 –-accept-eula
选项结合使用。如果不使用 –-accept-eula
选项,在连接到数据库时,系统会要求接受 EULA。接受 EULA 后,许可证便会激活。
如果使用 CE
指定,则会自动部署包含在下载内容中的社区版许可证密钥。您无需指定许可证文件。
例如:
--license CE
--license /tmp/vlicense.dat
--no-system-configuration
如果使用此选项,安装程序会针对不满足要求的配置设置发出警告或失败,并指出它将自动配置这些设置。
此选项对创建或更新用户帐户没有影响。
\--point-to-point -T
Vertica 中的点对点通信所支持的 spread 守护程序最大数量为 80 个。使用大型群集模式时,节点数量可能会超过 80 个,这时将无法在每个节点上安装一个 spread 守护程序。
不要将此选项与 --broadcast
(-U
) 结合使用。
启用 --ipv6
选项后,将自动启用此选项。
将配置从 --broadcast
(-U
)(默认值)更改为 --point-to-point
(-T
) 或执行相反方向的更改时,还必须指定 --control-network
(-S
)。
\--record-config filename -B filename
--config-file
(-z
) 配合使用的属性文件。该选项将创建属性文件并退出;它不会影响安装。\--remove-hosts host-list -R host-list
--remove-hosts
会通过将主机从数据库群集中移除,然后重新配置 spread,以修改现有的 Vertica 安装。这在移除废弃或过度配置的系统时非常有用。例如:
--remove-hosts host01
-R 192.168.233.101
如果使用 --point-to-point
(-T
) 将 spread 配置为在现有群集内使用直接点对点通信,则在移除主机时也必须使用此类通信;否则,主机会自动使用 UDP 广播流量,从而导致群集通信问题,进而导致 Vertica 无法正常运行。
移除节点中所述的
update_vertica
脚本会调用 install_vertica 脚本来执行安装更新。您可以将
install_vertica
或
update_vertica
脚本与此选项配合使用。
\--rpm package-name -r package-name \--deb package-name
--rpm vertica-12.0.x.x86_64.RHEL6.rpm
如果安装或升级多个节点并且这些节点没有安装最新的服务器软件包,或者正在添加新节点,则必须提供安装软件包。install_vertica
和 update_vertica
脚本会按顺序将服务器软件包复制到其他节点并安装该软件包。
\--spread-logging -w
/opt/vertica/log/spread_hostname.log
。此选项不适用于升级。
\--ssh-identity file -i file
--ssh-password
(-P
) 选项配合使用。
Vertica 接受下列做法:
通过提供未使用密码保护的 SSH 私钥。使用此方法时,无法使用 sudo 命令运行
install_vertica
脚本。
通过提供使用密码保护的私钥和使用 SSH 代理。请注意,sudo 在被调用时,通常会重置环境变量。具体而言,可能会重置 SSH 代理所需的 SSH_AUTHSOCK 变量。因此,请配置系统维护 SSH_AUTHSOCK,或使用与以下类似的方法调用 install_vertica
:
sudo SSH_AUTHSOCK=$SSH_AUTHSOCK /opt/vertica/sbin/install_vertica ...
\--ssh-password password -P password
--ssh-identity
(-i
),则脚本会根据需要提示输入密码并且不会回显输入。
不要将此选项与 --ssh-identity
(-i
) 一起使用。
如果以 root 用户身份运行
install_vertica
脚本,请指定 root 密码:
# /opt/vertica/sbin/install_vertica -P <span class="code-variable">root-passwd</span>
如果使用 sudo
命令运行
install_vertica
脚本,请指定运行
install_vertica
的用户的密码,而不是 root 密码。例如,如果 dbadmin 用户使用 sudo
运行
install_vertica
,并且密码为 dbapasswd
,则将密码指定为 dbapasswd
:
$ sudo /opt/vertica/sbin/install_vertica -P <span class="code-variable">dbapasswd</span>
\--temp-dir directory
/opt/vertica
内的目录,则由安装程序创建。否则,群集中的所有节点上都应该已经存在该目录。该位置应允许 dbadmin
写入权限。
默认值: /tmp
此部分介绍如何创建属性文件,以便在无需大量手动介入的情况下快速安装和部署基于 Vertica 的应用程序。
安装属性文件:
下载并安装 Vertica 安装软件包,如安装 Vertica 中所述。
创建属性文件,通过提供希望 Vertica 使用的参数来实现非交互式安装。例如:
以下命令将执行多节点安装:
# /opt/vertica/sbin/install_vertica --record-config file_name --license /tmp/license.txt --accept-eula \
# --dba-user-password password --ssh-password password --hosts host_list --rpm package_name
以下命令将执行单节点安装:
# /opt/vertica/sbin/install_vertica --record-config file_name --license /tmp/license.txt --accept-eula \
# --dba-user-password password
有关完整的安装参数集,请参阅 使用安装脚本安装 Vertica。
--config-file
参数来安装 Vertica(如下所述)。
使用以下命令之一运行安装脚本。
如果是 root 用户:
/opt/vertica/sbin/install_vertica --config-file file_name
如果使用的是 sudo 用户:
$ sudo /opt/vertica/sbin/install_vertica --config-file file_name
\--config-file file_name
accepts an existing properties file created by
\--record-config file_name
.此属性文件包含映射到 install_vertica
脚本中的值的键/值参数,其中许多布尔参数默认设为 false
用于单节点安装的命令类似以下命令:
# /opt/vertica/sbin/install_vertica --config-file /tmp/vertica-inst.prp
如果没有为属性文件提供 --ssh-password
密码参数,系统将提示提供请求的密码,以便安装 RPM/DEB 并对其他群集节点进行系统配置。如果您是 root 用户,则这是 root 用户密码。如果您正在使用 sudo,则这是 sudo 用户密码。该密码不回显在命令行上。
如果没有在属性文件中提供 --dba-user-password
密码参数,系统将提示提供数据库管理员帐户密码。
安装脚本将会使用提供的密码创建一个新的 Linux 用户帐户(默认情况下为 dbadmin)。
仔细检查 install_vertica
生成的任何警告,并在可能的情况下纠正问题。例如,文件系统中的 RAM 量不足、网络吞吐量不足和 readahead 过高等设置可能导致今后出现性能问题。
install_vertica [options] > /tmp/file 1>&2
.
(可选) 执行以下步骤:
按照脚本的指示,断开与管理主机的连接。以下操作要求这样做:
正确设置特定的系统参数。
执行 Vertica 数据库管理员操作。
此时不再需要 Linux root 用户权限。数据库管理员可执行剩余的步骤。
如果为属性文件提供了 --license
和 --accept-eula
参数,请继续入门,然后参阅配置数据库。
否则:
登录到管理主机的 数据库超级用户帐户。
接受最终用户许可证协议并按照安装许可证密钥中所述的步骤安装之前下载的许可证密钥。
不支持降级安装。
以下是配置属性文件的内容示例:
accept_eula = True
license_file = /tmp/license.txt
record_to = file_name
root_password = password
vertica_dba_group = verticadba
vertica_dba_user = dbadmin
vertica_dba_user_password = password
从 Vertica 6.1.x 开始,可以通过使用预配置的 Amazon Machine Image (AMI) 在 AWS 上使用 Vertica。有关在 AWS 上安装和配置群集的详细信息,请参考在 AWS 上安装和运行 Vertica。
您可以在自己的网络(也称为“本地”)中安装 Vertica,并让它在 Eon 模式下运行。有关 Eon 模式的详细信息,请参阅 Eon 模式概念。在 Eon 模式本地配置中,Vertica 将您网络中托管的对象存储用于公共存储。有关 Vertica 支持用于公共存储的对象存储列表,请参阅 Eon 内部部署存储。
为 Eon 模式本地部署安装 Vertica 时,遵循为本地企业模式部署安装 Vertica 的相同步骤。当您创建数据库时,两者之间的实际差别就显示出来了。
在将 Pure Storage FlashBlade 作为与 S3 兼容的公共存储的情况下,可以通过以下两个选项来安装 Eon 模式内部部署数据库:
使用 admintools 命令行: 使用 Vertica admintools 命令行完成本主题中的所有步骤。
使用管理控制台:执行在 MC 中使用 FlashBlade 内部创建 Eon 模式数据库中的步骤。
要将 Pure Storage FlashBlade 设备用作 Eon 模式数据库的公共存储位置,您必须具有:
FlashBlade 设备的 IP 地址。如果 FlashBlade 未使用标准端口 80 或 443 访问存储桶,您还必须具有连接端口号。Vertica 群集中的所有节点都必须能够访问此 IP 地址。确保 FlashBlade 设备和节点之间的所有防火墙都配置为允许访问。
FlashBlade 上用于公共存储的存储桶名称。
对存储桶具有读写访问权限的用户帐户的访问密钥和密钥。
有关如何创建存储桶和公共存储位置所需的访问密钥的说明,请参阅 Pure Storage 支持站点。
要安装 Vertica:
通过查看 在安装 Vertica 之前 部分中的所有内容,确保节点配置正确。
使用 install_vertica
脚本验证节点是否已正确配置并在所有节点上安装 Vertica 二进制文件。按照使用命令行安装所述步骤安装 Vertica。
在创建 Eon 模式内部部署数据库之前,您必须创建一个授权文件,admintools 将使用该文件向 FlashBlade 存储进行身份验证。
在将运行 admintools 以创建数据库的 Vertica 节点上,使用文本编辑器创建一个文件。您可以随意命名此文件。在这些步骤中,将它命名为 auth_params.conf
。此文件的位置并不重要,只要它可供用于创建数据库的 Linux 用户(通常是 dbadmin)读取即可。
auth_params.conf
文件包含用于访问 Eon 模式数据库数据所在存储桶的密钥。此信息属于敏感信息,可用于访问数据库中的原始数据。请确保此文件无法由未经授权的用户读取。创建数据库后,您可以删除此文件。
向此文件中添加以下各行:
awsauth = FlasbBlade_Access_Key:FlashBlade_Secret_Key
awsendpoint = FlashBladeIp:FlashBladePort
awsendpoint
设置中提供端口号。
如果不对 Vertica 和 FlashBlade 之间的连接使用 TLS 加密,请向此文件中添加以下各行:
awsenablehttps = 0
保存此文件并退出编辑器。
使用此示例 auth_params.conf
文件,可以通过标准端口 80 在 Vertica 群集与 IP 地址为 10.10.20.30 的 FlashBlade 设备之间建立非加密连接。
awsauth = PIWHSNDGSHVRPIQ:339068001+e904816E02E5fe9103f8MQOEAEHFFVPKBAAL
awsendpoint = 10.10.20.30
awsenablehttps = 0
在每个节点上,为存储库存储路径选择或创建一个目录。您为存储库存储路径参数提供的目录必须:
在群集中的所有节点上具有相同的路径(即 /home/dbadmin/depot
)。
可由 dbadmin 用户读写。
具有足够的存储空间。默认情况下,Vertica 将包含该目录的文件系统空间的 60% 用于存储库的存储。您可以使用 create_db 命令中的 --depot-size
实参来限制存储库的大小。有关为存储库选择大小的准则,请参阅为 Eon 模式配置 Vertica 群集。
如果存储库路径不存在,admintools create_db 工具将尝试为您创建存储库路径。
使用 admintools create_db 工具创建数据库。必须向此工具传递以下实参:
一些常见的可选实参包括:
要查看 create_db 工具的所有实参,请运行以下命令:
admintools -t create_db --help
以下示例演示了如何创建名为 verticadb 的三节点数据库,指定存储库将存储在 dbadmin 用户的主目录中。
$ admintools -t create_db -x auth_params.conf \
--communal-storage-location=s3://verticadbbucket \
--depot-path=/home/dbadmin/depot --shard-count=6 \
-s vnode01,vnode02,vnode03 -d verticadb -p 'YourPasswordHere'
创建数据库后,禁用 AWSStreamingConnectionPercentage 配置参数。对于使用 Set Snippet Variable Value in Topic 上公共存储的内部 Eon 模式安装,此设置并非必要。此配置参数控制 Vertica 用于流式读取的对象存储的连接数。在云环境中,此设置有助于避免来自对象存储的流式数据传输耗尽所有可用的文件句柄。它为其他对象存储操作留下了一些可用的文件句柄。由于内部部署对象存储的延迟较低,因此,此选项并非必要。将其设置为 0 以禁用它。
以下示例显示如何使用 ALTER DATABASE...SET PARAMETER 禁用此参数:
=> ALTER DATABASE DEFAULT SET PARAMETER AWSStreamingConnectionPercentage = 0;
ALTER DATABASE
FlashBlade 对象存储的性能足够快,可以考虑禁用 Vertica 数据库中的存储库。如果禁用存储库,则可以在节点上使用更少的本地存储。但是,禁用存储库始终会对性能产生影响。确切的影响主要取决于在数据库上运行的工作负载类型。可能会导致查询性能降低 30% 到 4000%。只有当降低节点存储要求会获得显著的好处时,才应考虑禁用存储库。在针对生产数据库禁用存储库之前,请始终运行概念验证测试,让该测试执行与生产数据库相同的工作负载。
要禁用存储库,请将 UseDepotForReads 配置参数设置为 0。以下示例演示了如何使用 ALTER DATABASE...SET PARAMETER 禁用此参数:
=> ALTER DATABASE DEFAULT SET PARAMETER UseDepotForReads = 0;
ALTER DATABASE
要将 MinIO 用作 Eon 模式数据库的公共存储位置,必须具备:
MinIO 群集的 IP 地址和端口号。MinIO 的默认端口号是 9000。在 Eon 模式下运行的 Vertica 数据库在默认情况下使用端口 80 进行非加密连接,使用端口 443 进行 TLS 加密连接。Vertica 群集中的所有节点都必须能够访问 MinIO 群集的 IP 地址。确保 MinIO 群集和节点之间的任何防火墙都配置为允许访问。
MinIO 群集上用于公共存储的存储桶的名称。
对存储桶具有读写访问权限的用户帐户的访问密钥和密钥。
有关如何创建公共存储位置所需的存储桶和访问密钥的说明,请参阅 MinIO 文档。
要安装 Vertica:
通过查看 在安装 Vertica 之前 部分中的所有内容,确保节点配置正确。
使用 install_vertica
脚本验证节点是否已正确配置并在所有节点上安装 Vertica 二进制文件。按照使用命令行安装所述步骤安装 Vertica。
在创建 Eon 模式内部部署数据库之前,必须创建一个授权文件,admintools 将使用该文件向 MinIO 存储群集进行身份验证。
在将运行 admintools 以创建数据库的 Vertica 节点上,使用文本编辑器创建一个文件。您可以随意命名此文件。在这些步骤中,将它命名为 auth_params.conf
。此文件的位置并不重要,只要它可供用于创建数据库的 Linux 用户(通常是 dbadmin)读取即可。
auth_params.conf
文件包含用于访问 Eon 模式数据库数据所在存储桶的密钥。此信息属于敏感信息,可用于访问数据库中的原始数据。请确保此文件无法由未经授权的用户读取。创建数据库后,您可以删除此文件。
向此文件中添加以下各行:
awsauth = MinIO_Access_Key:MinIO_Secret_Key
awsendpoint = MinIOIp:MinIOPort
awsendpoint
设置中提供端口号。默认情况下,MinIO 使用端口 9000。
如果不对 Vertica 和 MinIO 之间的连接使用 TLS 加密,请向此文件中添加下行:
awsenablehttps = 0
保存此文件并退出编辑器。
使用此示例 auth_params.conf
文件,可以通过端口 9000(这是 MinIO 的默认端口)在 Vertica 群集与 IP 地址为 10.20.30.40 的 MinIO 群集之间建立非加密连接。
awsauth = PIWHSNDGSHVRPIQ:339068001+e904816E02E5fe9103f8MQOEAEHFFVPKBAAL
awsendpoint = 10.20.30.40:9000
awsenablehttps = 0
在每个节点上,为存储库存储路径选择或创建一个目录。您为存储库存储路径参数提供的目录必须:
在群集中的所有节点上具有相同的路径(即 /home/dbadmin/depot
)。
可由 dbadmin 用户读写。
具有足够的存储空间。默认情况下,Vertica 将包含该目录的文件系统空间的 60% 用于存储库的存储。您可以使用 create_db 命令中的 --depot-size
实参来限制存储库的大小。有关为存储库选择大小的准则,请参阅为 Eon 模式配置 Vertica 群集。
如果存储库路径不存在,admintools create_db 工具将尝试为您创建存储库路径。
使用 admintools create_db 工具创建数据库。必须向此工具传递以下实参:
一些常见的可选实参包括:
要查看 create_db 工具的所有实参,请运行以下命令:
admintools -t create_db --help
以下示例演示了如何创建名为 verticadb 的三节点数据库,指定存储库将存储在 dbadmin 用户的主目录中。
$ admintools -t create_db -x auth_params.conf \
--communal-storage-location=s3://verticadbbucket \
--depot-path=/home/dbadmin/depot --shard-count=6 \
-s vnode01,vnode02,vnode03 -d verticadb -p 'YourPasswordHere'
创建数据库后,禁用 AWSStreamingConnectionPercentage 配置参数。对于使用 Set Snippet Variable Value in Topic 上公共存储的内部 Eon 模式安装,此设置并非必要。此配置参数控制 Vertica 用于流式读取的对象存储的连接数。在云环境中,此设置有助于避免来自对象存储的流式数据传输耗尽所有可用的文件句柄。它为其他对象存储操作留下了一些可用的文件句柄。由于内部部署对象存储的延迟较低,因此,此选项并非必要。将其设置为 0 以禁用它。
以下示例显示如何使用 ALTER DATABASE...SET PARAMETER 禁用此参数:
=> ALTER DATABASE DEFAULT SET PARAMETER AWSStreamingConnectionPercentage = 0;
ALTER DATABASE
要将 HDFS 用作 Eon 模式数据库的公共存储位置,必须:
运行 WebHDFS 服务。
如果使用的是 Kerberos,请按照 Kerberos 身份验证中所述为 Vertica(系统)用户创建 Kerberos 主体,并授予它对 HDFS 中用来放置公共存储的位置的读写访问权限。Vertica 将始终使用此系统主体访问公共存储。
如果使用的是高可用性名称节点或 swebhdfs,请按照配置 HDFS 访问中所述将 HDFS 配置文件分发到所有 Vertica 节点。即使不针对公共存储使用 hdfs 架构,此步骤也是必要步骤。
如果使用的是 swebhdfs(线路加密)而不是 webhdfs,请使用 Vertica 主机信任的证书配置 HDFS 群集,并在 hdfs-site.xml 中设置 dfs.encrypt.data.transfer。
Vertica 对静态加密没有其他要求。有关如何为 WebHDFS 配置静态加密的信息,请参阅 Hadoop 发行版的文档。
要安装 Vertica:
通过查看 在安装 Vertica 之前 部分中的所有内容,确保节点配置正确。
使用 install_vertica
脚本验证节点是否已正确配置并在所有节点上安装 Vertica 二进制文件。按照使用命令行安装所述步骤安装 Vertica。
在创建 Eon 模式内部部署数据库之前,您必须创建一个引导文件来指定创建数据库所需的参数。如果使用的是 Kerberos、高可用性名称节点或 TLS(线路加密),则此步骤适用。
在将运行 admintools 以创建数据库的 Vertica 节点上,使用文本编辑器创建一个文件。您可以随意命名此文件。在这些步骤中,将它命名为 bootstrap_params.conf
。此文件的位置并不重要,只要它可供用于创建数据库的 Linux 用户(通常是 dbadmin)读取即可。
向此文件中添加以下各行。HadoopConfDir 通常设置为 /etc/hadoop/conf
;KerberosServiceName 通常设置为 vertica
。
HadoopConfDir = config-path
KerberosServiceName = principal-name
KerberosRealm = realm-name
KerberosKeytabFile = keytab-path
如果不使用 HA 名称节点(例如在测试环境中),则可以忽略 HadoopConfDir 并在指定公共存储位置时使用显式名称节点主机和端口。
保存此文件并退出编辑器。
在每个节点上,为存储库存储路径选择或创建一个目录。您为存储库存储路径参数提供的目录必须:
在群集中的所有节点上具有相同的路径(即 /home/dbadmin/depot
)。
可由 dbadmin 用户读写。
具有足够的存储空间。默认情况下,Vertica 将包含该目录的文件系统空间的 60% 用于存储库的存储。您可以使用 create_db 命令中的 --depot-size
实参来限制存储库的大小。有关为存储库选择大小的准则,请参阅为 Eon 模式配置 Vertica 群集。
如果存储库路径不存在,admintools create_db 工具将尝试为您创建存储库路径。
使用 admintools create_db 工具创建数据库。必须向此工具传递以下实参:
一些常见的可选实参包括:
要查看 create_db 工具的所有实参,请运行以下命令:
admintools -t create_db --help
以下示例演示了如何创建名为 verticadb 的三节点数据库,指定存储库将存储在 dbadmin 用户的主目录中。
$ admintools -t create_db -x bootstrap_params.conf \
--communal-storage-location=webhdfs://mycluster/verticadb \
--depot-path=/home/dbadmin/depot --shard-count=6 \
-s vnode01,vnode02,vnode03 -d verticadb -p 'YourPasswordHere'
如果不使用 HA 名称节点(例如在测试环境中),则可以使用显式名称节点主机和端口作为 --communal-storage-location,如下例所示。
$ admintools -t create_db -x bootstrap_params.conf \
--communal-storage-location=webhdfs://namenode.hadoop.example.com:50070/verticadb \
--depot-path=/home/dbadmin/depot --shard-count=6 \
-s vnode01,vnode02,vnode03 -d verticadb -p 'YourPasswordHere'
本节介绍的主题由 install_vertica
脚本自动执行,请参阅使用命令行安装。如果没有遇到任何安装问题,请转至管理员指南了解有关如何配置和运行数据库的说明。
Vertica 提供了多种可在部署 Vertica 之前使用的验证实用程序,以帮助确定主机和网络能否正确地处理 Vertica 所需的处理和网络流量。在遇到性能问题以及需要诊断问题时,也可以使用这些实用工具。
安装 Vertica RPM 之后,可以访问 /opt/vertica/bin
中的以下脚本:
Vcpuperf - 用于验证 CPU 性能的 CPU 性能测试。
Vioperf - 用于验证硬盘驱动器速度和一致性的输入/输出测试。
Vnetperf - 用于测试主机间网络延迟和吞吐量的网络测试。
这些实用工具可随时运行,但最适合在运行 install_vertica 脚本之前使用。
Vcpuperf 实用工具用于测量服务器的 CPU 处理速度并将其与通用服务器 CPU 基准进行比较。该实用工具会执行 CPU 测试,并测量完成测试所需的时间。测试的评分越低,CPU 的性能越好。
Vcpuperf 实用工具还会检查高负载时间和低负载时间,以确定是否启用了 CPU 限制。如果服务器的低负载计算时间明显比高负载计算时间长,则可能已启用 CPU 限制。CPU 限制是一项节能功能。但 CPU 限制可能会降低服务器的性能。Vertica 建议禁用 CPU 限制以增强服务器性能。
vcpuperf [-q]
CPU 时间:CPU 运行测试所花费的时间量。
实际时间:执行测试的总时间。
高负载时间:在模拟高 CPU 负载时运行负载测试的时间量。
低负载时间:在模拟低 CPU 负载时运行负载测试的时间量。
以下示例显示了在已启用 CPU 限制的 Xeon 5670 CPU 上,CPU 以稍慢于预期速度的速度运行。
[root@node1 bin]# /opt/vertica/bin/vcpuperf
Compiled with: 4.1.2 20080704 (Red Hat 4.1.2-52) Expected time on Core 2, 2.53GHz: ~9.5s
Expected time on Nehalem, 2.67GHz: ~9.0s
Expected time on Xeon 5670, 2.93GHz: ~8.0s
This machine's time:
CPU Time: 8.540000s
Real Time:8.710000s
Some machines automatically throttle the CPU to save power.
This test can be done in <100 microseconds (60-70 on Xeon 5670, 2.93GHz).
Low load times much larger than 100-200us or much larger than the corresponding high load time
indicate low-load throttling, which can adversely affect small query / concurrent performance.
This machine's high load time: 67 microseconds.
This machine's low load time: 208 microseconds.
vioperf
实用工具会快速测试主机的输入和输出子系统的性能。该实用工具将执行下列测试:
顺序写入
顺序重写
顺序读取
跳过读取(读取非相邻数据块)
该实用工具会验证主机读取的字节数与写入的字节数是否相同,并将其输出打印到 STDOUT。该实用工具还会将输出记录到 JSON 格式的文件中。
对于 HDFS 中的数据,该实用程序虽然进行测试,但不会写入。
vioperf [--help] [--duration=<INTERVAL>] [--log-interval=<INTERVAL>]
[--log-file=<FILE>] [--condense-log] [--thread-count=<N>] [--max-buffer-size=<SIZE>]
[--preserve-files] [--disable-crc] [--disable-direct-io] [--debug]
[<DIR>*]
在群集的所有节点上以并发方式同时进行全双工(读取和写入)IO 时,每个节点上的每个物理处理器核心要求的最低 I/O 性能为 20 MB/s 读/写。
建议的 I/O 是每个节点上每个物理内核 40 MB/s。
对于具有 2 个超线程六核 CPU(12 个物理内核)的节点,要求的最低 I/O 速率为 240 MB/s。Vertica 建议 480 MB/s。
例如,对于具有 2 个超线程六核心 CPU(12 个物理核心)的节点而言,要求的最低 I/O 速率为 240 MB/s,建议速率为 480 MB/s。
vioperf
大约需要 4.5 GB 空间才能运行。
该实用工具返回以下信息:
从终端调用 vioperf
将会输出以下消息和示例结果:
[dbadmin@v_vmart_node0001 ~]$ /opt/vertica/bin/vioperf --duration=60s
The minimum required I/O is 20 MB/s read and write per physical processor core on each node, in full duplex
i.e. reading and writing at this rate simultaneously, concurrently on all nodes of the cluster.
The recommended I/O is 40 MB/s per physical core on each node.
For example, the I/O rate for a server node with 2 hyper-threaded six-core CPUs is 240 MB/s required minimum, 480 MB/s recommended.
Using direct io (buffer size=1048576, alignment=512) for directory "/home/dbadmin"
test | directory | counter name | counter value | counter value (10 sec avg) | counter value/core | counter value/core (10 sec avg) | thread count | %CPU | %IO Wait | elapsed time (s)| remaining time (s)
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Write | /home/dbadmin | MB/s | 420 | 420 | 210 | 210 | 2 | 89 | 10 | 10 | 5
Write | /home/dbadmin | MB/s | 412 | 396 | 206 | 198 | 2 | 89 | 9 | 15 | 0
ReWrite | /home/dbadmin | (MB-read+MB-write)/s | 150+150 | 150+150 | 75+75 | 75+75 | 2 | 58 | 40 | 10 | 5
ReWrite | /home/dbadmin | (MB-read+MB-write)/s | 158+158 | 172+172 | 79+79 | 86+86 | 2 | 64 | 33 | 15 | 0
Read | /home/dbadmin | MB/s | 194 | 194 | 97 | 97 | 2 | 69 | 26 | 10 | 5
Read | /home/dbadmin | MB/s | 192 | 190 | 96 | 95 | 2 | 71 | 27 | 15 | 0
SkipRead | /home/dbadmin | seeks/s | 659 | 659 | 329.5 | 329.5 | 2 | 2 | 85 | 10 | 5
SkipRead | /home/dbadmin | seeks/s | 677 | 714 | 338.5 | 357 | 2 | 2 | 59 | 15 | 0
vnetperf 实用程序测量数据库主机的网络性能,以及 TCP 和 UDP 协议的网络延迟和吞吐量。
此实用程序有助于识别以下问题:
所有主机或一个主机的吞吐量低
所有主机或一个主机的延迟高
一个或多个主机或子网之间存在瓶颈
可同时建立的 TCP 连接数限制过低
网络丢包率高
vnetperf [[options](#Options)] [[tests](#Tests)]
vnetperf 可以指定以下一项或多项测试。如果未指定任何测试,vnetperf 将运行所有测试。将为每个主机打印测试结果。
建议的最大 RTT(往返时间)延迟为 1000 微秒。理想的 RTT 延迟为 200 微秒或更低。Vertica 建议时钟偏差在 1 秒以下。
建议的最小吞吐量为 100 MB/s。理想的吞吐量为 800 MB/s 或更高。
$ vnetperf latency tcp-throughput
The maximum recommended rtt latency is 2 milliseconds. The ideal rtt latency is 200 microseconds or less. It is recommended that clock skew be kept to under 1 second.
test | date | node | index | rtt latency (us) | clock skew (us)
-------------------------------------------------------------------------------------------------------------------------
latency | 2022-03-29_10:23:55,739 | 10.20.100.247 | 0 | 49 | 3
latency | 2022-03-29_10:23:55,739 | 10.20.100.248 | 1 | 272 | -702
latency | 2022-03-29_10:23:55,739 | 10.20.100.249 | 2 | 245 | 1037
The minimum recommended throughput is 100 MB/s. Ideal throughput is 800 MB/s or more. Note: UDP numbers may be lower, multiple network switches may reduce performance results.
date | test | rate limit (MB/s) | node | MB/s (sent) | MB/s (rec) | bytes (sent) | bytes (rec) | duration (s)
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
2022-03-29_10:23:55,742 | tcp-throughput | 32 | 10.20.100.247 | 30.579 | 30.579 | 32112640 | 32112640 | 1.00151
2022-03-29_10:23:55,742 | tcp-throughput | 32 | 10.20.100.248 | 30.5791 | 30.5791 | 32112640 | 32112640 | 1.0015
2022-03-29_10:23:55,742 | tcp-throughput | 32 | 10.20.100.249 | 30.5791 | 30.5791 | 32112640 | 32112640 | 1.0015
2022-03-29_10:23:55,742 | tcp-throughput | 32 | average | 30.579 | 30.579 | 32112640 | 32112640 | 1.0015
2022-03-29_10:23:57,749 | tcp-throughput | 64 | 10.20.100.247 | 61.0952 | 61.0952 | 64094208 | 64094208 | 1.00049
2022-03-29_10:23:57,749 | tcp-throughput | 64 | 10.20.100.248 | 61.096 | 61.096 | 64094208 | 64094208 | 1.00048
2022-03-29_10:23:57,749 | tcp-throughput | 64 | 10.20.100.249 | 61.0952 | 61.0952 | 64094208 | 64094208 | 1.00049
2022-03-29_10:23:57,749 | tcp-throughput | 64 | average | 61.0955 | 61.0955 | 64094208 | 64094208 | 1.00048
2022-03-29_10:23:59,753 | tcp-throughput | 128 | 10.20.100.247 | 122.131 | 122.131 | 128122880 | 128122880 | 1.00046
2022-03-29_10:23:59,753 | tcp-throughput | 128 | 10.20.100.248 | 122.132 | 122.132 | 128122880 | 128122880 | 1.00046
2022-03-29_10:23:59,753 | tcp-throughput | 128 | 10.20.100.249 | 122.132 | 122.132 | 128122880 | 128122880 | 1.00046
2022-03-29_10:23:59,753 | tcp-throughput | 128 | average | 122.132 | 122.132 | 128122880 | 128122880 | 1.00046
2022-03-29_10:24:01,757 | tcp-throughput | 256 | 10.20.100.247 | 243.819 | 244.132 | 255754240 | 256081920 | 1.00036
2022-03-29_10:24:01,757 | tcp-throughput | 256 | 10.20.100.248 | 244.125 | 243.282 | 256049152 | 255164416 | 1.00025
2022-03-29_10:24:01,757 | tcp-throughput | 256 | 10.20.100.249 | 244.172 | 243.391 | 256114688 | 255295488 | 1.00032
2022-03-29_10:24:01,757 | tcp-throughput | 256 | average | 244.039 | 243.601 | 255972693 | 255513941 | 1.00031
2022-03-29_10:24:03,761 | tcp-throughput | 512 | 10.20.100.247 | 337.232 | 485.247 | 355893248 | 512098304 | 1.00645
2022-03-29_10:24:03,761 | tcp-throughput | 512 | 10.20.100.248 | 446.16 | 231.001 | 467894272 | 242253824 | 1.00013
2022-03-29_10:24:03,761 | tcp-throughput | 512 | 10.20.100.249 | 349.667 | 409.961 | 368476160 | 432013312 | 1.00497
2022-03-29_10:24:03,761 | tcp-throughput | 512 | average | 377.686 | 375.403 | 397421226 | 395455146 | 1.00385
2022-03-29_10:24:05,772 | tcp-throughput | 640 | 10.20.100.247 | 328.279 | 509.256 | 383975424 | 595656704 | 1.11548
2022-03-29_10:24:05,772 | tcp-throughput | 640 | 10.20.100.248 | 505.626 | 217.217 | 532250624 | 228655104 | 1.00389
2022-03-29_10:24:05,772 | tcp-throughput | 640 | 10.20.100.249 | 390.355 | 474.89 | 410812416 | 499777536 | 1.00365
2022-03-29_10:24:05,772 | tcp-throughput | 640 | average | 408.087 | 400.454 | 442346154 | 441363114 | 1.04101
2022-03-29_10:24:07,892 | tcp-throughput | 768 | 10.20.100.247 | 300.5 | 426.762 | 318734336 | 452657152 | 1.01154
2022-03-29_10:24:07,892 | tcp-throughput | 768 | 10.20.100.248 | 268.252 | 402.891 | 283017216 | 425066496 | 1.00616
2022-03-29_10:24:07,892 | tcp-throughput | 768 | 10.20.100.249 | 510.569 | 243.649 | 535592960 | 255590400 | 1.00042
2022-03-29_10:24:07,892 | tcp-throughput | 768 | average | 359.774 | 357.767 | 379114837 | 377771349 | 1.00604
2022-03-29_10:24:09,911 | tcp-throughput | 1024 | 10.20.100.247 | 304.545 | 444.261 | 334987264 | 488669184 | 1.049
2022-03-29_10:24:09,911 | tcp-throughput | 1024 | 10.20.100.248 | 422.246 | 192.773 | 474284032 | 216530944 | 1.07121
2022-03-29_10:24:09,911 | tcp-throughput | 1024 | 10.20.100.249 | 353.206 | 446.809 | 378732544 | 479100928 | 1.0226
2022-03-29_10:24:09,911 | tcp-throughput | 1024 | average | 359.999 | 361.281 | 396001280 | 394767018 | 1.0476
2022-03-29_10:24:11,988 | tcp-throughput | 2048 | 10.20.100.247 | 343.324 | 414.559 | 387710976 | 468156416 | 1.07697
2022-03-29_10:24:11,988 | tcp-throughput | 2048 | 10.20.100.248 | 292.44 | 246.254 | 308314112 | 259620864 | 1.00544
2022-03-29_10:24:11,988 | tcp-throughput | 2048 | 10.20.100.249 | 437.559 | 405.02 | 459145216 | 425000960 | 1.00072
2022-03-29_10:24:11,988 | tcp-throughput | 2048 | average | 357.774 | 355.278 | 385056768 | 384259413 | 1.02771
JSON results available at: ./results.2022-03-29_10:23:51,548.json
管理帐户必须能够使用安全 Shell (SSH) 登录 (ssh) 所有主机,而无需指定密码。Shell 脚本 install_vertica 可自动执行此操作。本节说明如何在必要时手动执行该操作。
如果尚未在所有主机上安装 SSH,则立即以 root 用户身份登录每个主机并安装 SSH。可以从 OpenSSH 下载免费版本的 SSH 连接工具。
登录到 Vertica 管理员帐户(在此示例中为 dbadmin)。
将主目录 (~) 设为仅可供您自己写入。选择以下命令之一:
$ chmod 700 ~
或
$ chmod 755 ~
其中:
更改至主目录:
$ cd ~
生成私钥/公钥对:
$ ssh-keygen -t rsaGenerating public/private rsa key pair.
Enter file in which to save the key (/home/dbadmin/.ssh/id_rsa):
Created directory '/home/dbadmin/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/dbadmin/.ssh/id_rsa.
Your public key has been saved in /home/dbadmin/.ssh/id_rsa.pub.
将 .ssh 目录设为仅可供您自己读取和写入:
$ chmod 700 ~/.ssh
更改至 .ssh 目录:
$ cd ~/.ssh
将文件 id_rsa.pub
复制到文件 authorized_keys2
。
$ cp id_rsa.pub authorized_keys2
将 .ssh 目录中的文件设为仅可供您自己读取和写入:
$ chmod 600 ~/.ssh/*
对于每个群集主机:
$ scp -r ~/.ssh <host>:.
连接到每个群集主机。首次通过 ssh 连接到新的远程计算机时,可能收到与以下类似的消息:
$ ssh dev0 Warning: Permanently added 'dev0,192.168.1.92' (RSA) to the list of known hosts.
仅在首次通过 ssh 连接到特定远程主机时显示此消息。
本节介绍的任务为可选任务,目的是方便用户使用本产品。完成本节的任务后,继续执行以下任务之一:
此部分中的主题适用于本地安装的 Vertica 群集。有关创建在各种云平台上运行的 Vertica 群集的信息,请参阅使用用于云的 vertica。
如果您在安装过程中未提供 -L
参数,或者如果您未绕过静默安装的 -L
参数,则您首次以
数据库超级用户身份登录并运行 Vertica
管理工具或管理控制台时,Vertica 要求您安装许可证密钥。
按照《管理员指南》的管理许可证中的说明进行操作。
在非群集 Linux 主机上,您可以使用 Vertica vsql 可执行映像连接到 Vertica 数据库。
在 Red Hat、CentOS 和 SUSE 系统上,您可以安装包括 vsql 可执行文件的客户端驱动程序 RPM。有关详细信息,请参阅安装 vsql 客户端。
如果非群集主机与群集主机运行的 Linux 版本相同,请将映像文件复制到远程系统。例如:
$ scp host01:/opt/vertica/bin/vsql .$ ./vsql
如果非群集主机运行的 Linux 发行版或版本与群集主机不同,则必须安装 Vertica 服务器 RPM 才能获取 vsql:
通过浏览到 Vertica 网站下载相应的 RPM 包。在支持 (Support) 选项卡上,选择客户下载 (Customer Downloads)。
如果您下载 RPM 所用的系统不是非群集主机,请将文件传输到非群集主机。
以 root 身份登录到非群集主机,并使用以下命令安装 RPM 包:
# rpm -Uvh filename
其中,*filename * 是所下载的包。请注意,要使用 vsql,您无需在非群集主机上运行 install_vertica
脚本。
使用与群集主机相同的命令行选项。
不能在 Cygwin bash shell (Windows) 上运行 vsql。请使用 ssh 连接到群集主机,然后再运行 vsql。
Vsql 也可用于其他平台。请参阅安装 vsql 客户端。
安装 Vertica 之后,在计划从中访问数据库的客户端系统上安装驱动程序。Vertica 提供了适用于 ADO.NET、JDBC、ODBC、OLE DB、Perl 和 Python 的驱动程序。有关安装这些驱动程序的说明,请参阅客户端驱动程序。
您可以在企业模式或 Eon 模式下创建数据库。创建数据库后,无论模式如何,功能都基本相同。这两种模式的区别在于它们的架构、部署和可扩展性。
企业模式 数据库架构跨本地节点分发数据,并在本地或云端工作。考虑在预定大小的群集中以这种模式创建数据库,这有利于快速运行大型查询。由于它在本地持久存储其数据,因此您无需访问 Amazon S3 上的公共存储即可使用企业模式数据库。企业模式概念包括数据存储如何在企业模式下运行的数据库中工作的概述。
Eon 模式 数据库架构利用了 EC2 实例的灵活性和 Amazon S3 的持久性。当您想要频繁扩展群集以运行多个短的并发查询时,Eon 模式数据库是理想的选择。由于 Eon 模式数据库将其数据存储在其本地节点之外的持久位置,因此您可以快速调整群集的大小,且这样做时不会中断正在进行的工作负载。(有关 Eon 模式数据库概念的详细信息,请参阅 Eon 模式。)
将 Vertica 的计算过程与其存储层分离,使您能够随着工作负载的变化快速扩展 Eon Mode 数据库;在 Eon 模式下,扩展群集意味着数据库可以增加您可以同时运行的查询数量。您只能在 Amazon Web Services 上运行 Eon 模式。
在以下情况下,以 Eon 模式运行 Vertica 可能是一个不错的选择:
您正在 AWS 云中部署 Vertica。
您有可变的工作负载,有时需要一些简短的同时查询。
您需要弹性扩展您的数据库资源。
您可以使用 Vertica 管理控制台提供的 Amazon CloudFormation 模板和浏览器内向导安装具有 Eon 模式的 Vertica。有关详细信息,请参阅用于 Amazon Web Services 的 Vertica和使用 MC 在 AWS 中创建 Eon 模式数据库。
要在完成安装后立即开始使用 Vertica,请创建一个数据库。可以使用 Administration Tools 或管理控制台。要使用 MC 创建数据库,请参考使用 MC 创建数据库。
有关数据库创建步骤的更详细演练,请参阅创建数据库。
安装 Vertica 后,按照以下步骤首次使用管理工具开始创建数据库。
以数据库管理员身份登录,然后键入 admintools
以启动 Administration Tools。
当打开 EULA(最终用户协议)窗口时,键入 accept
以继续。此时会显示窗口,请求从 Vertica 网站下载的许可证密钥文件的位置。默认路径是 /tmp/vlicense.dat
。
如果正在使用 Vertica 社区版,则单击确定 (OK),而无需输入许可证密钥。
如果正在使用 Vertica 高级版,则键入许可证密钥的绝对路径(例如 /tmp/vlicense.dat
),然后单击确定 (OK)。
从 Administration Tools 主菜单 (Main Menu) 中,单击配置菜单 (Configuration Menu),然后单击确定 (OK)。
单击创建数据库 (Create Database),然后单击确定 (OK),启动数据库创建向导。
有关为企业模式和 Eon 模式数据库创建数据库的详细演练,请参阅创建数据库。
升级通常采用增量式:必须升级到中间的每个主要和次要版本。以 Vertica 9.0 升级到 10.1 为例,操作步骤如下:
Vertica 9.0 到 9.1
Vertica 9.1 到 9.2
Vertica 9.2 到 9.3
Vertica 9.3 到 10.0
Vertica 10.0 到 10.1
如果从启用了 FIPS 的 Vertica 9.2.x 数据库升级到 10.1.1,并且希望维护 FIPS 认证,则必须执行直接升级。有关说明,请参阅非连续 FIPS 数据库升级。
请务必阅读路径中每个版本的发行说明和新功能。当前 Vertica 版本的文档可以在以下位置找到:RPM 和 https://docs.vertica.com/latest。该 URL 还可以访问早期版本的文档。
如需从不受支持的版本进行升级的指导,请联系 Vertica 技术支持。
从 Vertica 10.1.1 开始,已恢复 FIPS 支持。在此之前,支持 FIPS 的最后一个版本是 Vertica 9.2.x。Vertica 升级通常采取连续的方式,但如果从 9.2.x 升级并且希望维护 FIPS 认证,则必须首先执行从 9.2.x 到 10.1.1 的直接非连续升级,然后再执行从 10.1.1 到 12.0.x 的标准连续升级。
以下过程执行从 RHEL 6.x 上运行的 Vertica 9.2.x 到 RHEL 8.1 上运行的 Vertica 10.1.1 的直接升级。
为 Vertica 9.2.x 数据库创建完整备份。此示例使用的是配置文件 fullRestore.ini
。
$ vbr --config-file=/tmp/fullRestore.ini -t init
$ vbr --config-file=/tmp/fullRestore.ini -t backup
[Transmission]
concurrency_backup = 1
port_rsync = 50000
encrypt = False
serviceAccessPass = rsyncpw
hardLinkLocal = False
checksum = False
total_bwlimit_restore = 0
serviceAccessUser = rsyncuser
total_bwlimit_backup = 0
concurrency_restore = 1
[Misc]
snapshotName = full_restore
restorePointLimit = 1
retryDelay = 1
objects =
retryCount = 0
tempDir = /tmp/vbr
[Mapping]
v_fips_db_node0001 = 198.51.100.0:/home/release/backup/
v_fips_db_node0002 = 198.51.100.1:/home/release/backup/
v_fips_db_node0003 = 198.51.100.2:/home/release/backup/
[Database]
dbPort = 5433
dbPromptForPassword = False
dbUser =
dbPassword =
dbName = fips_db
正常关闭数据库。在得到指示之前,不要启动数据库。
通过以下方法之一获取 RHEL 8.1 群集:
在 RHEL 8.1 计算机上启用 FIPS 并重新引导。
$ fips-mode-setup --enable
在 RHEL 8.1 群集上安装 Vertica 10.1.1。
$ install_vertica --hosts node0001, node0002, node0003 \
--rpm /tmp/vertica-10.1.1-0/x86_64.RHEL8.rpm
如果 RHEL 8.1 群集是通过重新映射映像或使用其他群集获取的,则必须还原数据库。
$ vbr -c /tmp/fullRestore.ini -t restore
如果遇到以下警告,可以放心地忽略。
Warning: Vertica versions do not match: v9.2.1-xx -> v10.1.1-xxxxxxxx. This operation may not be supported.
启动 Vertica 10.1.1 数据库以触发升级。这应该是在步骤 2 中关闭数据库后第一次启动数据库。
$ admintools -t start_db -d fips_db
在升级 Vertica 数据库之前,请执行以下步骤:
验证您是否有足够的 RAM 可用于运行升级。升级所需的内存量大约是数据库编录所用内存量的三倍。
您可以通过查询系统表 RESOURCE_POOL_STATUS 来计算所有节点上的编录内存使用情况:
=> SELECT node_name, pool_name, memory_size_kb FROM resource_pool_status WHERE pool_name = 'metadata';
执行完整的数据库备份。此预防措施让您可以在升级失败时还原当前版本。
确定您是否正在使用任何第三方用户定义的扩展库 (UDx)。已编译的 UDx 库(例如使用 C++ 或 Java 开发的库)可能需要使用新版本的 Vertica SDK 库重新编译才能与新版本的 Vertica 兼容。请参阅UDx 库与新服务器版本的兼容性。
确定并移除不受支持的投影。在高于 Vertica 9.0 的所有版本中,已移除对具有不同 SELECT 和 ORDER BY 子句的投影伙伴实例的支持。对预联接和范围分段投影的支持也已被移除。如果升级遇到不受支持的投影,很可能会失败。
如果从 Vertica 9.2.x 升级并且已设置 PasswordMinCharChange
或 PasswordMinLifeTime
系统级别安全参数,请记下它们的当前值。您将不得不再次设置这些参数(这次是在配置文件级别)以重现您的配置。要查看这些参数的当前值,请运行以下查询:
=> SELECT parameter_name,current_value from CONFIGURATION_PARAMETERS
WHERE parameter_name IN ('PasswordMinCharChange', 'PasswordMinLifeTime');
完成这些任务后,正常关闭数据库。
Vertica 安装程序会在运行时检查目标平台,并在确定平台无法满足安装要求时停止运行。在更新系统上的服务器软件包之前,请手动验证平台是否满足所有硬件和软件要求(请参阅平台要求和建议)。
默认情况下,安装程序将在出现所有警告时停止。您可以通过安装参数 --failure-threshold
配置安装程序停止安装的程度。如果将故障阈值设置为 FAIL
,则安装程序将忽略警告,仅在失败时停止运行。
从 9.1 版到 9.2 版,Vertica 已移除对以下投影的支持:
如果您从 9.1 之前的 Vertica 版本升级,请运行由 Vertica 提供的升级前脚本,检查您的数据库中是否存在不受支持的投影。如果您升级 Vertica 9.1 或更高版本,则不需要运行此脚本。此脚本检查您当前的数据库并将其分析和建议发送到标准输出。如果此脚本识别到不受支持的投影,则会列出它们。如果此脚本找到具有不同 SELECT 和 ORDER BY 子句的投影伙伴实例,它还会生成一个部署脚本。此脚本会对这些投影进行补救,使其符合系统 K-safety 的要求。
从以下位置下载升级前脚本 identify_unsupported_projections.sh
:
https://www.vertica.com/pre-upgrade-script/
Vertica 8.x 或更高版本
有足够的磁盘空间可用于存放生成的输出(磁盘空间因数据库大小不同而异,例如,如果编录大小 < 5GB,则为 4GB)。
已经为了处理脚本和 DDL 开销而增加了 SYSDATA
资源池的 maxmemorysize
。
群集中的所有节点都已启动。
在数据库运行时,在其服务器节点之一上执行升级前脚本:
./identify_unsupported_projections.sh
[ ‑U username ]
[ ‑w password ]
[ ‑p port ]
[ ‑d path ]
[ ‑s temp‑schema ]
参数
对安装的 Vertica 运行升级前脚本。
评估脚本输出中是否存在不受支持的投影。
如果检测到不受支持的投影,请执行以下一项或多项操作:
移除预联接和范围分段投影。
使用不同的 SELECT 和 ORDER BY 子句修复所有投影:运行部署脚本,或手动修改不合规的投影,以便所有伙伴实例都有相同的选择列表和排序。
再次运行升级前脚本,以确认所有问题都已解决。如果是这样,Vertica 将返回以下消息:
Congratulations! No unsafe projections detected
否则,重复步骤 2-4。
如果升级前脚本检测到具有不同 SELECT 和 ORDER BY 子句的投影伙伴实例,它会生成一个用于执行以下任务的部署脚本:
为不受支持的投影提供补救措施。
对不具有最新状态的新投影和现有投影进行刷新。
补救措施因投影类型不同而异:
REFRESH
。
REFRESH
通过复制其源伙伴实例的存储容器来填充新的投影伙伴。
如果升级由于不受支持的投影而失败,则必须恢复到以前的 Vertica 安装:
使用此处记录的命令确定升级前有多少编录空间可用。这有助于确定更新后的编录可能占用多少空间。
对编录当前使用的空间大小与同一目录中的可用空间大小进行比较:
使用 du
命令确定编录目录当前使用的空间大小:
$ du -s -BG v_vmart_node0001_catalog
2G v_vmart_node0001_catalog
确定同一目录中有多少空间可用:
$ df -BG v_vmart_node0001_catalog
Filesystem 1G-blocks Used Available Use% Mounted on
/dev/sda2 48G 19G 26G 43% /
如果从 9.1.0 之前的版本升级并且:
您的数据库具有基于 ORC 或 Parquet 文件的外部表(无论是存储在 Vertica 群集本地还是存储 Hadoop 群集上)
您的 Vertica 许可证有原始数据限额
在升级之前按照本主题中的步骤进行操作。
Vertica 许可证可以包括原始数据限额。自 2016 年以来,Vertica 许可证允许您在外部表中使用 ORC 和 Parquet 数据。此数据始终计入您许可证中的任何原始数据限额。以前,ORC 和 Parquet 格式的数据审核通过手动方式加以处理。由于此审核并非自动运行,因此原生表和外部表中的数据总量可能会在一段时间内偷偷超过您的许可限额。
从版本 9.1.0 开始,Vertica 将自动审核外部表中的 ORC 和 Parquet 数据。此审核在您安装或升级到版本 9.1.0 后立即开始。如果 Vertica 许可证包含原始数据限额,且您在基于 Parquet 或 ORC 文件的外部表中有数据,请在升级到 Vertica 9.1.x 之前检查您的许可证合规性。验证数据库是否遵循许可条款,可避免数据库在升级后很快变得不合规。
要验证您的数据使用是否符合许可证要求,请以数据库管理员身份运行以下查询:
SELECT (database_size_bytes + file_size_bytes) <= license_size_bytes
"license_compliant?"
FROM (SELECT database_size_bytes,
license_size_bytes FROM license_audits
WHERE audited_data='Total'
ORDER BY audit_end_timestamp DESC LIMIT 1) dbs,
(SELECT sum(total_file_size_bytes) file_size_bytes
FROM external_table_details
WHERE source_format IN ('ORC', 'PARQUET')) ets;
此查询将返回以下三个值之一:
如果您没有 ORC 或 Parquet 格式的外部数据,则此查询返回 0 行:
license_compliant?
--------------------
(0 rows)
在这种情况下,可以继续升级。
如果基于 ORC 或 Parquet 格式的外部表中有数据,并且该数据不会导致您的数据库超出原始数据限额,则此查询返回 t:
license_compliant?
--------------------
t
(1 row)
在这种情况下,可以继续升级。
如果基于 ORC 和 Parquet 的外部表中的数据导致您的数据库超出原始数据限额,则查询返回 f:
license_compliant?
--------------------
f
(1 row)
在这种情况下,请在升级之前解决合规问题。有关详细信息,请参阅下文。
如果上一部分中的查询表明您的数据库不符合许可证要求,您应该在升级之前解决此问题。可通过以下两种方法使您的数据库合规:
联系 Vertica 将您的许可证升级到更大的数据大小限额。 请参阅获取许可证密钥文件。
(从基于 ORC 和 Parquet 的外部表或 Vertica 原生表中)删除数据,使您的数据大小符合许可证要求。您始终应该备份即将从 Vertica 中删除的所有数据。丢弃外部表是用来缩小数据库的具有较小破坏性的方法,因为数据不会丢失 — 它仍然位于外部表所基于的文件中。
升级后,如果 UDx 库的原型发生更改,Vertica 将丢弃对这些库的授权,因为它们在技术上不再具有相同的功能。要解决这些类型的问题,最佳实践是备份对这些库的授权,以便可以在升级后还原它们。
将以下 SQL 保存到名为 user_ddl.sql
的文件中。它创建一个名为 user_ddl 的视图,其中包含对数据库中所有对象的授权。
CREATE OR REPLACE VIEW user_ddl AS
(
SELECT 0 as grant_order,
name principal_name,
'CREATE ROLE "' || name || '"' || ';' AS sql,
'NONE' AS object_type,
'NONE' AS object_name
FROM v_internal.vs_roles vr
WHERE NOT vr.predefined_role -- Exclude system roles
AND ldapdn = '' -- Limit to NON-LDAP created roles
)
UNION ALL
(
SELECT 1, -- CREATE USERs
user_name,
'CREATE USER "' || user_name || '"' ||
DECODE(is_locked, TRUE, ' ACCOUNT LOCK', '') ||
DECODE(grace_period, 'undefined', '', ' GRACEPERIOD ''' || grace_period || '''') ||
DECODE(idle_session_timeout, 'unlimited', '', ' IDLESESSIONTIMEOUT ''' || idle_session_timeout || '''') ||
DECODE(max_connections, 'unlimited', '', ' MAXCONNECTIONS ' || max_connections || ' ON ' || connection_limit_mode) ||
DECODE(memory_cap_kb, 'unlimited', '', ' MEMORYCAP ''' || memory_cap_kb || 'K''') ||
DECODE(profile_name, 'default', '', ' PROFILE ' || profile_name) ||
DECODE(resource_pool, 'general', '', ' RESOURCE POOL ' || resource_pool) ||
DECODE(run_time_cap, 'unlimited', '', ' RUNTIMECAP ''' || run_time_cap || '''') ||
DECODE(search_path, '', '', ' SEARCH_PATH ' || search_path) ||
DECODE(temp_space_cap_kb, 'unlimited', '', ' TEMPSPACECAP ''' || temp_space_cap_kb || 'K''') || ';' AS sql,
'NONE' AS object_type,
'NONE' AS object_name
FROM v_catalog.users
WHERE NOT is_super_user -- Exclude database superuser
AND ldap_dn = '' -- Limit to NON-LDAP created users
)
UNION ALL
(
SELECT 2, -- GRANTs
grantee,
'GRANT ' || REPLACE(TRIM(BOTH ' ' FROM words), '*', '') ||
CASE
WHEN object_type = 'RESOURCEPOOL' THEN ' ON RESOURCE POOL '
WHEN object_type = 'STORAGELOCATION' THEN ' ON LOCATION '
WHEN object_type = 'CLIENTAUTHENTICATION' THEN 'AUTHENTICATION '
WHEN object_type IN ('DATABASE', 'LIBRARY', 'MODEL', 'SEQUENCE', 'SCHEMA') THEN ' ON ' || object_type || ' '
WHEN object_type = 'PROCEDURE' THEN (SELECT ' ON ' || CASE REPLACE(procedure_type, 'User Defined ', '')
WHEN 'Transform' THEN 'TRANSFORM FUNCTION '
WHEN 'Aggregate' THEN 'AGGREGATE FUNCTION '
WHEN 'Analytic' THEN 'ANALYTIC FUNCTION '
ELSE UPPER(REPLACE(procedure_type, 'User Defined ', '')) || ' '
END
FROM vs_procedures
WHERE proc_oid = object_id)
WHEN object_type = 'ROLE' THEN ''
ELSE ' ON '
END ||
NVL2(object_schema, object_schema || '.', '') || CASE WHEN object_type = 'STORAGELOCATION' THEN (SELECT '''' || location_path || ''' ON ' || node_name FROM storage_locations WHERE location_id = object_id) ELSE object_name END ||
CASE
WHEN object_type = 'PROCEDURE' THEN (SELECT CASE WHEN procedure_argument_types = '' OR procedure_argument_types = 'Any' THEN '()' ELSE '(' || procedure_argument_types || ')' END
FROM vs_procedures
WHERE proc_oid = object_id)
ELSE ''
END ||
' TO ' || grantee ||
CASE WHEN INSTR(words, '*') > 0 THEN ' WITH GRANT OPTION' ELSE '' END
|| ';',
object_type,
object_name
FROM (SELECT grantee, object_type, object_schema, object_name, object_id,
v_txtindex.StringTokenizerDelim(DECODE(privileges_description, '', ',' , privileges_description), ',')
OVER (PARTITION BY grantee, object_type, object_schema, object_name, object_id)
FROM v_catalog.grants) foo
ORDER BY CASE REPLACE(TRIM(BOTH ' ' FROM words), '*', '') WHEN 'USAGE' THEN 1 ELSE 2 END
)
UNION ALL
(
SELECT 3, -- Default ROLEs
user_name,
'ALTER USER "' || user_name || '"' ||
DECODE(default_roles, '', '', ' DEFAULT ROLE ' || REPLACE(default_roles, '*', '')) || ';' ,
'NONE' AS object_type,
'NONE' AS object_name
FROM v_catalog.users
WHERE default_roles <> ''
)
UNION ALL -- GRANTs WITH ADMIN OPTION
(
SELECT 4, user_name, 'GRANT ' || REPLACE(TRIM(BOTH ' ' FROM words), '*', '') || ' TO ' || user_name || ' WITH ADMIN OPTION;',
'NONE' AS object_type ,
'NONE' AS object_name
FROM (SELECT user_name, v_txtindex.StringTokenizerDelim(DECODE(all_roles, '', ',', all_roles), ',') OVER (PARTITION BY user_name)
FROM v_catalog.users
WHERE all_roles <> '') foo
WHERE INSTR(words, '*') > 0
)
UNION ALL
(
SELECT 5, 'public', 'ALTER SCHEMA ' || name || ' DEFAULT ' || CASE WHEN defaultinheritprivileges THEN 'INCLUDE PRIVILEGES;' ELSE 'EXCLUDE PRIVILEGES;' END, 'SCHEMA', name
FROM v_internal.vs_schemata
WHERE NOT issys -- Exclude system schemas
)
UNION ALL
(
SELECT 6, 'public', 'ALTER DATABASE ' || database_name || ' SET disableinheritedprivileges = ' || current_value || ';',
'DATABASE', database_name
FROM v_internal.vs_configuration_parameters
CROSS JOIN v_catalog.databases
WHERE parameter_name = 'DisableInheritedPrivileges'
)
UNION ALL -- TABLE PRIV INHERITENCE
(
SELECT 7, 'public' , 'ALTER TABLE ' || table_schema || '.' || table_name ||
CASE WHEN inheritprivileges THEN ' INCLUDE PRIVILEGES;' ELSE ' EXCLUDE PRIVILEGES;' END,
'TABLE' AS object_type,
table_schema || '.' || table_name AS object_name
FROM v_internal.vs_tables
JOIN v_catalog.tables ON (table_id = oid)
)
UNION ALL -- VIEW PRIV INHERITENCE
(
SELECT 8, 'public', 'ALTER VIEW ' || table_schema || '.' || table_name || CASE WHEN inherit_privileges THEN ' INCLUDE PRIVILEGES;' ELSE ' EXCLUDE PRIVILEGES; ' END,
'TABLE' AS object_type, table_schema || '.' || table_name AS object_name
FROM v_catalog.views
)
UNION ALL
(
SELECT 9, owner_name, 'ALTER TABLE ' || table_schema || '.' || table_name || ' OWNER TO ' || owner_name || ';',
'TABLE', table_schema || '.' || table_name
FROM v_catalog.tables
)
UNION ALL
(
SELECT 10, owner_name, 'ALTER VIEW ' || table_schema || '.' || table_name || ' OWNER TO ' || owner_name || ';', 'TABLE',
table_schema || '.' || table_name
FROM v_catalog.views
);
从 Linux 命令行,运行 user_ddl.sql
文件中的脚本:
$ vsql -f user_ddl.sql
CREATE VIEW
使用 vsql 连接到 Vertica。
将 user_ddl 的 sql 列(该列按 grant_order 列排序)的内容导出到一个文件:
=> \o pre-upgrade.txt
=> SELECT sql FROM user_ddl ORDER BY grant_order ASC;
=> \o
使用相同的命令选择该视图的 SQL 列并将其保存到不同的文件中。
=> \o post-upgrade.txt
=> SELECT sql FROM user_ddl ORDER BY grant_order ASC;
=> \o
区别 pre-upgrade.txt
和 post-upgrade.txt
。这会将丢失的授权收集到 grants-list.txt
中。
$ diff pre-upgrade.txt post-upgrade.txt > grants-list.txt
要还原丢失的任何授权,请运行 grants-list.txt
中的剩余授权(如果有):
=> \i 'grants-list.txt'
尝试使用 ANY 关键字还原对用户的授权会触发以下错误:
ERROR 4856: Syntax error at or near "Any" at character
为避免出现此错误,请使用 () 而不是 (ANY),如下例所示:
=> GRANT EXECUTE ON FUNCTION public.MapLookup() TO public;
GRANT PRIVILEGE
为升级路径中的每个版本重复执行以下过程:
执行现有数据库的完整备份。此预防措施让您在升级失败时能够从备份还原。如果升级失败,可以重新安装以前版本的 Vertica,并将数据库还原到该版本。
如果升级路径包含多个版本,请在第一次升级时创建完整备份。对于后续的每次升级,可以执行增量备份。但 Vertica 建议,如果磁盘空间和时间允许,每次升级前都执行完整备份。
使用 admintools 停止数据库。
在每个安装了额外软件包(例如 R 语言包)的主机上,卸载该软件包。例如:
rpm -e vertica-R-lang
确保您以 root 或 sudo 用户身份登录,并使用以下命令之一运行 RPM 软件包安装程序:
# rpm -Uvh pathname
$ sudo rpm -Uvh pathname
$ sudo dpkg -i pathname
在您刚刚安装 RPM 的同一节点上,以 root 或 sudo 用户身份运行 update_vertica
。这将在群集中的所有主机上安装 RPM。例如:
Red Hat 或 CentOS
# /opt/vertica/sbin/update_vertica --rpm /home/dbadmin/vertica-12.0.x.x86_64.RHEL6.rpm --dba-user mydba
Debian
# /opt/vertica/sbin/update_vertica --deb /home/dbadmin/vertica-amd64.deb --dba-user mydba
具有以下要求和限制:
在升级时,DBADMIN 用户必须能够读取 RPM 或 DEB 文件。一些升级脚本以 DBADMIN 用户身份运行,并且该用户必须能够读取 RPM 或 DEB 文件。
使用与上次安装或升级数据库时相同的选项。可以在 /opt/vertica/config/admintools.conf
的 install_opts
行上找到这些选项。有关所有选项的详细信息,请参阅使用安装脚本安装 Vertica。
省略
\--hosts/-s host-list
参数。升级脚本将自动识别群集主机。
如果 root 用户不在 /etc/sudoers 中,将显示错误。安装程序会以 S0311 报告此问题。有关详细信息,请参阅 Sudoers Manual。
启动数据库。启动脚本将分析数据库并为新版本执行任何必要的数据和编录更新。
如果 Vertica 发出警告,指示无法安装一个或多个软件包,请运行 admintools --force-reinstall
选项,强制重新安装这些软件包。有关详细信息,请参阅重新安装软件包。
升级完成后,数据库会自动重新启动。
再执行一次数据库备份。
持续时间取决于所有群集节点上编录的平均内存大小。对于每个 20GB 内存,升级大约持续一到两个小时时间。
您可以通过查询系统表 RESOURCE_POOL_STATUS 来计算所有节点上的编录内存使用情况:
=> SELECT node_name, pool_name, memory_size_kb FROM resource_pool_status WHERE pool_name = 'metadata';
升级完成后,请查看升级后中的升级后任务。
完成群集上 Vertica 服务器软件包的升级后,仍有许多任务。
如果您在早期版本中已使用预聚合数据创建投影(例如,LAP 和 TopK 投影)并且已使用 GROUP BY 子句对投影进行分区,则必须重新构建这些投影。
在每个节点上验证升级是否减少了数据库编录内存使用量。
验证您的数据库是否保留了升级之前的授权。有关详细信息,请参阅备份和还原授权。
重新安装软件包,例如升级前卸载的 R 语言包。对于每个软件包,请参阅其安装/升级说明。
如果升级无法安装一个或多个软件包,请使用 admintools 重新安装它们。
如果您安装的 Vertica 与 Hadoop 集成在一起,请升级 HCatalog 连接器。
导入从先前版本导出的定向查询。有关详细信息,请参阅“批量导出查询计划”和“从编录中导出定向查询”。
如果从 Vertica 9.2.x 升级并且已设置 PasswordMinCharChange
或 PasswordMinLifeTime
系统级别安全参数,请在配置文件级别再次设置它们。
如果您在早期版本(10.0.x 之前的版本)中已使用预聚合数据创建投影(例如,LAP 和 TopK 投影),并且已使用 GROUP BY 子句对锚表进行了分区,则它们的 ROS 容器很容易被各种 DML 和 ILM 操作损坏。在这种情况下,必须重新构建投影:
在数据库上运行元函数 REFRESH。如果 REFRESH 检测到投影存在问题,将返回故障消息。例如:
=> SELECT REFRESH();
REFRESH
-----------------------------------------------------------------------------------------------------
Refresh completed with the following outcomes:
Projection Name: [Anchor Table] [Status] [ Refresh Method] [Error Count]
"public"."store_sales_udt_sum": [store_sales] [failed: Drop and recreate projection] [] [1]
"public"."product_sales_largest": [store_sales] [failed: Drop and recreate projection] [] [1]
"public"."store_sales_recent": [store_sales] [failed: Drop and recreate projection] [] [1]
(1 row)
Vertica 还会将消息记录到 vertica.log
:
2020-07-07 11:28:41.618 Init Session:ox7fabbbfff700-aoo000000oosbs [Txnl <INFO> Be in Txn: aoooooooooo5b5 'Refresh: Evaluating which projection to refresh'
2020-07-07 11:28:41.640 Init Session:ex7fabbbfff7oe-aooooeeeeoosbs [Refresh] <INFO> Storage issues detected, unable to refresh projection 'store_sales_recent'. Drop and recreate this projection, then refresh.
2020-07-07 11:28:41.641 Init Session:Ox7fabbbfff700-aooooeooooosbs [Refresh] <INFO> Storage issues detected, unable to refresh projection 'product_sales_largest'. Drop and recreate this projection, then refresh.
2020-07-07 11:28:41.641 Init Session:Ox7fabbbfff700-aeoeeeaeeeosbs [Refresh] <INFO> Storage issues detected, unable to refresh projection 'store_sales_udt_sum'. Drop and recreate this projection, then refresh.
使用 EXPORT_OBJECTS 或 EXPORT_TABLES 导出这些投影的 DDL。
丢弃这些投影,然后按照导出的 DDL 中的定义重新创建它们。
运行 REFRESH。Vertica 将使用新的存储容器重新构建这些投影。
Vertica 9.2 及更高版本显著降低了数据库编录消耗的内存量。升级后,检查每个节点上的编录内存消耗情况,以验证升级后重构的编录是否正确。如果给定编录的内存消耗与早期数据库中的内存消耗一样大或更大,请重新启动主机节点。
某些操作可能会显著增加编录内存消耗。例如:
在 9.1.1 数据库上创建了备份,并将对象从备份还原到 9.2 或更高版本的新数据库。
已从 9.1.1 数据库复制对象到版本 9.2 或更高版本的数据库。
要重构数据库编录并减少其内存占用,请重新启动数据库。
在大多数情况下,当您在运行升级脚本后首次重新启动数据库时,Vertica 会自动重新安装所有默认软件包。但是,一个或多个软件包有时可能会无法正确重新安装。
要验证 Vertica 是否已成功重新安装所有软件包:
在升级后重新安装数据库。
输入正确的密码。
如果任何软件包未能重新安装,Vertica 会发出一条消息,指明未安装的软件包。在这种情况下,请使用选项 --force-reinstall
运行 admintools 命令 install_package
:
$ admintools -t install_package -d db-name -p password -P pkg-spec --force-reinstall
强制重新安装默认软件包:
$ admintools -t install_package -d VMart -p 'password' -P default --force-reinstall
强制重新安装一个软件包,flextable
:
$ admintools -t install_package -d VMart -p 'password' -P flextable --force-reinstall
Vertica 在内部将物理表数据与捆绑包内容的元数据一起存储在捆绑包中。查询优化器使用捆绑包元数据来查找和提取给定查询所需的数据。
Vertica 将捆绑包元数据存储在数据库编录中。这在 Eon 模式中特别有用:优化器可以在本地编录中找到此元数据,而不是从远程 (S3) 存储中提取它。这最大限度地减少了 S3 读取,并促进了更快的查询计划和整体执行。
Vertica 在以下两种情况下将捆绑包元数据写入编录:
更改表内容的任何 DML 操作,例如 INSERT
、UPDATE
或 COPY
。Vertica 将捆绑包元数据写入新的或已更改的表数据的编录中。DML 操作对现有表数据的捆绑包元数据没有影响。
对现有数据,作为 Vertica 元函数
DO_TM_TASK
的实参调用函数 UPDATE_STORAGE_CATALOG
。您可以将编录更新操作的范围缩小到特定的投影或表。如果未指定范围,则该操作将应用于整个数据库。
UPDATE_STORAGE_CATALOG
。所有新数据或更新数据的捆绑包元数据始终自动写入编录。
例如,以下 DO_TM_TASK
调用将捆绑包元数据写入表 store.store_sales_fact
中的所有投影上:
=> SELECT DO_TM_TASK ('update_storage_catalog', 'store.store_sales_fact');
do_tm_task
-------------------------------------------------------------------------------
Task: update_storage_catalog
(Table: store.store_sales_fact) (Projection: store.store_sales_fact_b0)
(Table: store.store_sales_fact) (Projection: store.store_sales_fact_b1)
(1 row)
您可以查询系统表
STORAGE_BUNDLE_INFO_STATISTICS
以确定哪些投影在数据库编录中具有无效捆绑包元数据。例如,以下查询的结果显示,数据库编录中的投影 inventory_fact_b0
和 inventory_fact_b1
元数据无效:
=> SELECT node_name, projection_name, total_ros_count, ros_without_bundle_info_count
FROM v_monitor.storage_bundle_info_statistics where ros_without_bundle_info_count > 0
ORDER BY projection_name, node_name;
node_name | projection_name | total_ros_count | ros_without_bundle_info_count
------------------+-------------------+-----------------+-------------------------------
v_vmart_node0001 | inventory_fact_b0 | 1 | 1
v_vmart_node0002 | inventory_fact_b0 | 1 | 1
v_vmart_node0003 | inventory_fact_b0 | 1 | 1
v_vmart_node0001 | inventory_fact_b1 | 1 | 1
v_vmart_node0002 | inventory_fact_b1 | 1 | 1
v_vmart_node0003 | inventory_fact_b1 | 1 | 1
(6 rows)
仅建议 Eon 用户使用 UPDATE_STORAGE_CATALOG
更新数据库编录。企业用户不太可能从该更新中看到明显的性能改进。
调用 UPDATE_STORAGE_CATALOG
可能会产生相当大的开销,因为更新过程通常需要大量代价高昂的 S3 读取。Vertica 建议不要对整个数据库运行此操作,而是考虑采用增量方法:
对单个大型事实表调用 UPDATE_STORAGE_CATALOG
。您可以使用性能度量来估计更新其他文件需要多少时间。
确定哪些表会受到频繁查询并相应地优先安排编录更新。
如果您已将 Vertica 与流式数据传输应用程序(例如 Apache Kafka)集成在一起,则必须在更新 Vertica 后更新流式数据传输调度程序实用程序。
在命令提示符下输入以下命令:
/opt/vertica/packages/kafka/bin/vkconfig scheduler --upgrade --upgrade-to-schema schema_name
多次运行升级任务没有效果。
有关调度程序实用程序的详细信息,请参考调度程序工具选项。
选择主机并以 root 用户身份登录(或以其他用户身份登录并切换到 root)。
$ su - root
password: root-password
查找安装的软件包名称:
RPM
# rpm -qa | grep vertica
DEB
# dpkg -l | grep vertica
移除软件包:
RPM
# rpm -e package
DEB
# dpkg -r package
/opt/vertica/
目录和所有子目录:
# rm -rf /opt/vertica/
删除 JDBC 驱动程序 jar 文件。
删除 ODBC 驱动程序数据源名称。
删除 ODBC 驱动程序软件:
在 Windows 中,转至开始 (Start) > 控制面板 (Control Panel) > 添加或删除程序 (Add or Remove Programs)。
找到 Vertica。
单击移除 (Remove)。
如果需要升级 Vertica 群集中节点上的操作系统,请查看与您的 Linux 发行版相对应的文档,以确保它们支持您计划的特定升级。
例如,以下文章提供了有关升级 Red Hat 的信息:
确认可以执行升级后,按照在 Vertica 群集中的节点上升级操作系统的最佳实践中的步骤进行操作。
Vertica 使用公共域 tz 数据库(时区数据库),其中包含表示全球各地当地时间历史记录的代码和数据。此数据库通过将世界划分为多个时区来对时区和夏令时数据进行组织,这些时区的时钟都一致采用晚于 POSIX 时期 (1970-01-01 00:00:00 UTC) 的时间戳。每个时区都有一个唯一的标识符。标识符通常遵循
区域/位置
的约定,其中区域是大陆或海洋,而位置是该区域内的特定位置——例如,非洲/开罗、美洲/纽约和太平洋/火奴鲁鲁。
Vertica 在每个节点上使用 TZ
环境变量(如果已设置)作为默认的当前时区。否则,Vertica 将使用操作系统时区。
TZ
变量可由操作系统在登录期间设置(请参见/etc/profile
、/etc/profile.d
或 /etc/bashrc
),或由用户在 .profile
、.bashrc
或 .bash-profile
中设置。 TZ
必须在启动 Vertica 时在每个节点上设置为相同的值。
以下命令将会返回数据库的当前时区:
=> SHOW TIMEZONE;
name | setting
----------+------------------
timezone | America/New_York
(1 row)
还可以使用 SET TIME ZONE 为单个会话设置时区。
数据库没有默认时区。TIMESTAMPTZ (TIMESTAMP WITH TIMEZONE) 数据从当前的本地时间转换而来,并以 GMT/UTC(格林威治标准时间/协调世界时)形式进行存储。
在使用 TIMESTAMPTZ 数据时,数据将恢复为当前本地时区,此时区与存储数据的本地时区可能不同。这种转换会考虑夏令时(夏季时间),具体取决于决定夏令时开始和结束的年份和日期。
TIMESTAMP WITHOUT TIMEZONE 数据则按原样存储时间戳,并完全按原样检索时间戳。将忽略当前时区。对于 TIME WITHOUT TIMEZONE 而言同样如此。但对于 TIME WITH TIMEZONE (TIMETZ),当前时区设置将与给定的时间一同存储,并且在检索时使用该时区。
TIMESTAMPTZ 在输入和输出时均使用当前时区,如以下示例所示:
=> CREATE TEMP TABLE s (tstz TIMESTAMPTZ);=> SET TIMEZONE TO 'America/New_York';
=> INSERT INTO s VALUES ('2009-02-01 00:00:00');
=> INSERT INTO s VALUES ('2009-05-12 12:00:00');
=> SELECT tstz AS 'Local timezone', tstz AT TIMEZONE 'America/New_York' AS 'America/New_York',
tstz AT TIMEZONE 'GMT' AS 'GMT' FROM s;
Local timezone | America/New_York | GMT
------------------------+---------------------+---------------------
2009-02-01 00:00:00-05 | 2009-02-01 00:00:00 | 2009-02-01 05:00:00
2009-05-12 12:00:00-04 | 2009-05-12 12:00:00 | 2009-05-12 16:00:00
(2 rows)
“Local timezone”列中的 -05
显示了以 EST 时区显示的数据,而 -04
则指示 EDT 时区。另外两列显示了指定时区的 TIMESTAMP WITHOUT TIMEZONE。
下一个示例显示了将当前时区更改为 GMT 会发生什么情况:
=> SET TIMEZONE TO 'GMT';=> SELECT tstz AS 'Local timezone', tstz AT TIMEZONE 'America/New_York' AS
'America/New_York', tstz AT TIMEZONE 'GMT' as 'GMT' FROM s;
Local timezone | America/New_York | GMT
------------------------+---------------------+---------------------
2009-02-01 05:00:00+00 | 2009-02-01 00:00:00 | 2009-02-01 05:00:00
2009-05-12 16:00:00+00 | 2009-05-12 12:00:00 | 2009-05-12 16:00:00
(2 rows)
“Local timezone”列中的 +00 指示 TIMESTAMPTZ 显示为 GMT 时区。
使用 TIMESTAMPTZ 字段记录事件的方法将会捕获事件的 GMT(表示为本地时区的形式)。之后,它允许通过设置本地时区或指定明确的 AT TIMEZONE 语句,轻松地转换为其他任何时区。
以下示例显示了 TIMESTAMP WITHOUT TIMEZONE 字段在 Vertica 中的使用方法。
=> CREATE TEMP TABLE tnoz (ts TIMESTAMP);=> INSERT INTO tnoz VALUES('2009-02-01 00:00:00');
=> INSERT INTO tnoz VALUES('2009-05-12 12:00:00');
=> SET TIMEZONE TO 'GMT';
=> SELECT ts AS 'No timezone', ts AT TIMEZONE 'America/New_York' AS
'America/New_York', ts AT TIMEZONE 'GMT' AS 'GMT' FROM tnoz;
No timezone | America/New_York | GMT
---------------------+------------------------+------------------------
2009-02-01 00:00:00 | 2009-02-01 05:00:00+00 | 2009-02-01 00:00:00+00
2009-05-12 12:00:00 | 2009-05-12 16:00:00+00 | 2009-05-12 12:00:00+00
(2 rows)
时间戳末尾的 +00
指示,该设置是以 GMT 形式(当前时区)表示的 TIMESTAMP WITH TIMEZONE。“America/New_York”列显示了记录时间的时刻对应的 GMT 设置(假定您读取“America/New_York”时区的正常时钟)。这表明,America/New_York 时区的午夜时分对应 GMT 时区的凌晨 5 点。
“GMT”列显示了 GMT 时间(假定输入数据在 GMT 时区捕获)。
如果没有将时区设为 GMT,而是使用其他时区,例如 America/New_York,则结果以 America/New_York 时区显示为 -05
和 -04
,表明该时区与 GMT 之间的时差。
=> SET TIMEZONE TO 'America/New_York';
=> SHOW TIMEZONE;
name | setting
----------+------------------
timezone | America/New_York
(1 row)
=> SELECT ts AS 'No timezone', ts AT TIMEZONE 'America/New_York' AS
'America/New_York', ts AT TIMEZONE 'GMT' AS 'GMT' FROM tnoz;
No timezone | America/New_York | GMT
---------------------+------------------------+------------------------
2009-02-01 00:00:00 | 2009-02-01 00:00:00-05 | 2009-01-31 19:00:00-05
2009-05-12 12:00:00 | 2009-05-12 12:00:00-04 | 2009-05-12 08:00:00-04
(2 rows)
在这种情况下,最后一列需要引起注意,因为数据是在 GMT 时区捕获,返回的是纽约时间。