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地址操作系统硬件配置规划
gp1192.168.56.91(业务地址)
12.12.12.1(内部地址)
CentOS7.62C8GMaster
gp2192.168.56.92
12.12.12.2
CentOS7.62C8Gseg1,mirror seg2
gp3192.168.56.93
12.12.12.3
CentOS7.62C8Gseg2,mirror seg1

安装部署GP主要分为三个步骤:

  • 准备工作:包括操作系统安装,系统参数修改等
  • 安装验证
  • 初始化数据库

2.准备工作

操作系统的安装和主机名,ip地址的配置这里就不进行讲解了.注意这里使用了一个专门用来节点之间数据交互的网段,下面的所有配置,需要在每个节点进行配置

2.1 配置host

修改/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.56.91 gp1
192.168.56.92 gp2
192.168.56.93 gp3
12.12.12.1    gp1-priv
12.12.12.2    gp2-priv
12.12.12.3    gp3-priv

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%,因为这样做可能会导致内存不足情况。

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

2.5 创建gp用户

需要创建一个特定的用户运行gp,一般为gpadmin:

groupadd gpadmin
useradd -g gpadmin gpadmin
echo "gpadmin" |passwd --stdin gpadmin

生成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 创建数据目录

我们这里使用的磁盘为/dev/sdb 大小为50GB,挂载目录为/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

建议,挂载使用nodev,noatime,nobarrier,inode64 参数

2.8 磁盘IO配置

  • 预读值
    每个磁盘设备文件都应预读(块设备)值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)

同样的,在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.56.1
echo "
server 192.168.56.1
" > /etc/ntp.conf
  • 在standby端配置master节点为优先,ntp源为次(我这里的环境,没有配置standby节点)
echo "
server gp1 prefer
server 192.168.56.1
" > /etc/ntp.conf
  • 在数据节点配置为master节点的IP为优先,standby端为次
echo "
server gp1 prefer
servier gp1-standby 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.1-rhel7-x86_64.rpm
#或者使用rpm
rpm -ivh greenplum-db-6.10.1-rhel7-x86_64.rpm
#如果想将软件安装到指定目录下,必须使用rpm安装,并且指定安装目录
rpm -ivh greenplum-db-6.10.1-rhel7-x86_64.rpm --prefix=/usr/local/gp6.10

使用 yum将会自动安装所依赖的软件包,并且将Greenplum数据库软件文件复制到版本特定的目录下 /usr/lcoal, /usr/local/greenplum-db-<版本>,并创建符号链接/usr/local/greenplum-db 到安装目录。

将所有者和已安装文件的组更改为 gpadmin:

chown -R gpadmin:gpadmin /usr/local/greenplum*
chgrp -R gpadmin /usr/local/greenplum*

3.2 配置SSH等价

gpadmin每个Greenplum主机上的用户必须能够从群集中的任何主机SSH到群集中的任何其他主机,而无需输入密码或口令(称为“无口令SSH”)。
如果您启用了从主控主机到群集中其他所有主机的无密码SSH (“ 1- n无密码SSH”),则可以使用Greenplum数据库gpssh-exkeys命令行实用程序,以启用从每个主机到其他主机的无密码SSH
1.使用gpadmin登录到master节点
2.source环境变量

source /usr/local/greenplum-db-6.10.1/greenplum_path.sh 

注意,需要将上面的命令添加到gpadmin环境变量中:

echo "
source /usr/local/greenplum-db-6.10.1/greenplum_path.sh 
" >> ~/.bash_profile
. ~/.bash_profile

3.使用 ssh-copy-id 命令添加 gpadmin 用户的公钥 授权主机 群集中其他所有主机上的SSH文件

ssh-copy-id gp1
ssh-copy-id gp2
ssh-copy-id gp3

测试ssh等价是否完成,使用下面命令都不需要输入密码则表示配置成功:

ssh gp1 date
ssh gp1-priv date
ssh gp2 date
ssh gp2-priv date
ssh gp3 date
ssh gp3-priv date

4.创建hostfile-exkeys文件
在里面 gpadmin 家目录,创建一个名为 hostfile_exkeys为计算机配置了Greenplum系统中每个主机(主机,备用主机和SEGMENT主机)的主机名和主机地址(接口名称)。确保没有空白行或多余的空格。检查 /etc/ hosts文件在您的系统上,以获取要用于您的环境的正确主机名。例如,我们这里:

