Greenplum6.x搭建_环境配置

Greenplum6.x搭建之服务器环境配置

一. Greenplum数据库下载地址

商业版下载地址:https://network.pivotal.io/products/pivotal-gpdb
社区版本下载地址:https://github.com/greenplum-db/gpdb

官网:https://greenplum.org/
中文:https://greenplum.cn/
github项目:https://github.com/greenplum-db/gpdb

https://github.com/greenplum-db/gpdb/blob/master/gpdb-doc/README.md

二. 环境说明

产品文档建议
在这里插入图片描述
Storage唯一支持运行的文件系统要求: XFS文件系统

在这里插入图片描述

1. 操作系统

此处使用虚拟机搭建,配置设置的低。

软件版本CPU内存硬盘网络
redhat7.9 64位1*1 core1*2GB1*20GB默认

在这里插入图片描述

注意

1.对于安装在 Red Hat Enterprise Linux 7.x 或 7.3 之前的 CentOS 7.x 上的 Greenplum 数据库,操作系统问题可能会导致运行大型工作负载的 Greenplum 数据库在工作负载中挂起。Greenplum 数据库问题是由 Linux 内核错误引起的

2.不要在 Greenplum 数据库主机上安装防病毒软件,因为该软件可能会导致额外的 CPU 和 IO 负载,从而干扰 Greenplum 数据库的操作
Greenplum 数据库服务器在 RHEL/CentOS 系统上支持 TLS 版本 1.2,在 Ubuntu 系统上支持 TLS 版本 1.3

2. 软件

名称版本下载地址
系统镜像rhel-server-7.9-x86_64-dvd.iso
Greenplum数据库greenplum-db-6.18.2-rhel7-x86_64.rpmhttps://network.pivotal.io/products/vmware-tanzu-greenplum
Open JDK 8https://adoptopenjdk.net/
python
数据连接器

三. 集群规划

ip主机名别名
192.168.0.110mastermdw
192.168.0.113standbysmdw
192.168.0.111segment1sdw1
192.168.0.112segment2sdw2

虚拟机搭建修改ip地址为静态地址。
root用户登录所有服务器,ens33根据实际为准

vi /etc/sysconfig/network-scripts/ifcfg-ens33

在这里插入图片描述

四.系统环境要求

设置的redhat7.9用户密码 root/Greenplum

1. 硬件平台要求

安装指南

Greenplum 数据库 6 使用 Python 2.7.12,它包含在产品安装中(而不是作为包依赖项安装)
重要提示: SSL 仅在 Greenplum 数据库主主机系统上受支持。它不能在分段主机系统上使用。
重要提示:对于所有 Greenplum 数据库主机系统,如果 SELinux 在Enforcing模式下启用,则 Greenplum 进程和用户可以在默认Unconfined上下文中成功运行。如果需要增加限制,那么您必须根据您的安全要求配置 SELinux 上下文、策略和域,并测试您的配置以确保对 Greenplum 数据库没有功能或性能影响。同样,您应该根据需要禁用或配置防火墙软件以允许 Greenplum 主机之间的通信。

2. 容量估算

https://docs.vmware.com/en/VMware-Tanzu-Greenplum/6/greenplum-database/GUID-install_guide-capacity_planning.html

1. 计算可用磁盘容量

磁盘数量

disk_size * number_of_disks

计算 RAID、格式化之后:

(raw_capacity * 0.9) / 2 = formatted_disk_space

为获得最佳性能,磁盘空间占用<70%:

formatted_disk_space * 0.7 = usable_disk_space

格式化 RAID 磁盘阵列并考虑最大推荐容量 (usable_disk_space) 后,您需要计算实际可用于用户数据的存储空间 ( U)。
如果使用 Greenplum 数据库镜像来实现数据冗余,那么这将使您的用户数据大小增加一倍(2 * U)。
Greenplum 数据库还需要保留一些空间作为活动查询的工作区。工作空间应约为用户数据大小的三分之一(工作空间 = U/3):

With mirrors: (2 * U) + U/3 = usable_disk_space

Without mirrors: U + U/3 = usable_disk_space

临时文件空间和用户数据空间的指南假定典型的分析工作负载。高度并发的工作负载或需要大量临时空间的查询的工作负载可以从保留更大的工作区域中受益。通常,通过适当的工作负载管理可以增加整体系统吞吐量,同时减少工作区域的使用。此外,临时空间和用户空间可以通过指定它们驻留在不同的表空间中来相互隔离。

