原文连接忘记了,是参考文章+本地实践整理出来的此篇内容
1.安装说明
GreenPlum6.X目前支持以下版本操作系统:
Red Hat Enterprise Linux 64-bit 7.x
Red Hat Enterprise Linux 64-bit 6.x
CentOS 64-bit 7.x
CentOS 64-bit 6.x
Ubuntu 18.04 LTS
建议采用7.3以上的7系列版本
本次安装使用1个master节点两个segment的节点.每个节点配置为2核心8GB,操作系统为CentOS7.6
主机名 | ip地址 | 操作系统 | 硬件配置 | 规划 |
---|---|---|---|---|
gpmaster | 192.168.56.91(业务地址) 12.12.12.1(内部地址) | CentOS7.6 | 2C8G | Master |
gpsegment1 | 192.168.56.92 12.12.12.2 | CentOS7.6 | 2C8G | seg1,mirror seg2 |
gpsegment2 | 192.168.56.93 12.12.12.3 | CentOS7.6 | 2C8G | seg2,mirror seg1 |
安装部署GP主要分为三个步骤:
准备工作:包括操作系统安装,系统参数修改等
安装验证
初始化数据库
安装时间 | 2022-01-15 |
---|---|
安装版本 | 6.10.0 |
下载地址 | https://network.pivotal.io/products/pivotal-gpdb 或者中文下载地址: https://github.com/greenplum-db/gpdb/releases |
文档说明 | https://gpdb.docs.pivotal.io/6-10/install_guide/platform-requirements.html 或者中文文档地址: http://docs-cn.greenplum.org/v6/homenav.html |
2.准备工作
操作系统的安装和主机名,ip地址的配置这里就不进行讲解了.注意这里使用了一个专门用来节点之间数据交互的网段,下面的所有配置,需要在每个节点进行配置
2.1 配置host
修改/etc/hosts文件,添加每个节点信息
echo "
192.168.152.138 gpmaster
192.168.152.146 gpsegment1
192.168.152.140 gpsegment2
" >> /etc/hosts
[root@gp1 ~]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.152.138 gpmaster
192.168.152.146 gpsegment1
192.168.152.140 gpsegment2
2.2 配置sysctl.conf文件
配置内核参数/etc/sysctl.conf,配置完成后sysctl -p生效
echo "
kernel.shmmax = $(expr $(getconf _PHYS_PAGES) / 2 $(getconf PAGE_SIZE)) #注意这里查看说明Shared Memory Pages
kernel.shmmni = 4096
kernel.shmall = $(expr $(getconf _PHYS_PAGES) / 2)
vm.overcommit_memory = 2 # 注意这里查看说明Segment Host Memory
vm.overcommit_ratio = 95 # 注意这里查看说明Segment Host Memory
net.ipv4.ip_local_port_range = 10000 65535 # See Port Settings
kernel.sem = 500 2048000 200 4096
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.zone_reclaim_mode = 0
vm.dirty_expire_centisecs = 500
vm.dirty_writeback_centisecs = 100
vm.dirty_background_ratio = 3 # 注意这里查看说明System Memory
vm.dirty_ratio = 10
\#vm.dirty_background_bytes = 1610612736
\#vm.dirty_bytes = 4294967296
" >> /etc/sysctl.conf
sysctl -p
下面的上面几个关键参数配置的说明,根据不同的场景自行进行配置:
- Shared Memory Pages
Greenplum数据库使用共享内存进行 Postgres 进程和 Postgres 实例之间的通信。 kernel.shmall可以在系统范围内使用的共享内存总量(以页为单位)。kernel.shmmax 设置单个共享内存段的最大大小(以字节为单位)。
kernel.shmall 和 kernel.shmmax值取决于系统的物理内存和页面大小。通常,两个参数的值都应为系统物理内存的一半。
使用操作系统变量 _PHYS_PAGES 和 页面大小 设置参数。
kernel.shmall =(_PHYS_PAGES / 2)
kernel.shmmax =(_PHYS_PAGES / 2)* PAGE_SIZE
计算的值 kernel.shmall 和 kernel.shmmax,使用以下命令运行以下命令 getconf 命令,该命令返回操作系统变量的值。
$ echo $(expr $ {(getconf _PHYS_PAGES)/ 2)
$ echo $ {expr $ {(getconf _PHYS_PAGES)/ 2 \ * $ {getconf PAGE_SIZE))
作为最佳做法,我们建议您在 /etc/sysctl.conf使用计算值的文件。例如,主机系统安装了1583 GB的内存,并返回以下值:_PHYS_PAGES = 395903676和PAGE_SIZE = 4096。内核 和 内核 值:
kernel.shmall = 197951838
kernel.shmmax = 810810728448
如果Greeplum Database master的共享内存配置与段主机不同,则_PHYS_PAGES和PAGE_SIZE值可能会有所不同,并且 内核 和 内核 主主机上的值将与段主机上的值不同。
Segment Host Memory
的 vm.overcommit_memoryOS使用Linux内核参数来确定可以为进程分配多少内存。对于Greenplum数据库,此参数应始终设置为2。
vm.overcommit_ratio是用于应用程序进程的RAM的百分比,其余部分保留给操作系统。在Red Hat Enterprise Linux上,默认值为50。
对于 vm.overcommit_ratio有关基于资源组的资源管理或基于资源队列的资源管理的调整和计算建议,请参阅《Geenplum数据库管理员指南》中的“ 配置段主机内存的选项”。另请参阅Greenplum数据库服务器配置参数 gp_vmem_protect_limit在“ Greenplum数据库参考指南”中
Port Settings
为避免在Greenplum初始化期间Greenplum数据库与其他应用程序之间的端口冲突,请记下操作系统参数指定的端口范围 net.ipv4.ip_local_port_range。使用初始化Greenplum时gpinitsystem群集配置文件,请不要在该范围内指定Greenplum数据库端口。例如,如果net.ipv4.ip_local_port_range = 10000 65535,将Greenplum数据库基本端口号设置为这些值。
PORT_BASE = 6000
MIRROR_PORT_BASE = 7000
System Memory
- 对于内存超过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_bytes 并设置两个这些值的参数:
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 / {打印“ vm.min_free_kbytes =”,$ 2 * .03;}'
/ proc / meminfo >> /etc/sysctl.conf
不设置 vm.min_free_kbytes 超过系统内存的5%,因为这样做可能会导致内存不足情况。
虚拟机3Gb运行内存建议配置
echo "
#GP system config -------begin
# kernel.shmall = _PHYS_PAGES / 2 # See Shared Memory Pages
#表示可用共享内存的总量,单位是页,一般此值与kernel.shmmax相等
kernel.shmall = 233163
# kernel.shmmax = kernel.shmall * PAGE_SIZE
#表示单个共享内存段的最大值,以字节为单位,此值一般为物理内存的一半,不过大一点也没关系
kernel.shmmax = 955035648
#表示单个共享内存段的最小值,一般为4kB,即4096bit,也可适当调大,一般为4096的2-3倍
kernel.shmmni = 4096
#Linux下overcommit有三种策略,0:启发式策略,1:任何overcommit都会被接受。2:当系统分配的内存超过swap+N%*物理RAM(N%由vm.overcommit_ratio决定)时,会拒绝commit,一般设置为2
vm.overcommit_memory = 2 # See Segment Host Memory
vm.overcommit_ratio = 50 # See Segment Host Memory
net.ipv4.ip_local_port_range = 1025 65535 # See Port Settings
#该文件用于控制内核信号量,信号量是System VIPC用于进程间通讯的方法。
#建议设置:250 32000 100 128
#第一列,表示每个信号集中的最大信号量数目。
#第二列,表示系统范围内的最大信号量总数目。
#第三列,表示每个信号发生时的最大系统操作数目。
#第四列,表示系统范围内的最大信号集总数目。
#所以,(第一列)*(第四列)=(第二列)
kernel.sem = 250 512000 100 2048
#内核系统请求调试功能控制,0表示禁用,1表示启用
kernel.sysrq = 1
#这有利于多线程调试,0表示禁用,1表示启用
kernel.core_uses_pid = 1
#该文件指定一个消息队列的最大长度(bytes)。缺省设置:16384
kernel.msgmnb = 65536
#该文件指定了从一个进程发送到另一个进程的消息的最大长度(bytes)。进程间的消息传递是在内核的内存中进行的,不会交换到磁盘上,所以如果增加该值,则将增加操作系统所使用的内存数量。缺省设置:8192
kernel.msgmax = 65536
#该文件指定消息队列标识的最大数目,即系统范围内最大多少个消息队列。
kernel.msgmni = 2048
#表示开启SYN Cookies,当SYN等待队列溢出时,启用cookies来处理,可以防范少量的SYN攻击,默认为0,表示关闭。1表示启用
net.ipv4.tcp_syncookies = 1
#该文件表示是否打开IP转发。0:禁止 1:转发 缺省设置:0
net.ipv4.ip_forward = 0
#是否允许源地址经过路由。0:禁止 1:打开 缺省设置:0
net.ipv4.conf.default.accept_source_route = 0
#增加TCP SYN队列长度,使系统可以处理更多的并发连接。一般为4096,可以调大,必须是4096的倍数,建议是2-3倍
net.ipv4.tcp_max_syn_backlog = 4096
#表示控制具体应该由哪块网卡来回应arp包,缺省设置0, 建议设置为1
net.ipv4.conf.all.arp_filter = 1
#进入包的最大设备队列.默认是1000,对重负载服务器而言,该值太低,可调整到16384/32768/65535
net.core.netdev_max_backlog = 4096
#最大socket读buffer,可参考的优化值:1746400/3492800/6985600
net.core.rmem_max = 2097152
#最大socket写buffer,可参考的优化值:1746400/3492800/6985600
net.core.wmem_max = 2097152
#当物理内存超过设置的值是开始使用swap的内存空间,计算公式是100-1=99%表示物理内存使用到99%时开始交换分区使用
#vm.swappiness = 10
#echo 0 > /proc/sys/vm/zone_reclaim_mode:意味着关闭zone_reclaim模式,可以从其他zone或NUMA节点回收内存。
#echo 1 > /proc/sys/vm/zone_reclaim_mode:表示打开zone_reclaim模式,这样内存回收只会发生在本地节点内。
#echo 2 > /proc/sys/vm/zone_reclaim_mode:在本地回收内存时,可以将cache中的脏数据写回硬盘,以回收内存。
#echo 4 > /proc/sys/vm/zone_reclaim_mode:可以用swap方式回收内存。
vm.zone_reclaim_mode = 0
#系统脏页到达这个值,系统后台刷脏页调度进程 pdflush(或其他) 自动将(dirty_expire_centisecs/100)秒前的脏页刷到磁盘
vm.dirty_expire_centisecs = 500
#有效防止用户进程刷脏页,在单机多实例,并且使用CGROUP限制单实例IOPS的情况下非常有效。
vm.dirty_writeback_centisecs = 100
#系统内存>=64G 可以考虑设置以下参数
#vm.dirty_background_ratio = 0 # See System Memory
#vm.dirty_ratio = 0
#vm.dirty_background_bytes = 1610612736
#vm.dirty_bytes = 4294967296
#----end----
" >> /etc/sysctl.conf
sysctl -p
2.3 配置limits.conf
配置资源使用限制/etc/security/limits.conf和/etc/security/limits.d/20-nproc.conf
echo "
* soft nofile 65536
* hard nofile 65536
* soft nproc 131072
* hard nproc 131072
" >> /etc/security/limits.conf
echo "
# Default limit for number of user's processes to prevent
# accidental fork bombs.
# See rhbz #432903 for reasoning.
* soft nproc 10132
root soft nproc unlimited
" >>/etc/security/limits.d/20-nproc.conf
2.4 关闭防火墙和selinux
systemctl disable firewalld
systemctl stop firewalld
setenforce 0
sed -i 's/=enforcing/=disabled/g' /etc/selinux/config
#或者执行下面的命令
#检查防火墙状态
systemctl status firewalld
#关闭防火墙
systemctl stop firewalld
#启动自动关闭
systemctl disable firewalld
2.5 创建gp用户
需要创建一个特定的用户运行gp,一般为gpadmin:
创建gpadmin用户组:
groupadd -r -g 300 gpadmin
useradd -r -m -g gpadmin -u 300 gpadmin
echo gpadmin | passwd gpadmin --stdin
生成SSH key
su gpadmin
ssh-keygen -t rsa -b 4096
#一路回车
(可选择配置)配置visudo,保证gpadmin用户可以不需要密码进行sudo命令
visudo #找到%wheel ALL=(ALL) NOPASSWD: ALL 取消其注释,意思是wheel组可以无密码sudo
usermod -aG wheel gpadmin #将gpadmin加入到wheel组
2.6 安装依赖包
除了对操作系统的要求外,还需要安装一些常用的软件包或工具,例如sed,perl,tar等,这里你需要先配置yum源:
yum install -y apr apr-util bash bzip2 curl krb5 libcurl libevent libevent2 libxml2 \
libyaml zlib openldap openssh openssl openssl-libs perl readline rsync \
R sed tar zip apr apr-util libyaml libevent java ntp
2.7 创建数据目录(切换回root用户)
我们这里使用的磁盘为/dev/sdb ,挂载目录为/data
注意:
The only file system supported for running Greenplum Database is the XFS file system. All other file systems are explicitly not supported by Pivotal.
官网提示,gp只支持xfs文件系统,不支持其它文件系统
pvcreate /dev/sdb
vgcreate datavg /dev/sdb
lvcreate -L +49.9G -n datalv datavg
mkfs.xfs /dev/datavg/datalv
mkdir /data
echo "/dev/datavg/datalv /data xfs nodev,noatime,nobarrier,inode64 0 0" >> /etc/fstab
mount -a
chown -R gpadmin:gpadmin /data
注意:本地虚拟机没有磁盘挂载,之间创建数据目录就可以
mkdir /data
chown -R gpadmin:gpadmin /data
2.8 磁盘IO配置(虚拟机vmware不需要执行)
预读值
- 每个磁盘设备文件都应预读(块设备)值16384。要查看磁盘设备的预读值,请执行以下操作:
/sbin/blockdev --getra devname
例如,我们这里是sdb
[root@gp2 ~]# /sbin/blockdev --getra /dev/sdb
8192
要在设备上设置blockdev(预读):
/sbin/blockdev --setra bytes devname
例如:
/sbin/blockdev --setra 16384 /dev/sdb
需要将此配置添加到开机自动启动中:
echo "/sbin/blockdev --setra 16384 /dev/sdb" >>/etc/rc.local
chmod +x /etc/rc.d/rc.local
磁盘IO调度
用于磁盘访问的Linux磁盘I / O调度程序支持不同的策略,例如 CFQ, AS, deadline。
- 建议使用deadline调度程序选项。要在下一次系统重新引导之前指定调度程序,请运行以下命令:
echo schedulername > /sys/block/devname/queue/scheduler
例如:
echo deadline > /sys/block/sdb/queue/scheduler
永久生效,7.X中使用grup命令进行修改
grubby --update-kernel=ALL --args="elevator=deadline"
查看
grubby --info=ALL
或者使用下面查看:
cat /sys/block/sdb/queue/scheduler
2.9 关闭透明大页(THP)(虚拟机vmware不需要执行)
同样的,在7.X系列中使用grup命令进行修改
grubby --update-kernel=ALL --args="transparent_hugepage=never"
检查是否修改成功:
cat /sys/kernel/mm/*transparent_hugepage/enabled
#结果
always [never]
2.10 IPC对象删除
禁用RHEL 7.2或CentOS 7.2或Ubuntu的IPC对象删除。默认值 系统的 设置 RemoveIPC =YES 非系统用户帐户注销时删除IPC连接。这将导致Greenplum数据库实用程序 gpinitsystem因信号错误而失败。请执行以下操作之一以避免出现此问题
修改/etc/systemd/logind.conf
echo "RemoveIPC=no" >>/etc/systemd/logind.conf
systemctl restart systemd-logind
2.11 SSH连接阈值
某些Greenplum数据库管理实用程序包括 gpexpand, gpinitsystem和 gpaddmirrors,请使用系统之间的SHELL(SSH)连接来执行其任务。在大型Greenplum数据库部署,云部署或每台主机具有大量分段的部署中,这些实用程序可能会超出主机的未认证连接的最大阈值。发生这种情况时,您会收到以下错误:ssh_exchange_identification:连接被远程主机关闭。
要增加Greenplum数据库系统的此连接阈值,请更新SSH MaxStartups 和 最大会话数 配置参数之一 /etc/ssh sshd_config 要么 /etc/sshd_config SSH守护程序配置文件。如果指定 MaxStartups 和 最大会话数 使用单个整数值,您可以确定并发未认证连接的最大数量(MaxStartups)以及每个网络连接允许的最大外壳程序,登录或子系统会话数(最大会话数)。例如:
MaxStartups 200
MaxSessions 200
如果指定 MaxStartups使用“ start:rate:full ”语法,可以通过SSH守护程序启用随机的早期连接删除。start标识允许的最大未经身份验证的SSH连接尝试次数。一旦达到未经身份验证的连接尝试的起始次数,SSH守护程序将拒绝后续连接尝试的速率百分比。“完全”标识未经身份验证的连接尝试的最大数量,之后所有尝试都将被拒绝。例如:
echo "
MaxStartups 10:30:200
MaxSessions 200
" >> /etc/ssh/sshd_config
systemctl restart sshd
2.12 时钟同步(NTP)
您应该使用NTP(网络时间协议)来同步组成Greenplum数据库系统的所有主机上的系统时钟。有关NTP的更多信息,请参见www.ntp.org。
在segment主机上的NTP应该配置为将master主机用作主要时间源,将备用主控机用作辅助时间源。在主备主机上,将NTP配置为指向首选时间服务器。
- 在master节点配置数据中心的时间,例如我这里的ntp源为192.168.152.138
echo "
server 192.168.152.138
" >> /etc/ntp.conf
- 在standby端配置master节点为优先,ntp源为次(我这里的环境,没有配置standby节点)
echo "
server gpmaster prefer
server 192.168.56.1
" >> /etc/ntp.conf
- 在数据节点配置为master节点的IP为优先,standby端为次
echo "
server gpmaster prefer
servier gpmaster-standby prefer
" >> /etc/ntp.conf
#没有standby 用下面的
echo "
server gpmaster prefer
" >> /etc/ntp.conf
3.安装GP数据库软件
3.1 安装GP数据库
您必须在Greenplum数据库系统的每台主机上安装Greenplum数据库。Pivotal将Greenplum数据库软件作为可下载的软件包分发,您可以使用操作系统的软件包管理系统将其安装在每个主机系统上。您可以从Pivotal Network下载该软件包。
在开始安装Greenplum Database之前,请确保已完成“ 配置系统”中的步骤, 以配置Greenplum Database的每个主,备用主服务器和段主机。
重要:安装Greenplum数据库后,必须设置Greenplum数据库环境变量。请参阅设置Greenplum环境变量。
有关示例脚本,请参见Ansible Playbook示例,该脚本显示了如何自动创建gpadmin 用户并安装Greenplum数据库。
请按照以下说明安装Greenplum数据库。
重要提示:您需要sudo或root用户访问权限,才能从预构建的RPM或DEB文件进行安装。
下载Greenplum数据库软件包并将其复制到 gpadmin主机,备用主机和每个段主机上的用户主目录。分发文件名具有以下格式 greenplum-db- <版本>-<平台> .rpm 用于RHEL和CentOS系统,或 greenplum-db- <版本>-<平台> .deb 对于Ubuntu系统, <平台> 类似于 rhel7-x86_64 (Red Hat 7 64位)。
使用sudo(或root),使用系统的程序包管理器软件在每台主机上安装Greenplum Database程序包。
- 对于RHEL / CentOS系统,执行命令:
#使用yum默认会将软件安装到/usr/local/greenplum-db-<版本>下
yum install -y greenplum-db-6.10.0-rhel7-x86_64.rpm
#或者使用rpm
rpm -ivh greenplum-db-6.10.0-rhel7-x86_64.rpm
#如果想将软件安装到指定目录下,必须使用rpm安装,并且指定安装目录
rpm -ivh greenplum-db-6.10.0-rhel7-x86_64.rpm --prefix=/usr/local/gp6.10
使用 yum将会自动安装所依赖的软件包,并且将Greenplum数据库软件文件复制到版本特定的目录下 /usr/lcoal, /usr/local/greenplum-db-<版本>,并创建符号链接/usr/local/greenplum-db 到安装目录。
注意:如果是内网环境,yml不行进行下载,请使用rpm命令安装,安装前,请将依赖导入临时路径,并执行以下命令安装缺失的依赖
rpm -ivh /app/gp/rpm/libsepol-devel-2.5-10.el7.x86_64.rpm
rpm -ivh /app/gp/rpm/pcre-devel-8.32-17.el7.x86_64.rpm
rpm -ivh /app/gp/rpm/pkgconfig-0.27.1-4.el7.x86_64.rpm
rpm -ivh /app/gp/rpm/libverto-devel-0.2.5-4.el7.x86_64.rpm
rpm -ivh /app/gp/rpm/libselinux-devel-2.5-14.1.el7.x86_64.rpm
rpm -ivh /app/gp/rpm/libkadm5-1.15.1-37.el7_6.x86_64.rpm
rpm -ivh /app/gp/rpm/libcom_err-devel-1.42.9-16.el7.x86_64.rpm
rpm -ivh /app/gp/rpm/keyutils-libs-devel-1.5.8-3.el7.x86_64.rpm
rpm -ivh /app/gp/rpm/krb5-devel-1.15.1-37.el7_6.x86_64.rpm
rpm -ivh /app/gp/rpm/libevent-2.0.21-4.el7.x86_64.rpm
rpm -ivh /app/gp/rpm/libyaml-0.1.4-11.el7_0.x86_64.rpm
#上面安装完成了之后,执行gp的安装命令
#gp安装命令
rpm -ivh /app/gp/greenplum-db-6.10.0-rhel7-x86_64.rpm
将所有者和已安装文件的组更改为 gpadmin:
chown -R gpadmin:gpadmin /usr/local/greenplum*
chgrp -R gpadmin /usr/local/greenplum*
3.2 配置SSH等价(切换gpadmin用户)
gpadmin每个Greenplum主机上的用户必须能够从群集中的任何主机SSH到群集中的任何其他主机,而无需输入密码或口令(称为“无口令SSH”)。
如果您启用了从主控主机到群集中其他所有主机的无密码SSH (“ 1- n无密码SSH”),则可以使用Greenplum数据库gpssh-exkeys命令行实用程序,以启用从每个主机到其他主机的无密码SSH
1.使用gpadmin登录到master节点
2.source环境变量
source /usr/local/greenplum-db-6.10.0/greenplum_path.sh
3.使用 ssh-copy-id 命令添加 gpadmin 用户的公钥 授权主机 群集中其他所有主机上的SSH文件
ssh-copy-id gpmaster
ssh-copy-id gpsegment1
ssh-copy-id gpsegment2
测试ssh等价是否完成,使用下面命令都不需要输入密码则表示配置成功:
ssh gpmaster date
ssh gpsegment1 date
ssh gpsegment2 date
4.创建hostfile-exkeys文件
在里面 gpadmin 家目录,创建一个名为 hostfile_exkeys为计算机配置了Greenplum系统中每个主机(主机,备用主机和SEGMENT主机)的主机名和主机地址(接口名称)。确保没有空白行或多余的空格。检查 /etc/ hosts文件在您的系统上,以获取要用于您的环境的正确主机名。例如,我们这里:
echo "gpmaster
gpsegment1
gpsegment2" > ~/hostfile_exkeys
echo "cm01
cm02
cm03" > ~/hostfile_exkeys
5.使用gpssh-exkeys启用无密码访问
[gpadmin@gp1 ~]$ gpssh-exkeys -f ~/hostfile_exkeys
[STEP 1 of 5] create local ID and authorize on local host
... /home/gpadmin/.ssh/id_rsa file exists ... key generation skipped
[STEP 2 of 5] keyscan all hosts and update known_hosts file
[STEP 3 of 5] retrieving credentials from remote hosts
... send to gpmaster-priv
... send to gpsegment1
... send to gpsegment1-priv
... send to gpsegment2
... send to gpsegment2-priv
[STEP 4 of 5] determine common authentication file content
[STEP 5 of 5] copy authentication files to all remote hosts
... finished key exchange with gpmaster-priv
... finished key exchange with gpsegment1
... finished key exchange with gpsegment1-priv
... finished key exchange with gpsegment2
... finished key exchange with gpsegment2-priv
[INFO] completed successfully
6.使用gpssh确认免密码登录配置成功
要确保正确安装和配置了Greenplum软件,请从Greenplum master主机运行以下确认步骤。如有必要,请纠正任何问题,然后再继续执行下一个任务。
[gpadmin@gp1 ~]$ gpssh -f ~/hostfile_exkeys -e 'ls -l /usr/local/greenplum-db'
[gp1] ls -l /usr/local/greenplum-db
[gp1] lrwxrwxrwx 1 gpadmin gpadmin 30 Aug 27 12:27 /usr/local/greenplum-db -> /usr/local/ greenplum-db-6.10.0
[gp3] ls -l /usr/local/greenplum-db
[gp3] lrwxrwxrwx 1 gpadmin gpadmin 30 Aug 27 12:27 /usr/local/greenplum-db -> /usr/local/ greenplum-db-6.10.0
[gp2] ls -l /usr/local/greenplum-db
[gp2] lrwxrwxrwx 1 gpadmin gpadmin 30 Aug 27 12:27 /usr/local/greenplum-db -> /usr/local/ greenplum-db-6.10.0
如果安装成功,则会显示每个节点的gp的安装目录,如果还需要输入密码,则使用:
gpssh-exkeys -f ~/hostfile_exkeys
继续进行配置
3.3 在所有节点配置ssh等价
登录gpadmin用户,在其它所有的节点执行以下命令:
source /usr/local/greenplum-db-6.10.0/greenplum_path.sh
echo "
source /usr/local/greenplum-db-6.10.0/greenplum_path.sh
" >> ~/.bash_profile
. ~/.bash_profile
echo "gpmaster
gpsegment1
gpsegment2" > ~/hostfile_exkeys
gpssh-exkeys -f ~/hostfile_exkeys
source /usr/local/greenplum-db-6.10.0/greenplum_path.sh
echo "
source /usr/local/greenplum-db-6.10.0/greenplum_path.sh
" >> ~/.bash_profile
. ~/.bash_profile
echo "cm01
cm01
cm01" > ~/hostfile_exkeys
gpssh-exkeys -f ~/hostfile_exkeys
配置完成使用相同的命令进行检查:
gpssh -f ~/hostfile_exkeys -e 'ls -l /usr/local/greenplum-db'
[gpadmin@gp3 local]$ gpssh -f ~/hostfile_exkeys -e 'ls -l /usr/local/greenplum-db'
[gp3] ls -l /usr/local/greenplum-db
[gp3] lrwxrwxrwx 1 gpadmin gpadmin 30 Aug 27 12:27 /usr/local/greenplum-db -> /usr/local/ greenplum-db-6.10.0
[gp1] ls -l /usr/local/greenplum-db
[gp1] lrwxrwxrwx 1 gpadmin gpadmin 30 Aug 27 12:27 /usr/local/greenplum-db -> /usr/local/ greenplum-db-6.10.0
[gp2] ls -l /usr/local/greenplum-db
[gp2] lrwxrwxrwx 1 gpadmin gpadmin 30 Aug 27 12:27 /usr/local/greenplum-db -> /usr/local/ greenplum-db-6.10.0
#如果能显示所有节点的安装软件,则表示配置成功
3.4 安装文件说明
关Greenplum数据库安装文件说明如下:
-
greenplum_path.sh—该文件包含Greenplum数据库的环境变量。请参阅设置Greenplum环境变量。
-
bin-此目录包含Greenplum数据库管理实用程序。此目录还包含PostgreSQL客户端和服务器程序,其中大多数也在Greenplum数据库中使用。
-
docs / cli_help-此目录包含Greenplum数据库命令行实用程序的帮助文件。
-
docs / cli_help / gpconfigs-此目录包含示例 gpinitsystem 在安装和初始化Greenplum数据库系统时可以修改和使用的配置文件和主机文件。
-
ext —一些Greenplum Database实用程序使用的捆绑程序(例如Python)。
-
influde — Greenplum数据库的C头文件。
-
lib — Greenplum数据库和PostgreSQL库文件。
-
sbin —支持/内部脚本和程序。
-
share — Greenplum数据库的共享文件
4.创建数据存储区域
描述如何为每个master实例,standby实例和segment实例创建存储Greenplum数据库数据的目录位置。
4.1 在master和standby上创建存储区域
Greenplum数据库master数据库和standby主数据库主机上都需要一个数据存储区,以存储Greenplum数据库系统数据,例如目录数据和其他系统元数据。
主目录上的数据目录位置与段上的数据目录位置不同。主服务器不存储任何用户数据,只有系统目录表和系统元数据存储在主服务器实例上,因此您不需要指定与段上一样多的存储空间。
1.创建或选择一个目录作为您的master数据存储区域。该目录应具有足够的磁盘空间来存储您的数据,并由gpadmin用户和组。例如,运行以下命令根:(root用户)
这里我们在系统配置阶段已经配置xfs文件系统,挂载目录为/data,我们将master目录指定到/data/master中
mkdir -p /data/master
2.将此目录的所有权更改为 gpadmin 用户。(root用户)例如:
chown -R gpadmin:gpadmin /data/master
3.使用 gpssh,也在备用主数据库上创建主数据目录位置。例如:(gpadmin用户)
由于是测试环境,我们这里其实没有使用standby数据库(生产环境建议配置standby实例,防止master故障导致集群不可用),这里假设standby实例主机为gpmaster-standby
source /usr/local/greenplum-db/greenplum_path.sh
gpssh -h gpmaster-standby -e'mkdir -p /data/ master'
gpssh -h gpmaster-standby -e'chown gpadmin:gpadmin /data/master'
4.2 在semgents实例创建存储区域
Greenplum数据库segment主机上的主要segment需要数据存储区。镜像段需要单独的存储区域。
1.创建一个名为 hostfile_gpssh_segonly。对于每个segment主机,此文件应只有一台机器配置的主机名。例如,我们这里有两台segment节点,使用内部网络:
echo "gpsegment1
gpsegment2 " > ~/hostfile_gpssh_segonly
2.在master节点使用 gpssh 一次在所有segment主机上创建主数据目录和镜像数据目录位置 ,hostfile_gpssh_segonly您刚创建的文件。例如:我们创建primary为主目录,mirror为镜像文件目录
source /usr/local/greenplum-db/greenplum_path.sh
gpssh -f ~/hostfile_gpssh_segonly -e 'mkdir -p /data/primary'
gpssh -f ~/hostfile_gpssh_segonly -e 'mkdir -p /data/mirror'
gpssh -f ~/hostfile_gpssh_segonly -e 'chown -R gpadmin /data/*'
5.验证系统
验证您的硬件和网络性能。
Greenplum提供了一个名为 gpcheckperf,可用于识别Greenplum数据库阵列中计算机上的硬件和系统级问题。 gpcheckperf 在指定的主机上启动会话并运行以下性能测试:
- 网络性能(gpnetbench *)
- 磁盘I / O性能(dd 测试)
- 内存带宽(流测试)
使用之前 gpcheckperf,您必须在性能测试所涉及的主机之间建立受信任的主机设置。您可以使用该实用程序gpssh-exkeys更新已知的主机文件并在主机之间交换公钥(如果尚未这样做)。注意 gpcheckperf 调用 gpssh 和 gpscp,因此这些Greenplum实用程序必须位于您的 $ PATH。
5.1 验证网络性能
要测试网络性能,请运行 gpcheckperf 使用网络测试运行选项之一:并行对测试(r),串行对测试(-rn)或全矩阵测试(-R M)。
该实用程序运行一个网络基准程序,该程序将5秒钟的数据流从当前主机传输到测试中包括的每个远程主机。默认情况下,数据以并行方式传输到每个远程主机,最小,最大,平均和中值网络传输速率以每秒兆字节(MB)报告。如果结果传输速率比预期的慢(小于100 MB / s),则可以使用以下命令连续运行网络测试-rn选项以获得每个主机的结果。要运行全矩阵带宽测试,您可以指定-RM这将导致每个主机从指定的每个其他主机发送和接收数据。此测试最适合用来验证交换结构是否可以承受全矩阵工作负载。
Greenplum数据库阵列中的大多数系统都配置有多个网络接口卡(NIC),每个NIC都位于其自己的子网上。测试网络性能时,单独测试每个子网很重要。例如,我们目前的环境有两个网段分别为业务网端192.168.56.0和内部网段12.12.12.0 那么就需要测试这两个网段的性能:
这里我们master上创建单独的主机文件,存放网段的主机名:
echo "gpsegment1
gpsegment2" >~/seg_host1
使用gpcheckperf 进行网络测试:
gpcheckperf -f ~/seg_host1 -r N -d /tmp
##第一个网段测试:
[gpadmin@gp1 ~]$ gpcheckperf -f ~/seg_host1 -r N -d /tmp
/usr/local/ greenplum-db-6.10.0/bin/gpcheckperf -f /home/gpadmin/seg_host1 -r N -d /tmp
-------------------
-- NETPERF TEST
-------------------
NOTICE: -t is deprecated, and has no effect
NOTICE: -f is deprecated, and has no effect
NOTICE: -t is deprecated, and has no effect
NOTICE: -f is deprecated, and has no effect
====================
== RESULT 2020-08-28T00:26:53.510456
====================
Netperf bisection bandwidth test
gpsegment1 -> gpsegment2 = 252.820000
gpsegment2 -> gpsegment1 = 289.470000
Summary:
sum = 542.29 MB/sec
min = 252.82 MB/sec
max = 289.47 MB/sec
avg = 271.14 MB/sec
median = 289.47 MB/sec
[Warning] connection between gpsegment1 and gpsegment2 is no good
5.2 验证磁盘IO和内存带宽
要测试磁盘和内存带宽性能,请运行 gpcheckperf 带有磁盘和流测试运行选项(-r ds)。磁盘测试使用dd命令(标准UNIX实用程序)以测试逻辑磁盘或文件系统的顺序吞吐性能。内存测试使用STREAM基准程序来测量可持续的内存带宽。结果以MB /秒(MB / s)报告。
1.创建一个包含所有segment节点的主机名文件hostfile_gpcheckperf
echo "gpsegment1
gpsegment2">~/hostfile_gpcheckperf
2.执行gpcheckperf 实用程序使用 hostfile_gpcheckperf您刚创建的文件。使用 -d选项以指定要在每个主机上测试的文件系统(您必须具有对这些目录的写访问权)。您将要测试所有主要和镜像段数据目录位置。例如我们这里:
gpcheckperf -f ~/hostfile_gpcheckperf -r ds -D \
-d /data/primary -d /data/mirror
##如果有多个目录需要测试,则继续使用-d选项接目录位置
##下面是执行结果:
[gpadmin@gp1 ~]$ gpcheckperf -f ~/hostfile_gpcheckperf -r ds -D \
> -d /data/primary -d /data/mirror
/usr/local/ greenplum-db-6.10.0/bin/gpcheckperf -f /home/gpadmin/hostfile_gpcheckperf -r ds -D -d /data/primary -d /data/mirror
--------------------
-- DISK WRITE TEST
--------------------
--------------------
-- DISK READ TEST
--------------------
--------------------
-- STREAM TEST
--------------------
====================
== RESULT 2020-08-28T00:42:43.319323
====================
disk write avg time (sec): 84.16
disk write tot bytes: 65611694080
disk write tot bandwidth (MB/s): 743.51
disk write min bandwidth (MB/s): 370.03 [gp3-priv]
disk write max bandwidth (MB/s): 373.48 [gp2-priv]
-- per host bandwidth --
disk write bandwidth (MB/s): 373.48 [gp2-priv]
disk write bandwidth (MB/s): 370.03 [gp3-priv]
disk read avg time (sec): 13.66
disk read tot bytes: 65611694080
disk read tot bandwidth (MB/s): 4579.39
disk read min bandwidth (MB/s): 2268.75 [gp3-priv]
disk read max bandwidth (MB/s): 2310.64 [gp2-priv]
-- per host bandwidth --
disk read bandwidth (MB/s): 2310.64 [gp2-priv]
disk read bandwidth (MB/s): 2268.75 [gp3-priv]
stream tot bandwidth (MB/s): 47291.90
stream min bandwidth (MB/s): 22023.10 [gp2-priv]
stream max bandwidth (MB/s): 25268.80 [gp3-priv]
-- per host bandwidth --
stream bandwidth (MB/s): 22023.10 [gp2-priv]
stream bandwidth (MB/s): 25268.80 [gp3-priv]
##我这里使用的是nvme的SSD,可以看到读写速度是非常高的
6.初始化数据库
介绍如何初始化Greenplum数据库数据库系统。
6.1 初始化步骤说明
因为Greenplum数据库是分布式的,所以初始化Greenplum数据库管理系统(DBMS)的过程涉及初始化几个单独的PostgreSQL数据库实例(在Greenplum中称为segment实例)。
每个数据库实例(master数据库和所有segment)都必须在系统中的所有主机之间进行初始化,以使它们都可以作为统一的DBMS一起工作。Greenplum提供了自己的版本初始化数据库 叫 gpinitsystem,它负责在主数据库和每个段实例上初始化数据库,并以正确的顺序启动每个实例。
初始化并启动Greenplum数据库数据库系统后,您可以通过连接到Greenplum主数据库,像在常规PostgreSQL DBMS中一样创建和管理数据库。
初始化Greenplum数据库步骤
1.确保已完成配置系统和安装Greenplum数据库软件中描述的所有安装任务 。
2.创建一个包含文件segment主机地址的主机文件 。例如前面配置~/hostfile_gpssh_segonly。
3.创建您的Greenplum数据库系统配置文件。请参阅创建Greenplum数据库配置文件。
4.默认情况下,Greenplum数据库将使用master主机系统的语言环境进行初始化。确保这是您要使用的正确语言环境,因为某些语言环境选项在初始化后无法更改。有关更多信息,请参见配置时区和本地化设置。
5.在主控主机上运行Greenplum数据库初始化实用程序。请参阅 运行初始化实用程序。
6.设置Greenplum数据库时区。请参阅设置Greenplum数据库时区。
7.为Greenplum数据库用户设置环境变量。请参阅设置Greenplum环境变量。
6.2 创建初始化主机文件
创建一个名为host_seg。在此文件中,添加segment主机接口的主机地址名称,每行一个名称,没有多余的行或空格。
mkdir -p /home/gpadmin/gpconfigs
echo "gpsegment1
gpsegment2"> ~/gpconfigs/host_seg
6.3 创建gp配置文件
1.拷贝gpinitsystem_config文件
mkdir -p /home/gpadmin/gpconfigs
cp $GPHOME/docs/cli_help/gpconfigs/gpinitsystem_config \
/home/gpadmin/gpconfigs/gpinitsystem_config
2.根据实际环境修改配置文件
此处不用改,直接用默认的文件,修改一下三个参数就行
declare -a DATA_DIRECTORY=(/data/primary) #一个primary实例 多了容易安装失败
MASTER_HOSTNAME=gp1 #
declare -a MIRROR_DATA_DIRECTORY=(/data/mirror) #一个mirror实例 多了容易安装失败
[gpadmin@gp1 gpconfigs]$ grep -v ^# gpinitsystem_config
ARRAY_NAME="Greenplum Data Platform"
SEG_PREFIX=gpseg
PORT_BASE=6000
declare -a DATA_DIRECTORY=(/data/primary /data/primary)
MASTER_HOSTNAME=gp1
MASTER_DIRECTORY=/data/master
#指定 PORT_BASE,查看在 net.ipv4.ip_local_port_range 中的参数 /etc/sysctl.conf文件
MASTER_PORT=5432
TRUSTED_SHELL=ssh
CHECK_POINT_SEGMENTS=
ENCODING=UNICODE
##这里我开启了镜像
MIRROR_PORT_BASE=7000
declare -a MIRROR_DATA_DIRECTORY=(/data/mirror /data/mirror)
##注意,DATA_DIRECTORY和MIRROR_DATA_DIRECTORY的配置,参数是确定每个主机将创建多少段的参数。.例如我这里目录名称写了两遍,那么每个segment节点将创建两个segment
6.4 执行初始化程序
gpinitsystem 实用程序将使用配置文件中定义的值来创建Greenplum数据库系统。
这些步骤假定您以 gpadmin 用户,并已来源 greenplum_path.sh 文件来设置Greenplum数据库环境变量。
**1.运行以下命令,以引用初始化配置文件的路径和文件名(gpinitsystem_config)和主机文件(hostfile_gpinitsystem)。例如:
cd /home/gpadmin/
#直接创建集群
# gpinitsystem -c /home/gpadmin/gpconfigs/gpinitsystem_config -h /home/gpadmin/gpconfigs/host_seg
gpinitsystem -c gpconfigs/gpinitsystem_config -h gpconfigs/host_seg ##中间输入y
#对于完全冗余的系统(具有备用主服务器和扩展镜像配置),请包括-s 和 -S选项
gpinitsystem -c gpconfigs/gpinitsystem_config -h gpconfigs/host_seg -s gpmaster-standby -S
#在创建新集群时,您可以使用 -O output_configuration_file选项将群集配置详细信息保存在文件中。
gpinitsystem -c gpconfigs/gpinitsystem_config -O gpconfigs/config_template
下面是安装过程的日志:
[gpadmin@gp1 ~]$ gpinitsystem -c gpconfigs/gpinitsystem_config -h gpconfigs/host_seg
20200828:02:33:34:018783 gpinitsystem:gp1:gpadmin-[INFO]:-Checking configuration parameters, please wait...
20200828:02:33:34:018783 gpinitsystem:gp1:gpadmin-[INFO]:-Reading Greenplum configuration file gpconfigs/gpinitsystem_config
20200828:02:33:34:018783 gpinitsystem:gp1:gpadmin-[INFO]:-Locale has not been set in gpconfigs/gpinitsystem_config, will set to default value
20200828:02:33:34:018783 gpinitsystem:gp1:gpadmin-[INFO]:-Locale set to en_US.utf8
20200828:02:33:34:018783 gpinitsystem:gp1:gpadmin-[WARN]:-Master hostname gpmaster-priv does not match hostname output
20200828:02:33:34:018783 gpinitsystem:gp1:gpadmin-[INFO]:-Checking to see if gpmaster-priv can be resolved on this host
20200828:02:33:34:018783 gpinitsystem:gp1:gpadmin-[INFO]:-Can resolve gpmaster-priv to this host
20200828:02:33:34:018783 gpinitsystem:gp1:gpadmin-[INFO]:-No DATABASE_NAME set, will exit following template1 updates
20200828:02:33:34:018783 gpinitsystem:gp1:gpadmin-[INFO]:-MASTER_MAX_CONNECT not set, will set to default value 250
20200828:02:33:34:018783 gpinitsystem:gp1:gpadmin-[INFO]:-Checking configuration parameters, Completed
20200828:02:33:34:018783 gpinitsystem:gp1:gpadmin-[INFO]:-Commencing multi-home checks, please wait...
..
20200828:02:33:35:018783 gpinitsystem:gp1:gpadmin-[INFO]:-Configuring build for standard array
20200828:02:33:35:018783 gpinitsystem:gp1:gpadmin-[INFO]:-Commencing multi-home checks, Completed
20200828:02:33:35:018783 gpinitsystem:gp1:gpadmin-[INFO]:-Building primary segment instance array, please wait...
....
20200828:02:33:36:018783 gpinitsystem:gp1:gpadmin-[INFO]:-Building group mirror array type , please wait...
....
20200828:02:33:37:018783 gpinitsystem:gp1:gpadmin-[INFO]:-Checking Master host
20200828:02:33:37:018783 gpinitsystem:gp1:gpadmin-[INFO]:-Checking new segment hosts, please wait...
........
20200828:02:33:44:018783 gpinitsystem:gp1:gpadmin-[INFO]:-Checking new segment hosts, Completed
20200828:02:33:44:018783 gpinitsystem:gp1:gpadmin-[INFO]:-Greenplum Database Creation Parameters
20200828:02:33:44:018783 gpinitsystem:gp1:gpadmin-[INFO]:---------------------------------------
20200828:02:33:44:018783 gpinitsystem:gp1:gpadmin-[INFO]:-Master Configuration
20200828:02:33:44:018783 gpinitsystem:gp1:gpadmin-[INFO]:---------------------------------------
20200828:02:33:44:018783 gpinitsystem:gp1:gpadmin-[INFO]:-Master instance name = Greenplum Data Platform
20200828:02:33:44:018783 gpinitsystem:gp1:gpadmin-[INFO]:-Master hostname = gpmaster-priv
20200828:02:33:44:018783 gpinitsystem:gp1:gpadmin-[INFO]:-Master port = 5432
20200828:02:33:44:018783 gpinitsystem:gp1:gpadmin-[INFO]:-Master instance dir = /data/master/gpseg-1
20200828:02:33:44:018783 gpinitsystem:gp1:gpadmin-[INFO]:-Master LOCALE = en_US.utf8
20200828:02:33:44:018783 gpinitsystem:gp1:gpadmin-[INFO]:-Greenplum segment prefix = gpseg
20200828:02:33:44:018783 gpinitsystem:gp1:gpadmin-[INFO]:-Master Database =
20200828:02:33:44:018783 gpinitsystem:gp1:gpadmin-[INFO]:-Master connections = 250
20200828:02:33:44:018783 gpinitsystem:gp1:gpadmin-[INFO]:-Master buffers = 128000kB
20200828:02:33:44:018783 gpinitsystem:gp1:gpadmin-[INFO]:-Segment connections = 750
20200828:02:33:44:018783 gpinitsystem:gp1:gpadmin-[INFO]:-Segment buffers = 128000kB
20200828:02:33:44:018783 gpinitsystem:gp1:gpadmin-[INFO]:-Checkpoint segments = 8
20200828:02:33:44:018783 gpinitsystem:gp1:gpadmin-[INFO]:-Encoding = UNICODE
20200828:02:33:44:018783 gpinitsystem:gp1:gpadmin-[INFO]:-Postgres param file = Off
20200828:02:33:44:018783 gpinitsystem:gp1:gpadmin-[INFO]:-Initdb to be used = /usr/local/ greenplum-db-6.10.0/bin/initdb
20200828:02:33:44:018783 gpinitsystem:gp1:gpadmin-[INFO]:-GP_LIBRARY_PATH is = /usr/local/ greenplum-db-6.10.0/lib
20200828:02:33:44:018783 gpinitsystem:gp1:gpadmin-[INFO]:-HEAP_CHECKSUM is = on
20200828:02:33:44:018783 gpinitsystem:gp1:gpadmin-[INFO]:-HBA_HOSTNAMES is = 0
20200828:02:33:44:018783 gpinitsystem:gp1:gpadmin-[INFO]:-Ulimit check = Passed
20200828:02:33:44:018783 gpinitsystem:gp1:gpadmin-[INFO]:-Array host connect type = Single hostname per node
20200828:02:33:44:018783 gpinitsystem:gp1:gpadmin-[INFO]:-Master IP address [1] = ::1
20200828:02:33:44:018783 gpinitsystem:gp1:gpadmin-[INFO]:-Master IP address [2] = 12.12.12.1
20200828:02:33:44:018783 gpinitsystem:gp1:gpadmin-[INFO]:-Master IP address [3] = 192.168.0.106
20200828:02:33:44:018783 gpinitsystem:gp1:gpadmin-[INFO]:-Master IP address [4] = 192.168.56.91
20200828:02:33:44:018783 gpinitsystem:gp1:gpadmin-[INFO]:-Master IP address [5] = fe80::11e5:9a9d:7654:9536
20200828:02:33:44:018783 gpinitsystem:gp1:gpadmin-[INFO]:-Master IP address [6] = fe80::8b9c:d944:8d75:8e6
20200828:02:33:44:018783 gpinitsystem:gp1:gpadmin-[INFO]:-Master IP address [7] = fe80::b648:c2ad:14a9:2b25
20200828:02:33:44:018783 gpinitsystem:gp1:gpadmin-[INFO]:-Standby Master = Not Configured
20200828:02:33:44:018783 gpinitsystem:gp1:gpadmin-[INFO]:-Number of primary segments = 2
20200828:02:33:44:018783 gpinitsystem:gp1:gpadmin-[INFO]:-Total Database segments = 4
20200828:02:33:44:018783 gpinitsystem:gp1:gpadmin-[INFO]:-Trusted shell = ssh
20200828:02:33:44:018783 gpinitsystem:gp1:gpadmin-[INFO]:-Number segment hosts = 2
20200828:02:33:44:018783 gpinitsystem:gp1:gpadmin-[INFO]:-Mirror port base = 7000
20200828:02:33:44:018783 gpinitsystem:gp1:gpadmin-[INFO]:-Number of mirror segments = 2
20200828:02:33:44:018783 gpinitsystem:gp1:gpadmin-[INFO]:-Mirroring config = ON
20200828:02:33:44:018783 gpinitsystem:gp1:gpadmin-[INFO]:-Mirroring type = Group
20200828:02:33:44:018783 gpinitsystem:gp1:gpadmin-[INFO]:----------------------------------------
20200828:02:33:44:018783 gpinitsystem:gp1:gpadmin-[INFO]:-Greenplum Primary Segment Configuration
20200828:02:33:44:018783 gpinitsystem:gp1:gpadmin-[INFO]:----------------------------------------
20200828:02:33:44:018783 gpinitsystem:gp1:gpadmin-[INFO]:-gpsegment1 6000 gpsegment1-priv /data/primary/gpseg0 2
20200828:02:33:44:018783 gpinitsystem:gp1:gpadmin-[INFO]:-gpsegment1 6001 gpsegment1-priv /data/primary/gpseg1 3
20200828:02:33:44:018783 gpinitsystem:gp1:gpadmin-[INFO]:-gpsegment2 6000 gpsegment2-priv /data/primary/gpseg2 4
20200828:02:33:44:018783 gpinitsystem:gp1:gpadmin-[INFO]:-gpsegment2 6001 gpsegment2-priv /data/primary/gpseg3 5
20200828:02:33:44:018783 gpinitsystem:gp1:gpadmin-[INFO]:---------------------------------------
20200828:02:33:44:018783 gpinitsystem:gp1:gpadmin-[INFO]:-Greenplum Mirror Segment Configuration
20200828:02:33:44:018783 gpinitsystem:gp1:gpadmin-[INFO]:---------------------------------------
20200828:02:33:44:018783 gpinitsystem:gp1:gpadmin-[INFO]:-gpsegment2 7000 gpsegment2-priv /data/mirror/gpseg0 6
20200828:02:33:44:018783 gpinitsystem:gp1:gpadmin-[INFO]:-gpsegment2 7001 gpsegment2-priv /data/mirror/gpseg1 7
20200828:02:33:44:018783 gpinitsystem:gp1:gpadmin-[INFO]:-gpsegment1 7000 gpsegment1-priv /data/mirror/gpseg2 8
20200828:02:33:44:018783 gpinitsystem:gp1:gpadmin-[INFO]:-gpsegment1 7001 gpsegment1-priv /data/mirror/gpseg3 9
Continue with Greenplum creation Yy|Nn (default=N):
> y
20200828:02:33:49:018783 gpinitsystem:gp1:gpadmin-[INFO]:-Building the Master instance database, please wait...
20200828:02:34:10:018783 gpinitsystem:gp1:gpadmin-[INFO]:-Starting the Master in admin mode
20200828:02:34:12:018783 gpinitsystem:gp1:gpadmin-[INFO]:-Commencing parallel build of primary segment instances
20200828:02:34:12:018783 gpinitsystem:gp1:gpadmin-[INFO]:-Spawning parallel processes batch [1], please wait...
....
20200828:02:34:12:018783 gpinitsystem:gp1:gpadmin-[INFO]:-Waiting for parallel processes batch [1], please wait...
...........
20200828:02:34:23:018783 gpinitsystem:gp1:gpadmin-[INFO]:------------------------------------------------
20200828:02:34:23:018783 gpinitsystem:gp1:gpadmin-[INFO]:-Parallel process exit status
20200828:02:34:23:018783 gpinitsystem:gp1:gpadmin-[INFO]:------------------------------------------------
20200828:02:34:23:018783 gpinitsystem:gp1:gpadmin-[INFO]:-Total processes marked as completed = 4
20200828:02:34:23:018783 gpinitsystem:gp1:gpadmin-[INFO]:-Total processes marked as killed = 0
20200828:02:34:23:018783 gpinitsystem:gp1:gpadmin-[INFO]:-Total processes marked as failed = 0
20200828:02:34:23:018783 gpinitsystem:gp1:gpadmin-[INFO]:------------------------------------------------
20200828:02:34:23:018783 gpinitsystem:gp1:gpadmin-[INFO]:-Deleting distributed backout files
20200828:02:34:23:018783 gpinitsystem:gp1:gpadmin-[INFO]:-Removing back out file
20200828:02:34:23:018783 gpinitsystem:gp1:gpadmin-[INFO]:-No errors generated from parallel processes
20200828:02:34:23:018783 gpinitsystem:gp1:gpadmin-[INFO]:-Restarting the Greenplum instance in production mode
20200828:02:34:23:022130 gpstop:gp1:gpadmin-[INFO]:-Starting gpstop with args: -a -l /home/gpadmin/gpAdminLogs -m -d /data/master/gpseg-1
20200828:02:34:23:022130 gpstop:gp1:gpadmin-[INFO]:-Gathering information and validating the environment...
20200828:02:34:23:022130 gpstop:gp1:gpadmin-[INFO]:-Obtaining Greenplum Master catalog information
20200828:02:34:23:022130 gpstop:gp1:gpadmin-[INFO]:-Obtaining Segment details from master...
20200828:02:34:23:022130 gpstop:gp1:gpadmin-[INFO]:-Greenplum Version: 'postgres (Greenplum Database) 6.10.1 build commit:efba04ce26ebb29b535a255a5e95d1f5ebfde94e'
20200828:02:34:23:022130 gpstop:gp1:gpadmin-[INFO]:-Commencing Master instance shutdown with mode='smart'
20200828:02:34:23:022130 gpstop:gp1:gpadmin-[INFO]:-Master segment instance directory=/data/master/gpseg-1
20200828:02:34:23:022130 gpstop:gp1:gpadmin-[INFO]:-Stopping master segment and waiting for user connections to finish ...
server shutting down
20200828:02:34:24:022130 gpstop:gp1:gpadmin-[INFO]:-Attempting forceful termination of any leftover master process
20200828:02:34:24:022130 gpstop:gp1:gpadmin-[INFO]:-Terminating processes for segment /data/master/gpseg-1
20200828:02:34:24:022153 gpstart:gp1:gpadmin-[INFO]:-Starting gpstart with args: -a -l /home/gpadmin/gpAdminLogs -d /data/master/gpseg-1
20200828:02:34:24:022153 gpstart:gp1:gpadmin-[INFO]:-Gathering information and validating the environment...
20200828:02:34:24:022153 gpstart:gp1:gpadmin-[INFO]:-Greenplum Binary Version: 'postgres (Greenplum Database) 6.10.1 build commit:efba04ce26ebb29b535a255a5e95d1f5ebfde94e'
20200828:02:34:24:022153 gpstart:gp1:gpadmin-[INFO]:-Greenplum Catalog Version: '301908232'
20200828:02:34:24:022153 gpstart:gp1:gpadmin-[INFO]:-Starting Master instance in admin mode
20200828:02:34:25:022153 gpstart:gp1:gpadmin-[INFO]:-Obtaining Greenplum Master catalog information
20200828:02:34:25:022153 gpstart:gp1:gpadmin-[INFO]:-Obtaining Segment details from master...
20200828:02:34:25:022153 gpstart:gp1:gpadmin-[INFO]:-Setting new master era
20200828:02:34:25:022153 gpstart:gp1:gpadmin-[INFO]:-Master Started...
20200828:02:34:25:022153 gpstart:gp1:gpadmin-[INFO]:-Shutting down master
20200828:02:34:25:022153 gpstart:gp1:gpadmin-[INFO]:-Commencing parallel segment instance startup, please wait...
20200828:02:34:26:022153 gpstart:gp1:gpadmin-[INFO]:-Process results...
20200828:02:34:26:022153 gpstart:gp1:gpadmin-[INFO]:-----------------------------------------------------
20200828:02:34:26:022153 gpstart:gp1:gpadmin-[INFO]:- Successful segment starts = 4
20200828:02:34:26:022153 gpstart:gp1:gpadmin-[INFO]:- Failed segment starts = 0
20200828:02:34:26:022153 gpstart:gp1:gpadmin-[INFO]:- Skipped segment starts (segments are marked down in configuration) = 0
20200828:02:34:26:022153 gpstart:gp1:gpadmin-[INFO]:-----------------------------------------------------
20200828:02:34:26:022153 gpstart:gp1:gpadmin-[INFO]:-Successfully started 4 of 4 segment instances
20200828:02:34:26:022153 gpstart:gp1:gpadmin-[INFO]:-----------------------------------------------------
20200828:02:34:26:022153 gpstart:gp1:gpadmin-[INFO]:-Starting Master instance gpmaster directory /data/master/gpseg-1
20200828:02:34:27:022153 gpstart:gp1:gpadmin-[INFO]:-Command pg_ctl reports Master gpmaster instance active
20200828:02:34:27:022153 gpstart:gp1:gpadmin-[INFO]:-Connecting to dbname='template1' connect_timeout=15
20200828:02:34:27:022153 gpstart:gp1:gpadmin-[INFO]:-No standby master configured. skipping...
20200828:02:34:27:022153 gpstart:gp1:gpadmin-[INFO]:-Database successfully started
20200828:02:34:27:018783 gpinitsystem:gp1:gpadmin-[INFO]:-Completed restart of Greenplum instance in production mode
20200828:02:34:27:018783 gpinitsystem:gp1:gpadmin-[INFO]:-Commencing parallel build of mirror segment instances
20200828:02:34:27:018783 gpinitsystem:gp1:gpadmin-[INFO]:-Spawning parallel processes batch [1], please wait...
....
20200828:02:34:27:018783 gpinitsystem:gp1:gpadmin-[INFO]:-Waiting for parallel processes batch [1], please wait...
....
20200828:02:34:31:018783 gpinitsystem:gp1:gpadmin-[INFO]:------------------------------------------------
20200828:02:34:31:018783 gpinitsystem:gp1:gpadmin-[INFO]:-Parallel process exit status
20200828:02:34:31:018783 gpinitsystem:gp1:gpadmin-[INFO]:------------------------------------------------
20200828:02:34:31:018783 gpinitsystem:gp1:gpadmin-[INFO]:-Total processes marked as completed = 4
20200828:02:34:31:018783 gpinitsystem:gp1:gpadmin-[INFO]:-Total processes marked as killed = 0
20200828:02:34:31:018783 gpinitsystem:gp1:gpadmin-[INFO]:-Total processes marked as failed = 0
20200828:02:34:31:018783 gpinitsystem:gp1:gpadmin-[INFO]:------------------------------------------------
20200828:02:34:31:018783 gpinitsystem:gp1:gpadmin-[INFO]:-Scanning utility log file for any warning messages
20200828:02:34:31:018783 gpinitsystem:gp1:gpadmin-[WARN]:-*******************************************************
20200828:02:34:31:018783 gpinitsystem:gp1:gpadmin-[WARN]:-Scan of log file indicates that some warnings or errors
20200828:02:34:31:018783 gpinitsystem:gp1:gpadmin-[WARN]:-were generated during the array creation
20200828:02:34:31:018783 gpinitsystem:gp1:gpadmin-[INFO]:-Please review contents of log file
20200828:02:34:31:018783 gpinitsystem:gp1:gpadmin-[INFO]:-/home/gpadmin/gpAdminLogs/gpinitsystem_20200828.log
20200828:02:34:31:018783 gpinitsystem:gp1:gpadmin-[INFO]:-To determine level of criticality
20200828:02:34:31:018783 gpinitsystem:gp1:gpadmin-[INFO]:-These messages could be from a previous run of the utility
20200828:02:34:31:018783 gpinitsystem:gp1:gpadmin-[INFO]:-that was called today!
20200828:02:34:31:018783 gpinitsystem:gp1:gpadmin-[WARN]:-*******************************************************
20200828:02:34:31:018783 gpinitsystem:gp1:gpadmin-[INFO]:-Greenplum Database instance successfully created
20200828:02:34:31:018783 gpinitsystem:gp1:gpadmin-[INFO]:-------------------------------------------------------
20200828:02:34:31:018783 gpinitsystem:gp1:gpadmin-[INFO]:-To complete the environment configuration, please
20200828:02:34:31:018783 gpinitsystem:gp1:gpadmin-[INFO]:-update gpadmin .bashrc file with the following
20200828:02:34:31:018783 gpinitsystem:gp1:gpadmin-[INFO]:-1. Ensure that the greenplum_path.sh file is sourced
20200828:02:34:31:018783 gpinitsystem:gp1:gpadmin-[INFO]:-2. Add "export MASTER_DATA_DIRECTORY=/data/master/gpseg-1"
20200828:02:34:31:018783 gpinitsystem:gp1:gpadmin-[INFO]:- to access the Greenplum scripts for this instance:
20200828:02:34:31:018783 gpinitsystem:gp1:gpadmin-[INFO]:- or, use -d /data/master/gpseg-1 option for the Greenplum scripts
20200828:02:34:31:018783 gpinitsystem:gp1:gpadmin-[INFO]:- Example gpstate -d /data/master/gpseg-1
20200828:02:34:31:018783 gpinitsystem:gp1:gpadmin-[INFO]:-Script log file = /home/gpadmin/gpAdminLogs/gpinitsystem_20200828.log
20200828:02:34:31:018783 gpinitsystem:gp1:gpadmin-[INFO]:-To remove instance, run gpdeletesystem utility
20200828:02:34:31:018783 gpinitsystem:gp1:gpadmin-[INFO]:-To initialize a Standby Master Segment for this Greenplum instance
20200828:02:34:31:018783 gpinitsystem:gp1:gpadmin-[INFO]:-Review options for gpinitstandby
20200828:02:34:31:018783 gpinitsystem:gp1:gpadmin-[INFO]:-------------------------------------------------------
20200828:02:34:31:018783 gpinitsystem:gp1:gpadmin-[INFO]:-The Master /data/master/gpseg-1/pg_hba.conf post gpinitsystem
20200828:02:34:31:018783 gpinitsystem:gp1:gpadmin-[INFO]:-has been configured to allow all hosts within this new
20200828:02:34:31:018783 gpinitsystem:gp1:gpadmin-[INFO]:-array to intercommunicate. Any hosts external to this
20200828:02:34:31:018783 gpinitsystem:gp1:gpadmin-[INFO]:-new array must be explicitly added to this file
20200828:02:34:31:018783 gpinitsystem:gp1:gpadmin-[INFO]:-Refer to the Greenplum Admin support guide which is
20200828:02:34:31:018783 gpinitsystem:gp1:gpadmin-[INFO]:-located in the /usr/local/ greenplum-db-6.10.0/docs directory
20200828:02:34:31:018783 gpinitsystem:gp1:gpadmin-[INFO]:-------------------------------------------------------
6.5 设置GP环境变量
在安装完成之后,我们看到日志中最后一段:
20200828:02:34:31:018783 gpinitsystem:gp1:gpadmin-[INFO]:-------------------------------------------------------
20200828:02:34:31:018783 gpinitsystem:gp1:gpadmin-[INFO]:-To complete the environment configuration, please
20200828:02:34:31:018783 gpinitsystem:gp1:gpadmin-[INFO]:-update gpadmin .bashrc file with the following
20200828:02:34:31:018783 gpinitsystem:gp1:gpadmin-[INFO]:-1. Ensure that the greenplum_path.sh file is sourced
20200828:02:34:31:018783 gpinitsystem:gp1:gpadmin-[INFO]:-2. Add "export MASTER_DATA_DIRECTORY=/data/master/gpseg-1"
20200828:02:34:31:018783 gpinitsystem:gp1:gpadmin-[INFO]:- to access the Greenplum scripts for this instance:
20200828:02:34:31:018783 gpinitsystem:gp1:gpadmin-[INFO]:- or, use -d /data/master/gpseg-1 option for the Greenplum scripts
20200828:02:34:31:018783 gpinitsystem:gp1:gpadmin-[INFO]:- Example gpstate -d /data/master/gpseg-1
20200828:02:34:31:018783 gpinitsystem:gp1:gpadmin-[INFO]:-Script log file = /home/gpadmin/gpAdminLogs/gpinitsystem_20200828.log
20200828:02:34:31:018783 gpinitsystem:gp1:gpadmin-[INFO]:-To remove instance, run gpdeletesystem utility
20200828:02:34:31:018783 gpinitsystem:gp1:gpadmin-[INFO]:-To initialize a Standby Master Segment for this Greenplum instance
20200828:02:34:31:018783 gpinitsystem:gp1:gpadmin-[INFO]:-Review options for gpinitstandby
20200828:02:34:31:018783 gpinitsystem:gp1:gpadmin-[INFO]:-------------------------------------------------------
20200828:02:34:31:018783 gpinitsystem:gp1:gpadmin-[INFO]:-The Master /data/master/gpseg-1/pg_hba.conf post gpinitsystem
20200828:02:34:31:018783 gpinitsystem:gp1:gpadmin-[INFO]:-has been configured to allow all hosts within this new
20200828:02:34:31:018783 gpinitsystem:gp1:gpadmin-[INFO]:-array to intercommunicate. Any hosts external to this
20200828:02:34:31:018783 gpinitsystem:gp1:gpadmin-[INFO]:-new array must be explicitly added to this file
20200828:02:34:31:018783 gpinitsystem:gp1:gpadmin-[INFO]:-Refer to the Greenplum Admin support guide which is
20200828:02:34:31:018783 gpinitsystem:gp1:gpadmin-[INFO]:-located in the /usr/local/ greenplum-db-6.10.0/docs directory
20200828:02:34:31:018783 gpinitsystem:gp1:gpadmin-[INFO]:-------------------------------------------------------
这里提示了还需要完成的一些工作,例如修改环境变量:
echo "export MASTER_DATA_DIRECTORY=/data/master/gpseg-1" >> ~/.bash_profile
. ~/.bash_profile
echo "
source /usr/local/greenplum-db-6.10.0/greenplum_path.sh
" >> ~/.bash_profile
. ~/.bash_profile
下面是几个可选择的环境变量配置
echo "
export PGPORT=5432
export PGUSER=gpadmin
export PGDATABASE=postgres ##默认登录的数据库名
export LD_PRELOAD=/lib64/libz.so.1 ps
" >> ~/.bash_profile
. ~/.bash_profile
如果你有standby节点,将.bash_profile也拷贝到standby节点.
到此恭喜你,你的GP已经安装完成了!!!
可以使用psql连接数据库:
[gpadmin@gp1 ~]$ psql -d postgres
psql (9.4.24)
Type "help" for help.
postgres=# \l
List of databases
Name | Owner | Encoding | Collate | Ctype | Access privileges
-----------+---------+----------+------------+------------+---------------------
postgres | gpadmin | UTF8 | en_US.utf8 | en_US.utf8 |
template0 | gpadmin | UTF8 | en_US.utf8 | en_US.utf8 | =c/gpadmin +
| | | | | gpadmin=CTc/gpadmin
template1 | gpadmin | UTF8 | en_US.utf8 | en_US.utf8 | =c/gpadmin +
| | | | | gpadmin=CTc/gpadmin
test | gpadmin | UTF8 | en_US.utf8 | en_US.utf8 |
postgres=# select version();
version
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
PostgreSQL 9.4.24 (Greenplum Database 6.10.1 build commit:efba04ce26ebb29b535a255a5e95d1f5ebfde94e) on x86_64-unknown-linux-gnu, compiled by gcc (GCC) 6.4.0, 64-bit compiled on Aug 13 2020 02:56:29
(1 row)
在GP中gpadmin为超级用户,修改gpadmin用户的密码:
postgres=# \du
List of roles
Role name | Attributes | Member of
-----------+----------------------------------------------------------------------------------------------------------+-----------
gpadmin | Superuser, Create role, Create DB, Ext gpfdist Table, Wri Ext gpfdist Table, Ext http Table, Replication | {}
postgres=# alter user gpadmin with password 'gpadmin';
ALTER ROLE
6.6 解决初始化问题
如果该实用程序在设置实例时遇到任何错误,则整个过程将失败,并可能使您无法使用部分创建的系统。请参阅错误消息和日志,以确定故障原因以及故障发生在何处。日志文件创建于~/gpAdminLogs。
根据过程中发生错误的时间,您可能需要清理然后尝试 gpinitsystem再次实用。例如,如果创建了一些细分实例,但有些失败,则可能需要停止Postgres 处理并从您的数据存储区中删除任何实用程序创建的数据目录。如有必要,将创建一个退出脚本来帮助进行此清理。
使用退出脚本
- 如果gpinitsystem实用程序失败,它将使您的系统处于部分安装状态,它将创建以下回退脚本:
路径/ gpAdminLogs/backout_gpinitsystem_ <用户> _ <时间戳>
您可以使用此脚本清除部分创建的Greenplum数据库系统。该退出脚本将删除所有实用程序创建的数据目录, Postgres进程和日志文件。更正了引起的错误之后gpinitsystem 要失败并运行退出脚本,您应该准备好重新尝试初始化Greenplum数据库阵列。
以下示例显示了如何运行回退脚本:
$ sh backout_gpinitsystem_gpadmin_20071031_121053
如果需要删除实例,使用gpdeletesystem工具进行删除:
gpdeletesystem -d /data/master/gpseg-1 -f
注意:
#注意,如果安装失败,出现下面这个错误
# 20220117:19:59:29:105581 gpinitsystem:gpmaster:gpadmin-[FATAL]:-Failed to complete obtain psql count Master gp_segment_configuration Script Exiting!
#请先执行上面的命令回退安装,回退好时候刷新数据目录(所有节点),如有残留请手动rm数据
#然后执行下面两个命令(所有节点)
#执行完成后重新安装
echo "RemoveIPC=no" >> /etc/systemd/logind.conf
service systemd-logind restart
rm -f /tmp/.s.PGSQL.5432
#如果再次安装还出现这个错误,请检查初始化文件,是否没有使用默认文件,自己改了一些参数
6.7 设置数据库时区
最佳做法是,将Greenplum数据库和主机系统配置为使用已知的受支持时区。Greenplum数据库使用一组内部存储的PostgreSQL时区中的时区。设置Greenplum数据库时区可防止Greenplum数据库在每次重新启动集群时选择时区,并设置Greenplum数据库master实例和segment实例的时区。
使用 gpconfig实用程序来显示和设置Greenplum数据库时区。例如,这些命令显示Greenplum数据库时区,并将时区设置为 美国/太平洋。
[gpadmin@gp1 ~]$ gpconfig -s TimeZone
Values on all segments are consistent
GUC : TimeZone
Master value: America/New_York
Segment value: America/New_York
[gpadmin@gp1 ~]$ gpconfig -c TimeZone -v 'Asia/Shanghai'
20200828:05:01:17:026991 gpconfig:gp1:gpadmin-[INFO]:-completed successfully with parameters '-c TimeZone -v Asia/Shanghai'
更改时区后,您必须重新启动Greenplum数据库。命令gpstop -ra 重新启动Greenplum数据库。目录视图 pg_timezone_names 提供Greenplum数据库时区信息。
7.GP环境变量
7.1 必须的环境变量
GPHOME=/usr/local/greenplum-db-6.10.0
PATH=$GPHOME/bin:$PATH
LD_LIBRARY_PATH=$GP_HOME/lib
#上面的这些环境变量在/usr/local/greenplum-db-6.10.0/greenplum_path.sh中已经定义,只需要source一下即可.
MASTER_DATA_DIRECTORY=/data/master/gpseg-1
#此环境变量需要手工添加
7.2 可选的环境变量
PGAPPNAME:此环境变量默认为psql,表示连接的app名称,将会在activity 视图中显示
PGDATABASE:默认连接的数据库名称
PGHOST:GP Master主机名
PGHOSTADDR:GP Master IP地址,设置此可以不需要进行DNS解析
PGPASSWORD: PG的默认密码,可以指定此环境变量,这样就不需要输入密码
PGPASSFILE: PG登录的默认密码文件,默认为~/.pgpass 配置此文件,可以不输入密码登录数据库
PGOPTIONS: 为master设置额外的配置参数
PGPORT:默认为5432 数据库端口号
PGUSER:GP连接用户名
PGDATESTYLE:为会话设置默认的时间格式,等同于SET datestype To...
PGTZ:为会话设置默认的时区,等同于SET timezone TO ...
PGCLIENTENCODING:为会话设置默认的客户端字符集,等同于SET client_encoding TO...
7.3 查看安装完以后的状态
gpstate -s
如果提示你需要配置master_data_directory的状态
20130318:16:42:46:031279 gpstate:local_master:gpadmin-[INFO]:-Starting gpstate with args: -s
20130318:16:42:46:031279 gpstate:local_master:gpadmin-[CRITICAL]:-gpstate failed. (Reason='Environment Variable MASTER_DATA_DIRECTORY not set!') exiting...
增加master的环境变量
vi .bash_profile
#插入下面数据
source /usr/local/greenplum-db/greenplum_path.sh
export MASTER_DATA_DIRECTORY=/data/master/gpseg-1
export PGPORT=5432
export PGUSER=gpadmin
export PGDATABASE=EMC Greenplum DW
#保存后 source一下
如果有standby节点,拷贝
$ scp .bashrc standby_hostname:`pwd`
8.配置gp参数
8.1配置pg_hba.conf
gp安装完成之后和postgresql一样,默认只允许本地登录:
C:\Users\brent>psql -h 192.168.56.91 -Ugpadmin -dpostgres -W
Password:
psql: error: could not connect to server: FATAL: no pg_hba.conf entry for host "192.168.56.1", user "gpadmin", database "postgres", SSL off
修改pg_hba.conf配置允许远程登录,配置文件在master seg目录下/data/master/gpseg-1:
#新增如下配置:
host all all 0.0.0.0/0 md5
使用pgstop -u选项重载配置文件:
[gpadmin@gp1 gpseg-1]$ gpstop --help
With the -u option, the utility uploads changes made to the
master pg_hba.conf file or to runtime configuration parameters
in the master postgresql.conf file without interruption of
service. Note that any active sessions will not pickup the
changes until they reconnect to the database.
[gpadmin@gp1 gpseg-1]$ gpstop -u
20200828:06:52:08:027353 gpstop:gp1:gpadmin-[INFO]:-Starting gpstop with args: -u
20200828:06:52:08:027353 gpstop:gp1:gpadmin-[INFO]:-Gathering information and validating the environment...
20200828:06:52:08:027353 gpstop:gp1:gpadmin-[INFO]:-Obtaining Greenplum Master catalog information
20200828:06:52:08:027353 gpstop:gp1:gpadmin-[INFO]:-Obtaining Segment details from master...
20200828:06:52:08:027353 gpstop:gp1:gpadmin-[INFO]:-Greenplum Version: 'postgres (Greenplum Database) 6.10.1 build commit:efba04ce26ebb29b535a255a5e95d1f5ebfde94e'
20200828:06:52:08:027353 gpstop:gp1:gpadmin-[INFO]:-Signalling all postmaster processes to reload
这样远程就可以登录了:
C:\Users\brent>psql -h 192.168.56.91 -Ugpadmin -dpostgres -W
Password:
psql (12.4, server 9.4.24)
Type "help" for help.
postgres=#
8.2配置postgresql.conf
postgresql.conf是gp的主要的配置文件,可以修改一些常用参数:
使用gpconfig来配置参数
[gpadmin@gp1 ~]$ gpconfig --help
COMMAND NAME: gpconfig
Sets server configuration parameters on all segments within
a Greenplum Database system.
*****************************************************
SYNOPSIS
*****************************************************
gpconfig -c <param_name> -v <value> [-m <master_value> | --masteronly]
| -r <param_name> [--masteronly]
| -l
[--skipvalidation] [--verbose] [--debug]
gpconfig -s <param_name> [--file | --file-compare] [--verbose] [--debug]
gpconfig --help
9.安装其它的扩展模块
例如安装dblink扩展,和pg使用方法一致:
postgres=# CREATE EXTENSION dblink;
CREATE EXTENSION
postgres=# drop extension dblink;
DROP EXTENSION
10.GP常用管理命令
-
启动
gpstart -
停止
gpstop
gpstop -M fast -
重启
gpstop -r -
重新加载配置文件
gpstop -u -
以维护模式启动****master
只启动Master来执行维护或者管理任务而不影响Segment上的数据。
例如,可以用维护模式连接到一个只在Master实例上的数据库并且编辑系统目录设置。 更多有关系统目录表的信息请见Greenplum Database Reference Guide
gpstart -m #维护模式打开数据库
PGOPTIONS=’-c gp_session_role=utility’ psql postgres #以维护模式连接到master
gpstop -mr #停止维护模式,以正常模式重启数据库 -
查看gp配置参数
psql -c ‘show all’
或者
gpconfig -s <参数名> -
修改gp参数
设置max_connections,在master上设置为10, 在segment上设置为100
gpconfig -c max_connections -v 100 -m 10
-v指定所有节点,包括master,standby,segment
-m指定master节点
–master-only指定只修改master节点
-r移除参数的配置
-l显示所有可配置的参数 -
查看gp状态
gpstate #查看简要信息
gpstate -s #查看详细信息
gpstate -m #查看镜像配置
gpstate -c #查看镜像的映射关系
gpstate -f #查看standby状态 -
查看磁盘空间
查看节点主机磁盘空闲空间
SELECT * FROM gp_toolkit.gp_disk_free
ORDER BY dfsegment;
- 查看数据库的使用空间
SELECT * FROM gp_toolkit.gp_size_of_database
ORDER BY sodddatname;
- 查看表的磁盘使用空间
SELECT relname AS name, sotdsize AS size, sotdtoastsize
AS toast, sotdadditionalsize AS other
FROM gp_toolkit.gp_size_of_table_disk as sotd, pg_class
WHERE sotd.sotdoid=pg_class.oid ORDER BY relname
- 查看索引的使用空间
SELECT soisize, relname as indexname
FROM pg_class, gp_toolkit.gp_size_of_index
WHERE pg_class.oid=gp_size_of_index.soioid
AND pg_class.relkind='i';
- 查看表的分布键
\d+ table_name
- 查看表的数据分布
SELECT gp_segment_id, count(*)
FROM table_name GROUP BY gp_segment_id;
- 查看当前正在运行的会话
select pid,usename,datname,waiting_reason,query,client_addr from pg_stat_activity where state='active';
- 查看当前等待的会话
select pid,usename,datname,query,client_addr,waiting_reason from pg_stat_activity where waiting ;
-
杀死会话
使用pg_terminate_backend()或者pg_cancel_backend()指定PID进行kill,例如:
select pg_cancel_backedn(pid);
可以使用下面的批量kill脚本
select pg_terminate_backend(pid) from pg_stat_activity where ; -- 必须要接条件,而且最好先查出你需要的杀的会话.
select 'select pg_terminate_backend('||pid||');' from pg_stat_activity where ; --必须要接条件
select 'select pg_cancel_backend('||pid||');' from pg_stat_activity where ; --
标签:INFO,02,greenplum,gp1,master,gpinitsystem,segment,gpadmin,20200828
From: https://blog.csdn.net/qq_38195893/article/details/137137010