未记录事实核验 · 状态:维护中
记录仅说明核验时间与维护状态,不保证适用于所有环境;使用前请留意正文中的版本、适用条件与风险提示。
warning 适用范围与待维护事项
本文用于具备 Linux、多节点网络与数据库运维能力者规划隔离测试集群,不是已验证的生产部署方案。原稿未锁定 Greenplum 发行方和精确版本;7.x 安装包、操作系统认证、CHECK_POINT_SEGMENTS 等配置及工具参数须核对对应版本文档,硬件数字仅为未核实的规划示例。先安装软件再执行依赖工具的 SSH 步骤。关闭安全控制、免密 sudo、trust 认证和批量删除命令不得直接用于已有数据的生产环境;须先完成权限、安全、备份及恢复评审。
warning 关联材料边界
以下原引用目标缺失或无法唯一确认,已取消跳转并保留提及:01-Greenplum概述与架构;04-Greenplum基本操作;02-Greenplum数据分布原理。相关素材/延伸说明暂不可用,不能据此声称已经提供配套材料。
Greenplum 环境搭建 - 生产级集群部署完全指南
abstract 本节概览
- 学习目标:掌握 Greenplum 集群从规划到初始化验证的完整流程
- 前置知识:Greenplum 架构(原引用“01-Greenplum概述与架构”未能确定有效目标,暂不可跳转) 、Linux 基础运维
- 预计用时:60 分钟
- 后续学习:Greenplum 基本操作(原引用“04-Greenplum基本操作”未能确定有效目标,暂不可跳转)
目录
节点角色与硬件规划
节点角色说明
一套标准的 Greenplum 集群由三类节点组成:
| 节点角色 | 英文名 | 数量 | 核心职责 |
|---|---|---|---|
| 主 Master | Master | 1 | 接收客户端连接,解析 SQL,生成查询计划,协调所有 Segment 执行 |
| 备 Master | Standby Master | 1 | 实时同步 Master 的系统目录,Master 故障时接管服务 |
| 数据节点 | Segment Host | N | 存储数据分片,并行执行查询计划,数量决定集群并行度 |
note 关于 Primary 与 Mirror
本文带镜像的部署示例在 Segment Host 上同时配置 Primary Segment 和 Mirror Segment;不启用镜像的集群不适用此描述。Primary 处理读写,Mirror 是 Primary 的热备副本。Primary 故障时,符合故障检测与镜像可用条件的 Mirror 可自动接管;高可用还取决于副本跨主机布局、同步状态及剩余节点容量,不能仅凭配置镜像保证。
推荐硬件规格
Master / Standby Master 节点
| 组件 | 最低配置 | 生产推荐 | 说明 |
|---|---|---|---|
| CPU | 8 核 | 16 核 | Master 主要处理查询规划,非计算密集 |
| 内存 | 16 GB | 64 GB | 系统目录、连接池、日志缓冲 |
| 系统盘 | 200 GB SSD | 500 GB SSD | 系统目录、WAL 日志、审计日志 |
| 网络 | 1 GbE | 10 GbE | 管理网络 + 互联网络 |
Segment Host 节点
| 组件 | 最低配置 | 生产推荐 | 说明 |
|---|---|---|---|
| CPU | 16 核 | 32~64 核 | 并行计算核心,每个 Segment 实例独占若干核 |
| 内存 | 64 GB | 256 GB | 规则:每个 Segment 实例分配 8 GB 以上 |
| 数据盘 | 4 块 × 1 TB HDD | 8 块 × 4 TB NL-SAS/SSD | 建议 JBOD,多目录分散 I/O |
| 网络 | 10 GbE | 25 GbE 双网口 | 数据网络带宽决定 Redistribute 性能 |
tip Segment 实例数量经验值
每台 Segment Host 建议部署 4~8 个 Primary Segment 实例。过多会导致进程竞争,过少无法充分利用多核 CPU 和多块磁盘。常见做法:磁盘数量 = Primary Segment 数量,每个实例独占一块盘的一个目录。
操作系统与内核准备
warning 所有节点均需执行
以下步骤需要在 Master、Standby Master、所有 Segment Host 上执行,建议使用批量工具(如 Ansible)并发推送,或等 SSH 免密配置完成后用 gpssh 批量执行。
支持的操作系统
| 操作系统 | 推荐版本 | 备注 |
|---|---|---|
| RHEL / CentOS | 7.x、8.x | 官方认证,生产首选 |
| Rocky Linux / AlmaLinux | 8.x | RHEL 社区替代,兼容性好 |
| Ubuntu Server | 18.04 LTS、20.04 LTS | 社区支持,测试环境可用 |
内核参数配置
将以下内容追加到 /etc/sysctl.conf,然后执行 sysctl -p 使其生效。
# /etc/sysctl.conf - Greenplum 必要内核参数
# 共享内存:SHMMAX 建议设为物理内存的一半
kernel.shmmax = 68719476736 # 64 GB
kernel.shmmni = 4096
kernel.shmall = 4000000000
kernel.sem = 500 2048000 200 4096
# 消息队列
kernel.msgmnb = 65536
kernel.msgmax = 65536
kernel.msgmni = 2048
# 网络调优
net.ipv4.tcp_syncookies = 1
net.ipv4.conf.default.accept_source_route = 0
net.ipv4.tcp_max_syn_backlog = 4096
net.core.netdev_max_backlog = 10000
net.core.rmem_max = 2097152
net.core.wmem_max = 2097152
net.ipv4.tcp_rmem = 4096 87380 2097152
net.ipv4.tcp_wmem = 4096 65536 2097152
# 虚拟内存:overcommit_memory=2 限制内存过量承诺,但不能保证不会发生 OOM;须结合内存、交换空间和数据库配置评估
vm.overcommit_memory = 2
vm.overcommit_ratio = 95
# 页缓存回写策略
vm.dirty_background_ratio = 3
vm.dirty_ratio = 10
vm.swappiness = 10
# 使内核参数立即生效
sysctl -p
ulimit 资源限制配置
编辑 /etc/security/limits.conf,为 gpadmin 用户设置充足的资源限制:
# /etc/security/limits.conf
gpadmin soft nofile 524288
gpadmin hard nofile 524288
gpadmin soft nproc 131072
gpadmin hard nproc 131072
gpadmin soft stack 8192
gpadmin hard stack 8192
同时检查 /etc/security/limits.d/ 目录下是否有覆盖配置(尤其是 CentOS 下的 20-nproc.conf),确保 gpadmin 的 nproc 不被限制到 1024。
NTP 时间同步
集群各节点应保持时间同步,以便日志关联和运行诊断;原稿“时间偏差超过 1 秒会导致分布式事务异常”的阈值未核实,不应作为故障判定标准。
# 安装并配置 chrony(RHEL 7/8 推荐)
yum install -y chrony
systemctl enable chronyd && systemctl start chronyd
# 验证时间同步状态
chronyc tracking
chronyc sources -v
/etc/hosts 配置
所有节点的 /etc/hosts 中需要包含集群全部节点的主机名解析,不要依赖 DNS,避免单点故障。
# /etc/hosts 示例(所有节点均需配置)
192.168.10.10 mdw mdw.example.com # Master
192.168.10.11 smdw smdw.example.com # Standby Master
192.168.10.20 sdw1 sdw1.example.com # Segment 1
192.168.10.21 sdw2 sdw2.example.com # Segment 2
192.168.10.22 sdw3 sdw3.example.com # Segment 3
192.168.10.23 sdw4 sdw4.example.com # Segment 4
note 主机名规范
Greenplum 官方文档惯例:Master 节点命名为 mdw,Standby Master 为 smdw,Segment Host 为 sdw1、sdw2 依次递增。遵循此惯例便于管理脚本兼容。
关闭防火墙与 SELinux
# 关闭防火墙(生产环境建议使用 iptables 精细化控制,测试环境可直接关闭)
systemctl stop firewalld && systemctl disable firewalld
# 本示例关闭 SELinux;是否需要关闭须按目标版本的支持要求与安全策略确认,不是所有环境的通用要求
setenforce 0
sed -i 's/^SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
用户、目录与 SSH 配置
创建 gpadmin 用户和数据目录
在所有节点执行:
# 创建 gpadmin 用户和用户组
groupadd gpadmin
useradd -g gpadmin -m -s /bin/bash gpadmin
echo "gpadmin:your_password" | chpasswd
# 为 gpadmin 授予 sudo 权限(安装阶段需要)
echo "gpadmin ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers
# 创建数据目录
mkdir -p /data/master # Master 数据目录
mkdir -p /data/primary1 # Primary Segment 数据目录(每块盘一个)
mkdir -p /data/primary2
mkdir -p /data/mirror1 # Mirror Segment 数据目录
mkdir -p /data/mirror2
# 设置目录所有权
chown -R gpadmin:gpadmin /data
配置 SSH 免密登录(gpssh-exkeys)
Greenplum 提供了 gpssh-exkeys 工具来自动化完成全集群 SSH 密钥交换,替代手动的 ssh-copy-id 操作。
步骤 1:在 Master 节点,以 gpadmin 用户生成 SSH 密钥对
su - gpadmin
ssh-keygen -t rsa -b 4096 -N "" -f ~/.ssh/id_rsa
步骤 2:创建集群主机名文件
# /home/gpadmin/all_hosts - 包含所有节点
cat > ~/all_hosts << 'EOF'
mdw
smdw
sdw1
sdw2
sdw3
sdw4
EOF
# /home/gpadmin/seg_hosts - 仅包含 Segment Host
cat > ~/seg_hosts << 'EOF'
sdw1
sdw2
sdw3
sdw4
EOF
步骤 3:执行 gpssh-exkeys 交换密钥
# source 环境变量(安装 Greenplum 软件后才能使用此命令)
source /usr/local/greenplum-db/greenplum_path.sh
# 执行密钥交换(会提示输入各节点 gpadmin 密码)
gpssh-exkeys -f ~/all_hosts
步骤 4:验证 SSH 免密登录
# 测试对所有节点的无密码连接
gpssh -f ~/all_hosts -e "hostname"
所有节点均返回主机名则配置成功。
软件安装
下载与安装 RPM 包
Greenplum Database 开源版(GPDB)可从 VMware Tanzu Network 或 GitHub Releases 获取。
# 以 root 身份在所有节点安装 RPM
# 方式 1:直接使用 rpm 命令
rpm -ivh greenplum-db-7.x.x-rhel8-x86_64.rpm
# 方式 2:如已有本地仓库
yum install -y greenplum-db-7.x.x
# 默认安装路径:/usr/local/greenplum-db-7.x.x
# 同时会创建符号链接:/usr/local/greenplum-db -> /usr/local/greenplum-db-7.x.x
用 gpssh 批量在所有 Segment Host 安装:
# 先将 rpm 包分发到所有节点
gpscp -f ~/seg_hosts greenplum-db-7.x.x-rhel8-x86_64.rpm =:/tmp/
# 批量安装
gpssh -f ~/seg_hosts -e "sudo rpm -ivh /tmp/greenplum-db-7.x.x-rhel8-x86_64.rpm"
设置安装目录所有权
# 在所有节点将安装目录所有权转给 gpadmin
sudo chown -R gpadmin:gpadmin /usr/local/greenplum-db*
gpssh -f ~/all_hosts -e "sudo chown -R gpadmin:gpadmin /usr/local/greenplum-db*"
配置环境变量
greenplum_path.sh 是 Greenplum 的环境变量脚本,必须在每次使用 gp* 工具前 source。将其加入 gpadmin 的 bash profile 实现自动加载。
# 在 Master 节点,以 gpadmin 用户编辑 ~/.bashrc
cat >> ~/.bashrc << 'EOF'
# Greenplum 环境变量
source /usr/local/greenplum-db/greenplum_path.sh
# Master 数据目录(仅 Master/Standby Master 节点需要)
export MASTER_DATA_DIRECTORY=/data/master/gpseg-1
# 连接参数
export PGPORT=5432
export PGUSER=gpadmin
export PGDATABASE=postgres
EOF
source ~/.bashrc
同样在所有 Segment Host 上 source greenplum_path.sh(无需设置 MASTER_DATA_DIRECTORY):
gpssh -f ~/seg_hosts -e "echo 'source /usr/local/greenplum-db/greenplum_path.sh' >> ~/.bashrc"
gpinitsystem 配置文件详解
gpinitsystem_config 是 Greenplum 初始化集群的核心配置文件。以下逐参数说明每项含义和注意事项。
# /home/gpadmin/gpinitsystem_config
# 完整示例:4 台 Segment Host,每台 2 个 Primary + 2 个 Mirror
# -----------------------------------------------
# 集群基本信息
# -----------------------------------------------
# 集群描述名称,显示在管理工具中,可自定义
ARRAY_NAME="Production GP Cluster"
# -----------------------------------------------
# Segment 实例配置
# -----------------------------------------------
# Segment 数据目录的前缀名。
# 实际目录为 DATA_DIRECTORY[i]/SEG_PREFIX + segment_id
# 例如:/data/primary1/gpseg0、/data/primary1/gpseg1
SEG_PREFIX=gpseg
# Primary Segment 的起始端口号。
# 第一个 Primary 使用 PORT_BASE,第二个使用 PORT_BASE+1,依此类推
# 确保该端口范围在所有 Segment Host 上未被占用
PORT_BASE=40000
# Primary Segment 的数据目录列表。
# 数组元素数量 = 每台 Segment Host 上的 Primary 实例数
# 建议:每个目录对应一块独立磁盘,最大化 I/O 并行
declare -a DATA_DIRECTORY=(/data/primary1 /data/primary2)
# -----------------------------------------------
# Master 节点配置
# -----------------------------------------------
# Master 节点的主机名(必须与 /etc/hosts 完全一致)
MASTER_HOSTNAME=mdw
# Master 数据目录的父目录,实际目录为 MASTER_DIRECTORY/gpseg-1
MASTER_DIRECTORY=/data/master
# Master 监听端口,客户端连接此端口
MASTER_PORT=5432
# -----------------------------------------------
# Mirror(镜像)配置(生产环境必须开启)
# -----------------------------------------------
# Mirror Segment 的起始端口号,不能与 PORT_BASE 范围重叠
# 通常设为 PORT_BASE + 10000
MIRROR_PORT_BASE=50000
# Mirror Segment 的数据目录列表,数组长度须与 DATA_DIRECTORY 相同
# Mirror 建议放在与 Primary 不同的磁盘上
declare -a MIRROR_DATA_DIRECTORY=(/data/mirror1 /data/mirror2)
# -----------------------------------------------
# 其他配置
# -----------------------------------------------
# 节点间通信使用 SSH(固定值,不要修改)
TRUSTED_SHELL=ssh
# WAL checkpoint 段数,影响恢复时间和磁盘空间
# 生产环境建议 16~32
CHECK_POINT_SEGMENTS=16
# 数据库字符集,推荐 UTF-8
ENCODING=UTF8
# 初始化时创建的数据库名称;此参数不用于设置 locale
DATABASE_NAME=gpadmin
tip Mirror 布局策略
Greenplum 支持两种 Mirror 布局:
- Grouped Mirroring(默认):同一 Segment Host 上各 Primary 的 Mirror 集中放在另一台固定的 Segment Host 上。配置简单,但镜像所在主机宕机会同时失去多个 Mirror;默认策略须以目标版本为准。
- Spread Mirroring:Mirror 均匀分散到其他所有 Segment Host。容灾能力更强,需在
gpinitsystem命令中加-S参数启用。
集群初始化
执行 gpinitsystem
# 以 gpadmin 用户在 Master 节点执行
su - gpadmin
source /usr/local/greenplum-db/greenplum_path.sh
# 基本初始化命令
# -c:指定配置文件
# -h:指定 Segment Host 列表文件
# -a:自动接受所有提示(非交互模式)
gpinitsystem -c ~/gpinitsystem_config -h ~/seg_hosts -a
# 以下命令是上一条初始化命令的替代方案,不要在同一数据目录连续执行两次初始化;若要启用 Spread Mirroring,加 -S 参数,并先核对目标版本是否支持
gpinitsystem -c ~/gpinitsystem_config -h ~/seg_hosts -S -a
初始化过程的关键阶段如下:
%%{init: {"theme":"base","themeVariables":{"fontFamily":"PingFang SC, -apple-system, Source Han Serif SC, serif","fontSize":"16px","background":"#FDFBF5","primaryColor":"#FDFBF5","primaryTextColor":"#2D2A26","primaryBorderColor":"#6E6A60","secondaryColor":"#E8EFE8","secondaryBorderColor":"#8FA890","secondaryTextColor":"#2D2A26","tertiaryColor":"#FDFBF5","tertiaryBorderColor":"#9A9488","tertiaryTextColor":"#6E6A60","lineColor":"#6E6A60","textColor":"#2D2A26","mainBkg":"#FDFBF5","nodeBorder":"#2D5A3D","clusterBkg":"#F3EEDF","clusterBorder":"#9A9488","edgeLabelBackground":"#FDFBF5"},"flowchart":{"htmlLabels":true,"curve":"basis","padding":20,"nodeSpacing":60,"rankSpacing":70,"useMaxWidth":false},"themeCSS":".node rect, .node polygon, .node circle { stroke-width: 1.5px; } .edgePath .path { stroke-width: 1.5px; } .cluster-label .nodeLabel, .cluster-label foreignObject { color: #2D2A26 !important; } .edgeLabel, .edgeLabel foreignObject { color: #2D2A26 !important; background-color: #FDFBF5; } .edgeLabel rect { fill: #FDFBF5; }"}}%%
flowchart LR
classDef default fill:#FDFBF5,stroke:#6E6A60,color:#2D2A26,stroke-width:1.5px
classDef startend fill:#2D2A26,stroke:#2D2A26,color:#FDFBF5,font-weight:bold
classDef decision fill:#F6EAD8,stroke:#C08A1A,color:#2D2A26,font-weight:bold
classDef hub fill:#3B5A80,stroke:#3B5A80,color:#FDFBF5,font-weight:bold
classDef io fill:#E5EAF0,stroke:#3B5A80,color:#2D2A26
classDef accent fill:#A6432C,stroke:#A6432C,color:#FDFBF5,font-weight:bold
classDef storage fill:#F3EEDF,stroke:#9A9488,color:#2D2A26
A[参数校验] --> B[SSH 连通性测试]
B --> C[创建 Master 数据目录]
C --> D[初始化 Master Catalog]
D --> E[分发初始化指令到 Segment Host]
E --> F[各 Segment Host 并发创建实例]
F --> G[注册所有 Segment 到 Master]
G --> H[初始化 Standby Master]
H --> I[集群启动验证]
class A,B,C,D,E,F,G,H,I default
初始化时间取决于 Segment 数量,通常 5~20 分钟。成功后会打印 Greenplum Database instance successfully created.
添加 Standby Master
如果初始化时未创建 Standby Master,可以在初始化后单独添加;不要仅凭配置文件是否含有 STANDBY_HOSTNAME 判断是否已创建,应先检查实际集群状态:
gpinitstandby -s smdw
配置 pg_hba.conf
初始化完成后,配置客户端访问控制规则:
# /data/master/gpseg-1/pg_hba.conf
# 允许 gpadmin 本地无密码连接
local all gpadmin trust
host all gpadmin 127.0.0.1/32 trust
host all gpadmin ::1/128 trust
# 允许内网应用服务器连接(使用 md5 密码认证)
host all all 192.168.10.0/24 md5
在 shell 中执行以下命令重载配置,不要将其写入 pg_hba.conf:
# 重载配置(无需重启)
gpstop -u
集群验证
gpstate 状态检查
# 查看集群整体状态(快速概览)
gpstate
# 查看所有实例的详细状态(含端口、数据目录、同步状态)
gpstate -s
# 查看 Mirror 同步状态
gpstate -m
# 查看 Standby Master 状态
gpstate -f
正常集群的 gpstate 输出示例:
20240301:10:00:00 gpstate:mdw:gpadmin-[INFO]:-Starting gpstate with args:
20240301:10:00:00 gpstate:mdw:gpadmin-[INFO]:-local Greenplum Version: ...
20240301:10:00:00 gpstate:mdw:gpadmin-[INFO]:-Master instance = Active
20240301:10:00:00 gpstate:mdw:gpadmin-[INFO]:-Master standby = smdw
20240301:10:00:00 gpstate:mdw:gpadmin-[INFO]:-Standby master state = Standby host passive
20240301:10:00:00 gpstate:mdw:gpadmin-[INFO]:-Total segment instance count from initdb = 16
20240301:10:00:00 gpstate:mdw:gpadmin-[INFO]:-Primary Segment Status
20240301:10:00:00 gpstate:mdw:gpadmin-[INFO]:----------------------------
20240301:10:00:00 gpstate:mdw:gpadmin-[INFO]:-Total primary segments = 8
20240301:10:00:00 gpstate:mdw:gpadmin-[INFO]:-Total primary segment valid (at master) = 8
20240301:10:00:00 gpstate:mdw:gpadmin-[INFO]:-Total primary segment failures = 0
psql 连接测试
# 连接默认数据库
psql -d postgres
# 查看集群版本和 Segment 信息
psql -c "SELECT version();"
psql -c "SELECT * FROM gp_segment_configuration ORDER BY dbid;"
gp_segment_configuration 输出解读:
| 字段 | 说明 |
|---|---|
| dbid | 实例在集群中的唯一 ID |
| content | Segment ID(-1 = Master) |
| role | p=Primary,m=Mirror |
| status | u=Up,d=Down |
| mode | s=Synchronized,r=Recovering,n=Not Sync |
| address | 实例所在主机 IP/主机名 |
| port | 实例监听端口 |
在本文带镜像的示例中,所有 Primary 的 status 为 u、mode 为 s 可作为实例在线及副本同步的检查项;字段取值须按目标版本解释,还应结合 Mirror、Standby、日志、磁盘和连接测试判断整体健康状态。
分布式写入验证
psql -d postgres << 'EOF'
-- 创建分布式测试表
CREATE TABLE verify_test (
id BIGSERIAL,
val TEXT,
ts TIMESTAMP DEFAULT NOW()
) DISTRIBUTED BY (id);
-- 插入测试数据
INSERT INTO verify_test (val)
SELECT 'row_' || generate_series(1, 10000);
-- 验证数据均匀分布到各 Segment
SELECT gp_segment_id, COUNT(*) AS row_count
FROM verify_test
GROUP BY gp_segment_id
ORDER BY gp_segment_id;
-- 清理测试数据
DROP TABLE verify_test;
EOF
正常情况下每个 Segment 分配的行数大致相等(10000 / Segment 数量)。
常见安装问题
| 问题现象 | 根因分析 | 解决方案 |
|---|---|---|
gpinitsystem 报 SSH 连接失败 |
SSH 密钥未正确分发,或 known_hosts 未更新 | 重新执行 gpssh-exkeys,检查 ~/.ssh/authorized_keys 权限为 600 |
初始化报 permission denied 到数据目录 |
数据目录所有者不是 gpadmin | chown -R gpadmin:gpadmin /data |
端口冲突:address already in use |
PORT_BASE 或 MIRROR_PORT_BASE 范围内端口被占用 |
ss -tlnp 检查端口占用,调整配置文件端口范围 |
shmmax 不足导致 Segment 启动失败 |
内核参数未生效,或 SHMMAX 值过小 |
检查 /etc/sysctl.conf 并执行 sysctl -p,确保 SHMMAX >= 物理内存的 50% |
| Segment 数量与预期不符 | DATA_DIRECTORY 数组配置错误 |
检查 gpinitsystem_config 中 declare -a DATA_DIRECTORY=() 语法,括号和空格不能有误 |
gpstate 显示 Mirror not synchronized |
Mirror 数据目录权限问题或磁盘写入失败 | 检查 Mirror 目录权限,从 gp_segment_configuration 查询对应实例的主机和 datadir,登录该 Segment Host 后检查实际日志目录;日志子目录名称以目标版本与日志配置为准 |
| 时区相关报错 | 各节点时区不一致 | timedatectl set-timezone Asia/Shanghai(所有节点执行) |
warning 重新初始化集群
如果初始化失败需要重新来过,应先检查失败日志、残留进程和目录状态。以下清理操作仅适用于确认可丢弃的失败初始化测试目录;不得清空已有业务数据的集群。删除前须逐节点核实路径、停机状态及备份,优先按初始化日志提供的回退指引处理:
# 在 Master 节点查看初始化失败日志;若生成回退脚本,核对内容后按对应版本指引执行
# 不使用原稿未经核实的 gpinitsystem --rollback 参数
# 或在确认目录可丢弃、相关进程已停止且备份已核实后手动清空
rm -rf /data/master/*
gpssh -f ~/seg_hosts -e "rm -rf /data/primary*/* /data/mirror*/*"
掌握检查与练习题
掌握检查
完成本节后,确认以下能力:
- [ ] 能够说明 Master、Standby Master、Segment Host 三类节点各自的职责
- [ ] 能够独立完成
/etc/sysctl.conf的内核参数配置并解释每个参数的作用 - [ ] 理解
gpssh-exkeys的作用并能手动完成 SSH 免密配置的验证 - [ ] 能够逐项解释
gpinitsystem_config中各参数的含义 - [ ] 能够通过
gpstate -s判断集群健康状态 - [ ] 掌握至少 3 种常见安装报错的排查方法
练习题
-
硬件规划题:若要搭建一套每天处理 10 TB 数据的数据仓库,计划使用 6 台 Segment Host,每台 32 核 / 128 GB 内存 / 8 块 4 TB HDD,请给出
DATA_DIRECTORY、PORT_BASE、MIRROR_PORT_BASE的合理配置,并说明每台节点应部署多少个 Primary Segment 实例。 -
故障排查题:执行
gpstate -m发现有 2 个 Mirror 处于Not Synchronized状态,请列出排查步骤。 -
参数解释题:解释以下内核参数设置
vm.overcommit_memory = 2的含义,以及为什么 Greenplum 要求使用此值而不是默认的 0 或 1。
相关文档:Greenplum 架构(原引用“01-Greenplum概述与架构”未能确定有效目标,暂不可跳转) | 基本操作(原引用“04-Greenplum基本操作”未能确定有效目标,暂不可跳转) | 数据分布原理(原引用“02-Greenplum数据分布原理”未能确定有效目标,暂不可跳转)