2. 计算用户数据大小

与所有数据库一样,一旦将原始数据加载到数据库中,它的大小会稍大一些。平均而言,原始数据在加载到数据库后在磁盘上大约会大 1.4 倍,但可能会更小或更大,具体取决于您使用的数据类型、表存储类型、数据库内压缩等。

页面开销 - 当您的数据被加载到 Greenplum 数据库中时,它被分成每个 32KB 的页面。每页有 20 字节的页开销。

行开销 - 在常规“堆”存储表中,每行数据有 24 个字节的行开销。“追加优化”存储表只有 4 字节的行开销。

属性开销 - 对于数据值本身,与每个属性值关联的大小取决于所选的数据类型。作为一般规则,您希望使用可能的最小数据类型来存储数据(假设您知道列可能具有的值)。

索引——在Greenplum数据库中,索引和表数据一样分布在segment主机上。Greenplum 数据库中的默认索引类型是 B-tree。因为索引大小取决于索引中唯一值的数量和要插入的数据,所以不可能预先计算索引的确切大小。但是,您可以使用这些公式粗略估计索引的大小。

B-tree: unique_values * (data_type_size + 24 bytes)

Bitmap: (unique_values * =number_of_rows * 1 bit * compression_ratio / 8) + (unique_values * 32)

3. 计算元数据和日志的空间需求

在每个segment主机上,您还需要为 Greenplum 数据库日志文件和元数据考虑空间:

系统元数据——对于在主机上运行的每个 Greenplum 数据库segment实例(主或镜像)或主实例,估计大约 20 MB 用于系统目录和元数据。

预写日志——对于主机上运行的每个Greenplum数据库segment(主或镜像)或主实例,为预写日志(WAL)分配空间。WAL 被分成每个 64 MB 的segment文件。WAL 文件的数量最多为:

2 * checkpoint_segments + 1

您可以使用它来估计 WAL 的空间需求。Greenplum 数据库实例的默认 checkpoint_segments 设置为 8,这意味着为主机上的每个segment或master实例分配 1088 MB WAL 空间。

Greenplum 数据库日志文件——每个segment实例和主实例都会生成数据库日志文件,这些文件会随着时间的推移而增长。应该为这些日志文件分配足够的空间,并且应该使用某种类型的日志轮换工具来确保日志文件不会变得太大。

指挥中心数据— Command Center 使用的数据收集代理与您的 Greenplum 数据库实例在同一组主机上运行,​​并利用这些主机的系统资源。这些主机上的数据收集代理进程的资源消耗很少,不会显着影响数据库性能。收集代理收集的历史数据存储在您的 Greenplum 数据库系统中自己的命令中心数据库中。收集的数据与常规数据库数据一样分布,因此您需要考虑 Greenplum segment实例的数据目录位置中的磁盘空间。所需的空间量取决于您要保留的历史数据量。历史数据不会自动截断。

注:
1.磁盘在70%可以获得较好性能
2.primary与mirror占用空间相同,同时需留出一定空间作为缓存中间结果
3.在用户数据大小这块,经过页、行、列和属性的开销,用户数据装载到数据库后约为1.4倍
4.GP数据库自身所占空间较小,几乎可以忽略

五. 配置系统

https://docs.vmware.com/en/VMware-Tanzu-Greenplum/6/greenplum-database/GUID-install_guide-prep_os.html

文中无特别说明则默认root用户操作

1. Greenplum数据库机器命名

主机约定名称
mastermdw
standby mastersmdw
segmentsdwN,N为整数

示例:segment主机名是sdw1,sdw2依此类推。对于具有多个接口的主机,建议使用 NIC 绑定,但当接口未绑定时,约定是-在主机名后附加破折号 ( ) 和数字。例如,sdw1-1和sdw1-2是 host 的两个接口名称sdw1。

重要提示:当Greenplum数据库集群不能接受数据丢失时,推荐使用Greenplum master和segment镜像。如果未启用镜像,则 Greenplum 仅存储数据的一份副本,因此底层存储介质在硬件故障时提供数据可用性和正确性的唯一保证。

1.1 编辑/etc/hosts

编辑/etc/hosts文件并确保它包含参与Greenplum数据库系统的每台机器的主机名和所有接口地址名。
为了保障后续Greenplum集群之间的相互通信

使用root用户登录,所有机器都需要修改