echo "gp1
gp1-priv
gp2
gp2-priv
gp3
gp3-priv" > ~/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 gp1-priv
  ... send to gp2
  ... send to gp2-priv
  ... send to gp3
  ... send to gp3-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 gp1-priv
  ... finished key exchange with gp2
  ... finished key exchange with gp2-priv
  ... finished key exchange with gp3
  ... finished key exchange with gp3-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.1
[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.1
[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.1

如果安装成功,则会显示每个节点的gp的安装目录,如果还需要输入密码,则使用:
gpssh-exkeys -f ~/hostfile_exkeys
继续进行配置

3.3 在所有节点配置ssh等价

登录gpadmin用户,在其它所有的节点执行以下命令:

source /usr/local/greenplum-db-6.10.1/greenplum_path.sh 
echo "
source /usr/local/greenplum-db-6.10.1/greenplum_path.sh 
" >> ~/.bash_profile
. ~/.bash_profile
echo "gp1
gp1-priv
gp2
gp2-priv
gp3
gp3-priv" > ~/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.1
[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.1
[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.1
#如果能显示所有节点的安装软件,则表示配置成功

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用户和组。例如,运行以下命令根:
这里我们在系统配置阶段已经配置xfs文件系统,挂载目录为/data,我们将master目录指定到/data/master中

mkdir -p /data/master

2.将此目录的所有权更改为 gpadmin 用户。例如:

chown -R gpadmin:gpadmin /data/master

3.使用 gpssh,也在备用主数据库上创建主数据目录位置。例如:
由于是测试环境,我们这里其实没有使用standby数据库(生产环境建议配置standby实例,防止master故障导致集群不可用),这里假设standby实例主机为gp1-standby

source /usr/local/greenplum-db/greenplum_path.sh 
gpssh -h gp1-standby -e'mkdir -p /data/ master'
gpssh -h gp1-standby -e'chown gpadmin:gpadmin /data/master'

4.2 在semgents实例创建存储区域

Greenplum数据库segment主机上的主要segment需要数据存储区。镜像段需要单独的存储区域。
1.创建一个名为 hostfile_gpssh_segonly。对于每个segment主机,此文件应只有一台机器配置的主机名。例如,我们这里有两台segment节点,使用内部网络:

echo "gp2-priv
gp3-priv " > ~/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上创建2个单独的主机文件,分别存放两个网段的主机名:

echo "gp2
gp3" >~/seg_host1
echo "gp2-priv
gp3-priv" > ~/seg_host2

使用gpcheckperf 进行网络测试:
gpcheckperf -f ~/seg_host1 -r N -d /tmp
gpcheckperf -f ~/seg_host2 -r N -d /tmp

##第一个网段测试:
[gpadmin@gp1 ~]$ gpcheckperf -f ~/seg_host1 -r N -d /tmp
/usr/local/greenplum-db-6.10.1/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
gp2 -> gp3 = 252.820000
gp3 -> gp2 = 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 gp2 and gp3 is no good


##第二个网段测试:
[gpadmin@gp1 ~]$ gpcheckperf -f ~/seg_host2 -r N -d /tmp
/usr/local/greenplum-db-6.10.1/bin/gpcheckperf -f /home/gpadmin/seg_host2 -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:29:15.595427
====================
Netperf bisection bandwidth test
gp2-priv -> gp3-priv = 317.370000
gp3-priv -> gp2-priv = 328.140000


Summary:
sum = 645.51 MB/sec
min = 317.37 MB/sec
max = 328.14 MB/sec
avg = 322.75 MB/sec
median = 328.14 MB/sec

我这里是vbox虚拟机,192网段使用的是HOST ONLY配置,12网段使用的inter内部网络,网卡是2.5GB速率,通过测试发现,使用内部网络速度比192网段的速度快一点.因此在配置网络的时候节点之间的数据交互使用内部网络.

5.2 验证磁盘IO和内存带宽

要测试磁盘和内存带宽性能,请运行 gpcheckperf 带有磁盘和流测试运行选项(-r ds)。磁盘测试使用dd命令(标准UNIX实用程序)以测试逻辑磁盘或文件系统的顺序吞吐性能。内存测试使用STREAM基准程序来测量可持续的内存带宽。结果以MB /秒(MB / s)报告。
1.创建一个包含所有segment节点的主机名文件hostfile_gpcheckperf

echo "gp2-priv
gp3-priv">~/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.1/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 "gp2-priv
gp3-priv"> ~/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.根据实际环境修改配置文件
下面是我的实际环境的配置:

[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-priv
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 
#直接创建集群
gpinitsystem -c gpconfigs/gpinitsystem_config -h gpconfigs/host_seg    ##中间输入y
#对于完全冗余的系统(具有备用主服务器和扩展镜像配置),请包括-s 和 -S选项
gpinitsystem -c gpconfigs/gpinitsystem_config -h gpconfigs/host_seg -s gp1-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 gp1-priv does not match hostname output
20200828:02:33:34:018783 gpinitsystem:gp1:gpadmin-[INFO]:-Checking to see if gp1-priv can be resolved on this host
20200828:02:33:34:018783 gpinitsystem:gp1:gpadmin-[INFO]:-Can resolve gp1-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            = gp1-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.1/bin/initdb
20200828:02:33:44:018783 gpinitsystem:gp1:gpadmin-[INFO]:-GP_LIBRARY_PATH is         = /usr/local/greenplum-db-6.10.1/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]:-gp2     6000     gp2-priv     /data/primary/gpseg0     2
20200828:02:33:44:018783 gpinitsystem:gp1:gpadmin-[INFO]:-gp2     6001     gp2-priv     /data/primary/gpseg1     3
20200828:02:33:44:018783 gpinitsystem:gp1:gpadmin-[INFO]:-gp3     6000     gp3-priv     /data/primary/gpseg2     4
20200828:02:33:44:018783 gpinitsystem:gp1:gpadmin-[INFO]:-gp3     6001     gp3-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]:-gp3     7000     gp3-priv     /data/mirror/gpseg0     6
20200828:02:33:44:018783 gpinitsystem:gp1:gpadmin-[INFO]:-gp3     7001     gp3-priv     /data/mirror/gpseg1     7
20200828:02:33:44:018783 gpinitsystem:gp1:gpadmin-[INFO]:-gp2     7000     gp2-priv     /data/mirror/gpseg2     8
20200828:02:33:44:018783 gpinitsystem:gp1:gpadmin-[INFO]:-gp2     7001     gp2-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 gp1 directory /data/master/gpseg-1 
20200828:02:34:27:022153 gpstart:gp1:gpadmin-[INFO]:-Command pg_ctl reports Master gp1 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.1/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.1/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 "
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

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.1
PATH=$GPHOME/bin:$PATH
LD_LIBRARY_PATH=$GP_HOME/lib
#上面的这些环境变量在/usr/local/greenplum-db-6.10.1/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...

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实用工具

Greenplum数据库已经修改了某些PostgreSQL后端服务器程序,以处理Greenplum数据库系统的并行性和分发。您只能通过Greenplum数据库管理工具和实用程序访问这些程序。不要直接运行这些程序。
下表列出了某些PostgreSQL后端服务器程序以及要运行的Greenplum数据库实用程序命令。

表1. Greenplum数据库后端服务器程序
PostgreSQL程式名称描述使用代替
initdb该程序被称为 gpinitsystem初始化Greenplum数据库阵列时。它在内部用于创建各个段实例和主实例。gpinitsystem
ipcclean未在Greenplum数据库中使用不适用
pg_basebackup该程序为单个数据库实例创建二进制副本。Greenplum数据库将其用于诸如创建备用主实例或在需要完整副本时恢复镜像段之类的任务。不要使用此实用程序备份Greenplum数据库段实例,因为它不会产生与MPP一致的备份。gpinitstandby, gprecoverseg
pg_controldata未在Greenplum数据库中使用gpstate
pg_ctl该程序被称为 gpstart 和 gpstop启动或停止Greenplum数据库阵列时。它在内部用于使用正确的选项并行地停止和启动各个段实例和主实例。gpstart, gpstop
pg_resetxlog不使用

警告:此程序可能会导致数据丢失或导致数据不可用。如果使用此程序,则不支持Pivotal Greenplum数据库群集。该 群集必须重新初始化并恢复由客户

不适用
Postgres的 Postgres 可执行文件是处理查询的实际PostgreSQL服务器进程。主要的 Postgres 流程(邮件管理员)创建其他 Postgres 子流程和 Postgres 会话以处理客户端连接。
postmaster
postmaster 开始 Postgres 接受客户端连接的数据库服务器侦听器进程。在Greenplum数据库中,Postgres 数据库侦听器进程在Greenplum主实例和每个细分实例上运行。在Greenplum数据库中,您使用 gpstart 和 gpstop 启动所有postmaster(Postgres 系统以正确的顺序和正确的选项立即进行处理)。

11.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(111);

可以使用下面的批量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    ;   --
Logo

更多推荐