vi /etc/hosts
# 添加如下内容
192.168.0.110 gp-master    mdw
192.168.0.113 gp-smaster   smdw
192.168.0.111 segment1     sdw1
192.168.0.112 segment2     sdw2

1.2 编辑hostname(永久修改)

永久修改主机名
root用户登录所有服务器,分别修改HOSTNAME为mdw,smdw,sdw1,sdw2

vi /etc/sysconfig/network

NETWORKING=yes
HOSTNAME=mdw

#保存退出

1.3 编辑/etc/hostname

root用户登录所有服务器

vi /etc/hostname
#每台机器内容依次修改分别为
mdw,smdw,sdw1,sdw2
#保存退出

在这里插入图片描述

1.4 重启网络

root用户登录所有服务器

#重启网络
service network restart
#测试是否ping通,如在master机器
ping smdw
ping sdw1
ping sdw2

如下,说明master和其他机器是连通的
在这里插入图片描述

2. 禁用或配置 SELinux

root用户登录所有服务器

#1.以 root 用户身份检查 SELinux 的状态
sestatus

SELinuxstatus: disabled

#2.如果 SELinux 未禁用,请通过编辑/etc/selinux/config文件将其禁用
vi /etc/selinux/config
#修改成disabled
SELINUX=disabled

#3.如果您的系统上安装了系统安全服务守护程序 (SSSD),请编辑 SSSD 配置文件并将selinux_provider参数设置为none以防止即使禁用 SELinux 也可能发生与 SELinux 相关的 SSH 身份验证拒绝。以 root 身份编辑/etc/sssd/sssd.conf并添加此参数

vi /etc/sssd/sssd.conf
#修改成如下
selinux_provider=none

#修改ssh_config
vi /etc/ssh/ssh_config
#修改
StrictHostKeyChecking no
    
#4.重新启动系统以应用您所做的任何更改并确认 SELinux 已禁用
#后面改完一起重启
reboot

3. 禁用或配置防火墙软件

root用户登录所有服务器

#1.以 root 用户身份检查以下状态iptables
/usr/sbin/chkconfig --list iptables
#如果iptables禁用,则命令输出为:
iptables 0:off 1:off 2:off 3:off 4:off 5:off 6:off

#2.如有必要,以 root 身份运行此命令以禁用iptables
/usr/sbin/chkconfig iptables off

#3.检查防火墙状态
systemctl status firewalld
#如果firewalld禁用,则命令输出为:
* firewalld.service - firewalld - dynamic firewall daemon
   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)
   Active: inactive (dead)

#4.若没禁用,则用root用户禁用防火墙
systemctl stop firewalld.service
systemctl disable firewalld.service

# 5. 更改后需要重启系统

4. 设置所需的操作系统参数

共享内存
除非内核的共享内存segment 大小合适,否则 Greenplum 数据库实例将无法工作。大多数默认操作系统安装的共享内存值对于 Greenplum 数据库设置得太低。在 Linux 系统上,您还必须禁用 OOM(内存不足)杀手。有关 Greenplum 数据库共享内存要求的信息,请参阅Greenplum 数据库参考指南中的Greenplum 数据库服务器配置参数shared_buffers。

网络
在大容量 Greenplum 数据库系统上,必须设置某些与网络相关的调整参数以优化由 Greenplum 互连建立的网络连接。

用户限制
用户限制控制由用户的 shell 启动的进程可用的资源。Greenplum 数据库对单个进程可以打开的文件描述符的允许数量有更高的限制。默认设置可能会导致一些 Greenplum 数据库查询失败,因为它们将用完处理查询所需的文件描述符。

4.1 编辑sysctl.conf

root用户登录所有服务器

设置/etc/sysctl.conf文件中的参数并重新加载sysctl -p:

vi /etc/sysctl.conf

根据当前虚拟机情况,参数设置如下

# kernel.shmall = _PHYS_PAGES / 2 # See Shared Memory Pages
kernel.shmall = 232875
# kernel.shmmax = kernel.shmall * PAGE_SIZE 
kernel.shmmax = 953856000
kernel.shmmni = 4096
#操作系统使用vm.overcommit_memoryLinux 内核参数来确定可以为进程分配多少内存。对于 Greenplum 数据库,此参数应始终设置为 2
vm.overcommit_memory = 2 # See Segment Host Memory
#vm.overcommit_ratio是用于应用程序进程的 RAM 百分比,其余部分为操作系统保留。Red Hat Enterprise Linux 上的默认值为 50
vm.overcommit_ratio = 95 # See Segment Host Memory

net.ipv4.ip_local_port_range = 10000 65535 # See Port Settings
kernel.sem = 250 2048000 200 8192
kernel.sysrq = 1
kernel.core_uses_pid = 1
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.ipv4.conf.all.arp_filter = 1
net.core.netdev_max_backlog = 10000
net.core.rmem_max = 2097152
net.core.wmem_max = 2097152
#vm.swappiness = 10
vm.swappiness = 0
vm.zone_reclaim_mode = 0
vm.dirty_expire_centisecs = 500
vm.dirty_writeback_centisecs = 100
vm.dirty_background_ratio = 3  # 内存>64G设置0,否则设置3
vm.dirty_ratio = 10            # 内存>64G设置0,否则设置10
#vm.dirty_background_bytes = 1610612736 # 1.5GB 内存>64G可设置,大小根据实际情况
#vm.dirty_bytes = 4294967296     # 4GB 内存>64G可设置,大小根据实际情况       
  • 配置vm.min_free_kbytes

建议为物理内存的3%

awk 'BEGIN {OFMT = "%.0f";} /MemTotal/ {print "vm.min_free_kbytes =", $2 * .03;}' /proc/meminfo >> /etc/sysctl.conf

使得/etc/sysctl.conf配置文件生效,执行如下命令

sysctl -p

5. 系统资源限制

root用户登录所有服务器

# redhat编辑如下文件

mv /etc/security/limits.d/20-nproc.conf /etc/security/limits.d/20-nproc.conf.bak
##会覆盖/etc/security/limits.conf文件

根据当前虚拟机情况,参数设置如下

vi /etc/security/limits.conf

* soft nofile 524288
* hard nofile 524288
* soft nproc 131072
* hard nproc 131072
# Core Dump 设置
gpadmin soft  core unlimited

查看命令

ulimit -a

对于 Red Hat Enterprise Linux (RHEL) 和 CentOS 系统,/etc/security/limits.d/90-nproc.conf文件 (RHEL/CentOS 6) 或/etc/security/limits.d/20-nproc.conf文件 (RHEL/CentOS 7) 中的参数值会覆盖limits.conf文件中的值。确保覆盖文件中的所有参数都设置为所需的值。Linux 模块通过从文件中读取值,然后从覆盖文件中pam_limits读取值来设置用户限制。limits.conf有关 PAM 和用户限制的信息,请参阅 PAM 和pam_limits.
在每个Segment主机上运行该ulimit -u命令以显示每个用户可用的最大进程数。

6. 核心文件

root用户登录所有服务器

vi /etc/sysctl.conf

#通过将以下行添加到以下行来启用到已知位置的核心文件生成/etc/sysctl.conf:
kernel.core_pattern=/var/core/core.%h.%t

生效,执行如下命令

 sysctl -p

7. XFS 挂载选项

root用户登录所有服务器

将mount命令与以下推荐用于 RHEL 和 CentOS 系统的 XFS 挂载选项一起使用如:

rw,nodev,noatime,nobarrier,inode64

XFS 选项也可以在/etc/fstab文件中设置。此文件中的示例条目fstab指定 XFS 选项。
例如

vi /etc/fstab
# 添加如下信息
/dev/data  /data  xfs rw,nodev,noatime,nobarrier,inode64 0 0
/dev/tabdata /tabdata xfs rw,nodev,noatime,nobarrier,inode64 0 0
/dev/tmpdata /tmpdata xfs rw,nodev,noatime,nobarrier,inode64 0 0

使配置生效

mount -o remount /data
mount -o remount /tabdata 
mount -o remount /tmpdata 

查看命令:mount

8. 磁盘 I/O 设置(虚拟机搭建此处暂跳过)

root用户登录所有服务器

  1. 设置预读值

格式
sudo /sbin/blockdev --getra
sudo /sbin/blockdev --setra

每个磁盘设备文件的预读 ( blockdev) 值应为 16384。要验证磁盘设备的预读值:

 # 获取值,例如:若有多个磁盘在后面追加
/sbin/blockdev --getra /dev/sda
#得到8192
# 设置值,例如:
/sbin/blockdev --setra 16384 /dev/sda

注意:该blockdev --setra命令不是持久的。

您必须确保在系统重新启动时设置预读值。如何设置该值将因您的系统而异。

将设置命令添加到/etc/rc.d/rc.local文件,并将该文件设置为可执行,使得系统重启自动执行

chmod +x /etc/rc.d/rc.local
  1. 设置磁盘IO调度策略

格式如:echo schedulername > /sys/block//queue/scheduler

建议为deadline

echo deadline > /sys/block/sda/queue/scheduler

###注释不执行 echo mq-deadline > /sys/block/sda/queue/scheduler

将设置命令添加到/etc/rc.d/rc.local文件,使得系统重启自动执行

# 设置开机自动生效
grubby --update-kernel=ALL --args="elevator=deadline"
grubby --info=ALL


index=0
kernel=/boot/vmlinuz-3.10.0-1160.el7.x86_64
args="ro crashkernel=auto spectre_v2=retpoline rhgb quiet LANG=en_US.UTF-8 elevator=deadline"
root=UUID=9b1f5ca6-a4ef-4e9e-8545-b12ddc4b8347
initrd=/boot/initramfs-3.10.0-1160.el7.x86_64.img
title=Red Hat Enterprise Linux Server (3.10.0-1160.el7.x86_64) 7.9 (Maipo)
index=1
kernel=/boot/vmlinuz-0-rescue-36ea22ddd5ee4bc890a6139c6fe1575e
args="ro crashkernel=auto spectre_v2=retpoline rhgb quiet elevator=deadline"
root=UUID=9b1f5ca6-a4ef-4e9e-8545-b12ddc4b8347
initrd=/boot/initramfs-0-rescue-36ea22ddd5ee4bc890a6139c6fe1575e.img
title=Red Hat Enterprise Linux Server (0-rescue-36ea22ddd5ee4bc890a6139c6fe1575e) 7.9 (Maipo)
index=2
non linux entry

9. Networking (虚拟机搭建此处跳过)

网络的最大传输单元 (MTU) 指定网络连接设备接受的最大数据包/帧的大小(以字节为单位)。巨型帧是包含超过 1500 字节的标准 MTU 的帧。
Greenplum 数据库使用 3 种不同的 MTU 设置:

Greenplum 数据库gp_max_packet_size服务器配置参数。默认最大数据包大小为 8192。此默认值假定为巨型帧 MTU。
操作系统 MTU 设置。
机架开关 MTU 设置。
这些设置是相互关联的,因为它们应该总是相同或接近相同的值,或者按照 Greenplum < OS < 切换 MTU 大小的顺序。

9000 是交换机的常见支持设置,并且是推荐用于 Greenplum 数据库主机的操作系统和机架交换机 MTU 设置。

10. Transparent Huge Pages (THP) (虚拟机redhat7.9搭建此处跳过)

禁用透明大页面 (THP),因为它会降低 Greenplum 数据库的性能。RHEL 6.0 或更高版本默认启用 THP。在 RHEL 6.x 上禁用 THP 的一种方法是将参数添加transparent_hugepage=never到文件中的内核命令/boot/grub/grub.conf,即 GRUB 引导加载程序配置文件。grub.conf这是来自文件的示例内核命令。为了便于阅读,该命令位于多行:

#grub.conf
kernel /vmlinuz-2.6.18-274.3.1.el5 ro root=LABEL=/
           elevator=deadline crashkernel=128M@16M  quiet console=tty1
           console=ttyS1,115200 panic=30 transparent_hugepage=never 
           initrd /initrd-2.6.18-274.3.1.el5.img
# 查看当前配置
cat /sys/kernel/mm/transparent_hugepage/enabled
# 设置
echo never > /sys/kernel/mm/transparent_hugepage/enabled

使得系统重启自动生效

grubby --update-kernel=ALL --args="transparent_hugepage=never"
grubby --info=ALL

11. IPC 对象移除 (虚拟机redhat7.9搭建,此处跳过)

禁用 RHEL 7.2 或 CentOS 7.2 或 Ubuntu 的 IPC 对象删除。默认systemd设置RemoveIPC=yes会在非系统用户帐户注销时删除 IPC 连接。这会导致 Greenplum 数据库实用程序gpinitsystem因信号量错误而失败。执行以下操作之一以避免此问题。

在创建 Greenplum 管理用户中将gpadmin操作系统用户帐户添加到主节点时,将用户创建为系统帐户。
禁用RemoveIPC. /etc/systemd/logind.conf在 Greenplum 数据库主机系统上设置这个参数。

vi /etc/systemd/logind.conf
# 修改如下
RemoveIPC=no

systemd-login重启服务或重启系统后设置生效。要重新启动服务,请以 root 用户身份运行此命令。

service systemd-logind restart

重启各个服务器,使得磁盘IO,THP,IPC配置生效

reboot

12. SSH 连接阈值

root用户登录所有服务器

某些 Greenplum 数据库管理实用程序,包括gpexpand、gpinitsystem和gpaddmirrors,使用系统之间的安全 shell (SSH) 连接来执行它们的任务。

root用户操作,编辑如下两个文件
/etc/ssh/sshd_config
/etc/sshd_config

vi  /etc/ssh/sshd_config
# 设置
MaxStartups 100:30:1000
MaxSessions 200
# 重启
service sshd restart

13.日期设置

root用户登录所有服务器

# 确认是东八区
date
#若不是则执行如下
tzselect
#依次选择 Asia -> China -> Beijing Time -> YES 即可。一定要在安装Greenplum前确保时区设置正确,因为在Greenplum系统初始化后,LC_COLLATE、LC_CTYPE的值不能再更改。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
输入date查看,时间和当前时间不一致则执行

#每台服务器都执行
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

或者
date -s “”
hwclock -w

14. 同步系统时钟

使用 NTP(网络时间协议)来同步构成您的 Greenplum 数据库系统的所有主机上的系统时钟。(参考www.ntp.org)
210.72.145.44 是中国国家授时中心

#ntpdate -u ntp.api.bz 备注:指定ntp.api.bz(上海ntp服务器)
注意:虚拟机搭建,为了保证每次开机时间正确设置定时任务,非虚拟机搭建不设置crontab定时任务。使用root用户登录,master主机器设置定时任务同步时间

#虚拟机增加crontab -e 开机同步时间
*/5 * * * * /usr/sbin/ntpdate -u ntp.api.bz
  1. master主机上,以 root身份登录并编辑/etc/ntp.conf文件。
    xx.xx.xx.xx表示ntp服务器地址
vi /etc/ntp.conf
# 例如
server xx.xx.xx.xx
  1. 每个 Segment 主机上,以root身份登录并编辑/etc/ntp.conf文件。设置第一个server参数指向master主机,第二个server参数指向standby master主机
vi /etc/ntp.conf
# 例如
server mdw prefer
server smdw
  1. standby master主机上,以root身份登录并编辑该/etc/ntp.conf文件
server mdw prefer
server xx.xx.xx
  1. 在master主机上,使用 NTP 守护进程同步所有 Greenplum 主机上的系统时钟。
#gpssh -f hostfile_gpssh_allhosts -v -e 'ntpd'
  1. 查看同步状态
#在所有主机启动ntpd服务并查看时间同步状态
systemctl disable chronyd
systemctl enable ntpd
systemctl start ntpd

错误:报npt服务不存在,则需要yum安装ntp相关包

15. 检查文件编码

root用户登录所有服务器

输入

locale或者echo $LANG

在这里插入图片描述
若不是en_US.UTF-8则修改

vi /etc/locale.conf

#设置如下内容
LANG="en_US.UTF-8"

16. 创建 gpadmin 帐户

在每个节点上创建一个专用的操作系统用户帐户来运行和管理 Greenplum 数据库
重要提示:不能用root用户运行和管理数据库.
gpadmin用户必须有权访问安装和运行 Greenplum 数据库所需的服务和目录。

每个 Greenplum 主机上的gpadmin用户必须安装 SSH 密钥对,并且能够从集群中的任何主机 SSH 到集群中的任何其他主机,而无需输入密码或密码(称为“无密码 SSH”)。

您可以选择授予gpadmin用户 sudo 权限,以便您可以gpadmin使用sudo、ssh/scp和gpssh/gpscp命令轻松管理 Greenplum 数据库集群中的所有主机。

1. 创建gpadmin组和用户

root用户创建gpadmin组和gpadmin用户

# 若id有重复,则更改
groupadd -r -g 10001 gpadmin
useradd gpadmin -r -m -g gpadmin -u 10001
passwd gpadmin

chown -R gpadmin:gpadmin /data
chown -R gpadmin:gpadmin /tabdata
chown -R gpadmin:gpadmin /tmpdata

密码gpadmin

注意:确保gpadmin用户在每个主机上具有相同的用户 ID (uid) 和组 ID (gid) 号码,以防止脚本或服务使用它们来获取身份或权限时出现问题。

2. gpadmin用户生成ssh密钥对(先跳过)

切换到gpadmin用户并为该用户生成一个 SSH 密钥对gpadmin

#切换到gpadmin用户
[root@localhost home]# su gpadmin
#生成密钥对
[gpadmin@localhost home]$ ssh-keygen -t rsa -b 4096

# 下面的提示一直敲回车
Generating public/private rsa key pair.
Enter file in which to save the key (/home/gpadmin/.ssh/id_rsa):
Created directory '/home/gpadmin/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
# 查看
[gpadmin@localhost .ssh]$ ls
id_rsa  id_rsa.pub

3. 授予gpadmin用户 sudo 访问权限(先跳过)

root用户登录操作

修改前
在这里插入图片描述

在 Red Hat 或 CentOS 上,运行visudo取消下行的注释

#%wheel        ALL=(ALL)       NOPASSWD: ALL

使用此命令将gpadmin用户添加到组中。wheel

usermod -aG wheel gpadmin

或者
在“root ALL=(ALL) ALL”后面添加

gpadmin    ALL=(ALL)       ALL

六. 补充说明

1 共享内存页面

Greenplum 数据库使用共享内存在postgres属于同一postgres实例的进程之间进行通信。

参数含义说明
kernel.shmall在系统范围内使用的共享内存总量(以页为单位)物理内存的一半
kernel.shmmax单个共享内存段的最大大小(以字节为单位)物理内存的一半

参数示例(不推荐)

# 使用操作系统变量_PHYS_PAGES和PAGE_SIZE设置参数
kernel.shmall = ( _PHYS_PAGES / 2)
kernel.shmmax = ( _PHYS_PAGES / 2) * PAGE_SIZE

固定值写法的计算方式

$ echo $(expr $(getconf _PHYS_PAGES) / 2) 
$ echo $(expr $(getconf _PHYS_PAGES) / 2 \* $(getconf PAGE_SIZE))

**推荐写法示例**
主机系统安装了 1583 GB 内存并返回以下值:_PHYS_PAGES = 395903676 和 PAGE_SIZE = 4096

kernel.shmall = 197951838
kernel.shmmax = 810810728448
2 segment主机内存
参数含义说明
vm.overcommit_memoryLinux 内核参数来确定可以为进程分配多少内存gp始终为2
vm.overcommit_ratio是用于应用程序进程的 RAM 百分比,其余部分为操作系统保留redhat默认50
3 端口设置

为避免Greenplum初始化期间Greenplum数据库与其他应用程序发生端口冲突,请记下操作系统参数指定的端口范围net.ipv4.ip_local_port_range。使用gpinitsystem集群配置文件初始化 Greenplum 时,不要在该范围内指定 Greenplum 数据库端口。例如,如果net.ipv4.ip_local_port_range = 10000 65535,将 Greenplum 数据库基本端口号设置为这些值。
示例

PORT_BASE = 6000
MIRROR_PORT_BASE = 7000

对于使用 Greenplum 数据库的 Azure 部署,请避免使用端口 65330;将以下行添加到 sysctl.conf:
示例

net.ipv4.ip_local_reserved_ports=65330
4 系统内存

对于内存超过 64GB 的主机系统,建议使用以下设置:
示例

vm.dirty_background_ratio = 0
vm.dirty_ratio = 0
vm.dirty_background_bytes = 1610612736 # 1.5GB
vm.dirty_bytes = 4294967296 # 4GB

对于内存为 64GB 或更少的主机系统,删除这两个参数并将其设置vm.dirty_background_bytes为以下值:
示例

vm.dirty_bytesratio
vm.dirty_background_ratio = 3
vm.dirty_ratio = 10

增加vm.min_free_kbytes以确保PF_MEMALLOC轻松满足来自网络和存储驱动程序的请求。这对于具有大量系统内存的系统尤其重要。这些系统上的默认值通常太低。使用此 awk 命令设置vm.min_free_kbytes为建议的系统物理内存的 3%:

awk 'BEGIN {OFMT = "%.0f";} /MemTotal/ {print "vm.min_free_kbytes =", $2 * .03;}' /proc/meminfo >> /etc/sysctl.conf 

不要设置vm.min_free_kbytes为高于系统内存的 5%,否则可能会导致内存不足。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值