Greenplum部署
【说明】:
此次部署,没有添加Standby节点,且环境为CentOS7,
主要安装部署内容为:
greenplum-db 版本 6.11.2-rhel7;
greenplum-cc-web 版本 6.3.1-gp6-rhel7-x86_64;
gpcopy 版本 2.3.1;
服务器一共有四台:
一台master,三台segment;
Ⅰ、禁用 SELinux 和防火墙软件
注意:四台服务器均要禁用
1.以root用户,查看SElinux的状态:
# sestatus
如果没有禁用,编辑源文件:/etc/selinux/config,添加SELINUX=disabled。
如果系统中安装有安全服务 Daemon (SSSD),就编辑SSSD配置文件,防止SElinux禁用也会出现于SELinux相关的SSH身份验证拒绝。在此文件中/etc/sssd/sssd.conf,添加selinux_provider=none。
重启系统,使之配置生效。
Ⅱ、以root用户,禁止防火墙
注意:四台服务器均要禁用
Ⅲ、配置hosts文件 /etc/hosts
注意:四台服务器均要配置
在hosts文件中配置主机名称:
#001定为master节点
10.x.x.xxx master
#002定为segment节点1
10.x.x.xxx segment1
#003定为segment节点2
10.x.x.xxx segment2
#003定为segment节点3
10.x.x.xxx segment3
Ⅳ、配置系统控制文件sysctl.conf /etc/sysctl.conf
注意:四台服务器均要配置
1.kernel.shmall:表示可用共享内存的总量.公式kernel.shmall=(_PHYS_PAGES/2);
# echo $(expr $(getconf _PHYS_PAGES) / 2)
2.kernel.shmmax:表示单个共享内存段的最大值。公式kernel.shmmax = ( _PHYS_PAGES / 2) * PAGE_SIZE
# echo $(expr $(getconf _PHYS_PAGES) / 2 \* $(getconf PAGE_SIZE))
3.kernel.shmmni:表示单个共享内存段的最小值,一般为4kB,即4096bit,也可适当调大,一般为4096的2-3倍,默认4096。
kernel.shmmni = 4096
4.kernel.sem:该文件用于控制内核信号量,信号量是System VIPC用于进程间通讯的方法。(第一列)*(第四列)=(第二列)
#500:第一列,表示每个信号集中的最大信号量数目。
#2048000:第二列,表示系统范围内的最大信号量总数目。
#200:第三列,表示每个信号发生时的最大系统操作数目。
#4096:第四列,表示系统范围内的最大信号集总数目。
kernel.sem = 500 2048000 200 4096
5.kernel.sysrq:内核系统请求调试功能控制,0表示禁用,1表示启用
kernel.sysrq = 1
6.kernel.core_uses_pid:多线程调试,0表示禁用,1表示启用
kernel.core_uses_pid = 1
7.kernel.msgmnb:该文件指定一个消息队列的最大长度(bytes)。缺省设置:16384
kernel.msgmnb = 65536
8.kernel.msgmax:文件指定了从一个进程发送到另一个进程的消息的最大长度bytes.进程间的消息传递是在内核的内存中进行的,不会交换到磁盘上,所以如果增加该值,则将增加操作系统所使用的内存数量.缺省设置:8192
kernel.msgmax = 65536
9.kernel.msgmni:该文件指定消息队列标识的最大数目,即系统范围内最大多少个消息队列
kernel.msgmni = 2048
10.net.ipv4.ip_local_port_range:禁用 numa, 或者在vmlinux中禁止,指定端口范围的一个配置,默认是32768 61000,可调整为1025 65535或40000 65535。使用集群配置文件初始化 Greenplum 时,不要指定该范围内的格林普卢姆数据库端口对于带有格林普卢姆数据库的 Azure 部署,避免使用端口 65330
net.ipv4.ip_local_port_range = 10000 65535
11.net.ipv4.tcp_syncookies:表示开启SYN Cookies,当SYN等待队列溢出时,启用cookies来处理,可以防范少量的SYN攻击,默认为0,表示关闭。1表示启用
net.ipv4.tcp_syncookies = 1
12.net.ipv4.conf.default.accept_source_route:是否允许源地址经过路由。0:禁止 1:打开 缺省设置:0
net.ipv4.conf.default.accept_source_route = 0
13.net.ipv4.tcp_max_syn_backlog:增加TCP SYN队列长度,使系统可以处理更多的并发连接。一般为4096,可以调大,必须是4096的倍数,建议是2-3倍
net.ipv4.tcp_max_syn_backlog = 4096
14.net.ipv4.conf.all.arp_filter:表示控制具体应该由哪块网卡来回应arp包,缺省设置0, 建议设置为1
net.ipv4.conf.all.arp_filter = 1
15.net.core.netdev_max_backlog:进入包的最大设备队列.默认是1000,对重负载服务器而言,该值太低,可调整到16384/32768/65535
net.core.netdev_max_backlog = 10000
16.net.core.rmem_max:最大socket读buffer,可参考的优化值:1746400/3492800/6985600
net.core.rmem_max = 2097152
17.net.core.wmem_max:最大socket写buffer,可参考的优化值:1746400/3492800/6985600
net.core.wmem_max = 2097152
18.vm.overcommit_memory:三种策略0:启发式,1:任何overcommit都会被接受。2:当系统分配的内存超过swap+N%*物理RAM(N%由vm.overcommit_ratio决定)时,会拒绝commit,一般设置为2
vm.overcommit_memory = 2
19.vm.overcommit_ratio:当overcommit_memory=2,可以过载内存的百分比,通过以下公式来计算系统整体可用内存.系统可分配内存=交换空间+物理内存*overcommit_ratio/100 缺省设置:50(%)。要计算基于资源队列的资源管理处于活动状态时的安全值,首先使用此公式确定 Greenplum 数据库进程可用的总内存:gp_vmem_rq = ((SWAP + RAM) – (7.5GB + 0.05 * RAM)) / 1.7。主机上的交换空间位于GB中的位置,并且主机上安装的 GB RAM 数。当基于资源队列的资源管理处于活动状态时,请使用此公式计算值:vm.overcommit_ratio = (RAM - 0.026 * gp_vmem_rq) / RAM
#select (60 - 0.026*(((0 + 60) - (7.5 + 0.05 * 60)) / 1.7))/60 = 0.9873823529411764705
vm.overcommit_ratio = 95
【注:此处我的服务器计算出来的值是98,也可以按照95配置】
20.vm.swappiness:控制换出运行时内存的相对权重,值越大,表示越积极使用swap分区,越小表示越积极使用物理内存。默认值swappiness=60,表示内存使用率超过100-60=40%时开始使用交换分区。swappiness=0的时候表示最大限度使用物理内存,然后才是 swap空间;swappiness=100的时候表示积极使用swap分区,并把内存上的数据及时搬运到swap空间。
vm.swappiness = 10
21.vm.zone_reclaim_mode:
#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
22.vm.dirty_expire_centisecs:系统脏页到达这个值,系统后台刷脏页调度进程 pdflush(或其他) 自动将(dirty_expire_centisecs/100)秒前的脏页刷到磁盘
vm.dirty_expire_centisecs = 500
23.vm.dirty_writeback_centisecs:有效防止用户进程刷脏页,在单机多实例,并且使用CGROUP限制单实例IOPS的情况下非常有效。
vm.dirty_writeback_centisecs = 100
24.#/****************************脏数据参数配置****************************/
1.此次的主机内存小于64GB,因此按照官方文档部署时,建议删除vm.dirty_background_bytes;vm.dirty_bytes;设置vm.dirty_background_ratio;vm.dirty_ratio参数即可。
2.vm.dirty_background_ratio:这个参数指定了当文件系统缓存脏页数量达到系统内存百分之多少时(如5%)就会触发pdflush/flush/kdmflush等后台回写进程运行,将一定缓存的脏页异步地刷入外存;
vm.dirty_background_ratio = 3
3.vm.dirty_ratio是绝对的脏数据限制,内存里的脏数据百分比不能超过这个值。如果脏数据超过这个数量,新的IO请求将会被阻挡,直到脏数据被写进磁盘。这是造成IO卡顿的重要原因,但这也是保证内存中不会存在过量脏数据的保护机制.
vm.dirty_ratio = 10
4.vm.dirty_background_bytes和vm.dirty_bytes是指定这些参数的另一种方法。如果设置_bytes版本,则_ratio版本将变为0,反之亦然。
#vm.dirty_background_bytes = 1610612736
#vm.dirty_bytes = 4294967296
vm.min_free_kbytes = 1911695
#/****************************脏数据参数配置****************************/
【注】:以上参数都需要在sysctl.conf文件中配置。
#/***安装GP新增***/
kernel.shmall = 7965395
kernel.shmmax = 32626257920
kernel.shmmni = 4096
vm.overcommit_memory = 2
vm.overcommit_ratio = 95
net.ipv4.ip_local_port_range = 10000 65535
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
vm.dirty_ratio = 10
vm.min_free_kbytes = 1911695
配置完成之后,刷新一下配置文件,使之生效。
# sysctl -p
Ⅴ、系统物理内存设置
注意:四台服务器均要配置
1.增加vm.min_free_kbytes 以确保PF_MEMALLOC 网络和存储驱动程序的要求很容易得到满足。这对具有大量系统内存的系统尤其重要。在这些系统上,默认值通常太低。使用此awk命令设置为系统物理内存的推荐3%:
# awk 'BEGIN {OFMT = "%.0f";} /MemTotal/ {print "vm.min_free_kbytes =", $2 * .03;}' /proc/meminfo >> /etc/sysctl.conf
Ⅵ、系统资源限制
注意:四台服务器均要配置
1.在文件中设置以下参数:/etc/security/limits.conf
#soft 指的是当前系统生效的设置值(警告);hard 表明系统中所能设定的最大值(错误)
#soft nofile:当前系统一个进程最多能打开的的文件数
* soft nofile 524288
#hard nofile:系统中所能设定的一个进程最多能打开的的文件数
* hard nofile 524288
#soft nproc:当前系统一个用户最多能创建的进程数
* soft nproc 131072
#hard nproc:系统中所能设定的一个用户最多能创建的进程数
* hard nproc 131072
Ⅶ、磁盘 I/O 设置
注意:四台服务器均要配置
#.blockdev:磁盘设备超值,需要设定磁盘超值为16383
1.执行/sbin/blockdev --getra /dev/vda1,检查当前磁盘的超值:8192 ,其中vda1是本主机磁盘
2.执行/sbin/blockdev --setra 16384 /dev/vda1,设定当前磁盘超值为 16384
3.可以/sbin/blockdev --setra 16384 /dev/vda1直接把此命令添加在文件 /etc/rc.d/rc.local中,且需要赋于执行权限给rc.local文件
# /sbin/blockdev --setra 16384 /dev/vda1
#.elevator
1.用于磁盘访问的 Linux 磁盘 I/O 调度器支持不同的策略,建议使用调度器选项。要指定调度器,直到下一个系统重新启动,运行以下:deadline
2.echo deadline > /sys/block/vda/queue/scheduler
3.在启动时间设置 I/O 调度器策略的一种方法是内核参数。将参数添加到文件中的内核命令(GRUB 引导加载器配置文件)中
# grubby --update-kernel=ALL --args="elevator=deadline"
/******************对比配置参数前后变化***********************/
[root@nicetuan-bigdata-gp-test-001 queue]# grubby --info=ALL
index=0
kernel=/boot/vmlinuz-3.10.0-862.14.4.el7.x86_64
args="ro crashkernel=auto noibrs idle=halt net.ifnames=0 console=tty0 console=ttyS0,115200n8"
root=UUID=b98386f1-e6a8-44e3-9ce1-a50e59d9a170
initrd=/boot/initramfs-3.10.0-862.14.4.el7.x86_64.img
title=CentOS Linux (3.10.0-862.14.4.el7.x86_64) 7 (Core)
index=1
kernel=/boot/vmlinuz-3.10.0-862.el7.x86_64
args="ro crashkernel=auto noibrs idle=halt net.ifnames=0 console=tty0 console=ttyS0,115200n8"
root=UUID=b98386f1-e6a8-44e3-9ce1-a50e59d9a170
initrd=/boot/initramfs-3.10.0-862.el7.x86_64.img
title=CentOS Linux (3.10.0-862.el7.x86_64) 7 (Core)
index=2
kernel=/boot/vmlinuz-0-rescue-20181129113200424400422638950048
args="ro crashkernel=auto noibrs idle=halt net.ifnames=0 console=tty0 console=ttyS0,115200n8"
root=UUID=b98386f1-e6a8-44e3-9ce1-a50e59d9a170
initrd=/boot/initramfs-0-rescue-20181129113200424400422638950048.img
title=CentOS Linux (0-rescue-20181129113200424400422638950048) 7 (Core)
index=3
non linux entry
[root@nicetuan-bigdata-gp-test-001 queue]# ^C
--之后
[root@nicetuan-bigdata-gp-test-001 queue]# grubby --info=ALL
index=0
kernel=/boot/vmlinuz-3.10.0-862.14.4.el7.x86_64
args="ro crashkernel=auto noibrs idle=halt net.ifnames=0 console=tty0 console=ttyS0,115200n8 elevator=deadline"
root=UUID=b98386f1-e6a8-44e3-9ce1-a50e59d9a170
initrd=/boot/initramfs-3.10.0-862.14.4.el7.x86_64.img
title=CentOS Linux (3.10.0-862.14.4.el7.x86_64) 7 (Core)
index=1
kernel=/boot/vmlinuz-3.10.0-862.el7.x86_64
args="ro crashkernel=auto noibrs idle=halt net.ifnames=0 console=tty0 console=ttyS0,115200n8 elevator=deadline"
root=UUID=b98386f1-e6a8-44e3-9ce1-a50e59d9a170
initrd=/boot/initramfs-3.10.0-862.el7.x86_64.img
title=CentOS Linux (3.10.0-862.el7.x86_64) 7 (Core)
index=2
kernel=/boot/vmlinuz-0-rescue-20181129113200424400422638950048
args="ro crashkernel=auto noibrs idle=halt net.ifnames=0 console=tty0 console=ttyS0,115200n8 elevator=deadline"
root=UUID=b98386f1-e6a8-44e3-9ce1-a50e59d9a170
initrd=/boot/initramfs-0-rescue-20181129113200424400422638950048.img
title=CentOS Linux (0-rescue-20181129113200424400422638950048) 7 (Core)
index=3
non linux entry
[root@nicetuan-bigdata-gp-test-001 queue]# ^C
Ⅷ、透明大页面 (THP)
注意:四台服务器均要配置
1.禁用透明大页面 (THP),因为它会降低格林普卢姆数据库的性能。
2.RHEL 6.0 或更高,默认情况下支持 THP。在 RHEL 6.x 上禁用 THP 的一种方法是将参数添加到文件中的内核命令(GRUB 引导加载器配置文件)中。
3.在使用 RHEL 7.x 或 CentOS 7.x 等系统时,使用系统实用程序。此命令在以根运行时添加参数。
# grubby --update-kernel=ALL --args="transparent_hugepage=never"
/******************对比配置参数前后变化***********************/
[root@nicetuan-bigdata-gp-test-001 queue]# grubby --info=ALL
index=0
kernel=/boot/vmlinuz-3.10.0-862.14.4.el7.x86_64
args="ro crashkernel=auto noibrs idle=halt net.ifnames=0 console=tty0 console=ttyS0,115200n8"
root=UUID=b98386f1-e6a8-44e3-9ce1-a50e59d9a170
initrd=/boot/initramfs-3.10.0-862.14.4.el7.x86_64.img
title=CentOS Linux (3.10.0-862.14.4.el7.x86_64) 7 (Core)
index=1
kernel=/boot/vmlinuz-3.10.0-862.el7.x86_64
args="ro crashkernel=auto noibrs idle=halt net.ifnames=0 console=tty0 console=ttyS0,115200n8"
root=UUID=b98386f1-e6a8-44e3-9ce1-a50e59d9a170
initrd=/boot/initramfs-3.10.0-862.el7.x86_64.img
title=CentOS Linux (3.10.0-862.el7.x86_64) 7 (Core)
index=2
kernel=/boot/vmlinuz-0-rescue-20181129113200424400422638950048
args="ro crashkernel=auto noibrs idle=halt net.ifnames=0 console=tty0 console=ttyS0,115200n8"
root=UUID=b98386f1-e6a8-44e3-9ce1-a50e59d9a170
initrd=/boot/initramfs-0-rescue-20181129113200424400422638950048.img
title=CentOS Linux (0-rescue-20181129113200424400422638950048) 7 (Core)
index=3
non linux entry
[root@nicetuan-bigdata-gp-test-001 queue]# ^C
--之后
[root@nicetuan-bigdata-gp-test-001 queue]# grubby --info=ALL
index=0
kernel=/boot/vmlinuz-3.10.0-862.14.4.el7.x86_64
args="ro crashkernel=auto noibrs idle=halt net.ifnames=0 console=tty0 console=ttyS0,115200n8 transparent_hugepage=never"
root=UUID=b98386f1-e6a8-44e3-9ce1-a50e59d9a170
initrd=/boot/initramfs-3.10.0-862.14.4.el7.x86_64.img
title=CentOS Linux (3.10.0-862.14.4.el7.x86_64) 7 (Core)
index=1
kernel=/boot/vmlinuz-3.10.0-862.el7.x86_64
args="ro crashkernel=auto noibrs idle=halt net.ifnames=0 console=tty0 console=ttyS0,115200n8 transparent_hugepage=never"
root=UUID=b98386f1-e6a8-44e3-9ce1-a50e59d9a170
initrd=/boot/initramfs-3.10.0-862.el7.x86_64.img
title=CentOS Linux (3.10.0-862.el7.x86_64) 7 (Core)
index=2
kernel=/boot/vmlinuz-0-rescue-20181129113200424400422638950048
args="ro crashkernel=auto noibrs idle=halt net.ifnames=0 console=tty0 console=ttyS0,115200n8 transparent_hugepage=never"
root=UUID=b98386f1-e6a8-44e3-9ce1-a50e59d9a170
initrd=/boot/initramfs-0-rescue-20181129113200424400422638950048.img
title=CentOS Linux (0-rescue-20181129113200424400422638950048) 7 (Core)
index=3
non linux entry
[root@nicetuan-bigdata-gp-test-001 queue]# ^C
4、查看是否禁用
# cat /sys/kernel/mm/transparent_hugepage/enabled
Ⅸ、IPC对象删除
注意:四台服务器均要配置
1.RHEL 7.2 或 CentOS 7.2 或乌本图的禁用 IPC 对象去除。当非系统用户帐户注销时,默认设置会删除 IPC 连接。
2.这会导致格林普卢姆数据库实用程序因信号错误而失败。执行以下一项以避免此问题。默认值是RemoveIPC=yes
3..找到配置文件 /etc/systemd/logind.conf 并关闭RemoveIPC
RemoveIPC=no
4.重启使其生效
# service systemd-logind restart
Ⅹ、SSH连接阈值
注意:四台服务器均要配置
1.增加Greenplum数据库系统的此连接阈值 /etc/ssh/sshd_config
MaxStartups 200
MaxSessions 200
刷新配置,使之生效
# service sshd restart
如果命令不更新 RHEL 7.x 或 CentOS 7.x 系统内核,则可以手动更新系统上的所有内核。例如,将参数添加到系统上的所有内核。
以root运行命令以更新内核。grub2-mkconfig
# grub2-mkconfig -o /boot/grub2/grub.cfg
运行结果如下:
[root@nicetuan-bigdata-gp-test-001 default]# grub2-mkconfig -o /boot/grub2/grub.cfg
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-3.10.0-862.14.4.el7.x86_64
Found initrd image: /boot/initramfs-3.10.0-862.14.4.el7.x86_64.img
Found linux image: /boot/vmlinuz-3.10.0-862.el7.x86_64
Found initrd image: /boot/initramfs-3.10.0-862.el7.x86_64.img
Found linux image: /boot/vmlinuz-0-rescue-20181129113200424400422638950048
Found initrd image: /boot/initramfs-0-rescue-20181129113200424400422638950048.img
done
[root@nicetuan-bigdata-gp-test-001 default]#
/******************对比配置参数前后变化***********************/
#之前
[root@nicetuan-bigdata-gp-test-001 default]# cat grub
GRUB_TIMEOUT=1
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="crashkernel=auto noibrs idle=halt net.ifnames=0 console=tty0 console=ttyS0,115200n8"
GRUB_DISABLE_RECOVERY="true"
[root@nicetuan-bigdata-gp-test-001 default]#
#之后
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=cl/root rd.lvm.lv=cl/swap rhgb quiet transparent_hugepage=never"
GRUB_DISABLE_RECOVERY="true"
XI、创建GP用户
注意:四台服务器上均要创建
在每个节点上都会创建一个专用的操作系统账户,以及运行管理账户,一般默认创建管理员账户为:【gpadmin】。此用户有运行,安装,的所有服务和目录的权限。
1.创建组和用户:gpadmin
# groupadd gpadmin
# useradd gpadmin -r -m -g gpadmin
# passwd gpadmin
New password:
Retype new password:
2.切换root与用户之间免密配置 /etc/sudoers
gpadmin ALL=(ALL) NOPASSWD: ALL
【注:为方便执行gp的一些命令,在切换用户时可以免密执行】
3.授予gpadmin数控权限
确保取消注释包含 NOPASSWD 关键字的行。使用此命令将 gpadmin 用户添加到 wheel 组中。
# usermod -aG wheel gpadmin
4.SSH公钥密码验证开启
root用户下,修改配置文件 /etc/ssh/sshd_config
PubkeyAuthentication yes
PasswordAuthentication yes
每个 Greenplum 主机上的用户必须安装 SSH 密钥对,并且能够在不输入密码或密码短语(称为"无密码 SSH")的情况下,从集群中的任何主机到集群中的任何其他主机进行 SSH。如果启用无密码 SSH 从主主机到集群中的其他主机("1-n 无密码 SSH"),再使无密码 SSH 从每个主机到其他主机("n - n无密码 SSH")
①、切换用户至gpadmin
# su gpadmin
②、在master主机上生成ssh密钥
$ ssh-keygen -t rsa -b 4096
XII、安装greenplum-db
注意:四台服务器上均要安装
官网下载地址:Download VMware Tanzu™ Greenplum® — VMware Tanzu Network
1.下载上传安装包到目录
此目录自己定义:本次部署放在/home/appsoft/下
2.在gpadmin用户下使用 sudo(或直接用root用户)下安装GP
$ sudo yum install /home/appsoft/greenplum-db-6.11.2-rhel7-x86_64.rpm
3.将已安装文件的所有者和组更改为:gpadmin
$ sudo chown -R gpadmin:gpadmin /usr/local/greenplum*
$ sudo chgrp -R gpadmin /usr/local/greenplum*
4.环境变量配置
在gpadmin用户配置环境变量
①、~/.bash_profile中添加greenplum_path.sh
source /usr/local/greenplum-db/greenplum_path.sh
②、~/.bashrc中添加访问gp参数
source /usr/local/greenplum-db/greenplum_path.sh
export MASTER_DATA_DIRECTORY=/data/master/gpseg-1
export PGPORT=5432
export PGUSER=gpadmin
export PGDATABASE=default_login_database_name
#使用 RHEL 7 或 CentOS 7,请将以下行添加到文件的末尾,以便在环境中启用命令:.bashrcp greenplum_path.sh
export LD_PRELOAD=/lib64/libz.so.1 ps
5.添加用户的公钥
使用gpadmin用户,将之前在master主机上生成ssh密钥添加到集群中所有其他主机上的 SSH 文件中。
①、配置1-n无密码SSH。
$ ssh-copy-id -i /home/gpadmin/.ssh/id_rsa.pub gpadmin@segment1
$ ssh-copy-id -i /home/gpadmin/.ssh/id_rsa.pub gpadmin@segment2
$ ssh-copy-id -i /home/gpadmin/.ssh/id_rsa.pub gpadmin@segment3
添加完成后验证是 1-n 的ssh免密
$ ssh 'gpadmin@segment1'
$ ssh 'gpadmin@segment2'
$ ssh 'gpadmin@segment3'
②、配置1-n无密码SSH。
#.在gpadmin用户下创建一个hostfile_exkeys的文件,添加segment1,segment2,segment3节点IP。
$ vim hostfile_exkeys
#.配置n-n
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 nicetuan-bigdata-gp-test-002
... send to nicetuan-bigdata-gp-test-003
... send to nicetuan-bigdata-gp-test-004
[STEP 4 of 5] determine common authentication file content
[STEP 5 of 5] copy authentication files to all remote hosts
... finished key exchange with nicetuan-bigdata-gp-test-002
... finished key exchange with nicetuan-bigdata-gp-test-003
... finished key exchange with nicetuan-bigdata-gp-test-004
[INFO] completed successfully
[gpadmin@nicetuan-bigdata-gp-test-001 ~]$ ssh 'nicetuan-bigdata-gp-test-002'
Last login: Wed Jul 7 18:48:18 2021 from 10.2.4.245
Welcome to Alibaba Cloud Elastic Compute Service !
[gpadmin@nicetuan-bigdata-gp-test-002 ~]$ exit
logout
Connection to nicetuan-bigdata-gp-test-002 closed.
XIII、创建数据存储区域
主机上的数据目录位置与细分市场上的数据目录位置不同。主机不存储任何用户数据,仅将系统目录表和系统元数据存储在主实例上,因此您不需要指定与细分市场相同的存储空间。
1、创建数据存储目录
方法一、使用root用户在master上创建主数据存储目录
①、在root用户下创建主数据存储的目录
# mkdir -p /data/master
②、变更目录权限给gpadmin
# chown gpadmin:gpadmin /data/master
方法二、使用root用户,gpssh 创建数据存储目录
# source /usr/local/greenplum-db/greenplum_path.sh
# gpssh -h smdw -e 'mkdir -p /data/master'
# gpssh -h smdw -e 'chown gpadmin:gpadmin /data/master'
2、在segment节点上同步master节点所创建的主数据与镜像数据目录
①、在gpadmin用户下创建一个hostfile_gpssh_segonly的文件,添加segment1,segment2,segment3节点IP。
vim hostfile_gpssh_segonly
②、使用root用户,创建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/*'
验证系统-- 运行磁盘和流测试
1、创建验证脚本:gpcheckperf-test.sh
#!bin/bash
echo "--------------start--------------"
a=`date +"%Y-%m-%d %H:%M:%S"`
echo $a
gpcheckperf -f /home/gpadmin/all_hosts_file -r ds -D -d /data/primary -d /data/mirror -v
echo "--------------end--------------"
b=`date +"%Y-%m-%d %H:%M:%S"`
echo $b
2、 gpcheckperf 参数详解
-B block_size
指定用于磁盘I/O测试的块大小(以KB或MB为单位)。缺省值是32KB,与Greenplum数据库页面大小相同。最大块大小是1 MB。
-d test_directory
对于磁盘I/O测试,指定要测试的文件系统目录位置。用户必须具有对性能测试中涉及的所有主机上测试目录的写入权限。用户可以多次使用-d选项指定多个测试目录(例如,测试主数据目录和镜像数据目录的磁盘I/O)。
-d temp_directory
对于网络和流测试,指定单个目录,测试程序文件在测试期间将被复制到该目录。用户必须具有对测试中涉及的所有主机上该目录的写入权限。
-D (显示每台主机的结果)
报告每个主机的磁盘I/O测试的性能结果。缺省情况下,仅报告具有最低和最高性能的主机的结果,以及所有主机的总体和平均性能。
--duration time
以秒(s)、分钟(m)、小时(h)或天数(d)指定网络测试的持续时间。默认值是15秒。
-f hostfile_gpcheckperf
对于磁盘I/O和流测试,请指定一个包含将参与性能测试的主机名的文件名称。主机名是必需的,用户可以选择指定每个主机的后补用户名和/或SSH端口号。主机文件的语法是每行一台主机,如下所示:
[username@]hostname[:ssh_port]
-f hostfile_gpchecknet
对于网络性能测试,主机文件中的所有项都必须是同一子网内的主机地址。如果用户的Segment主机在不同子网上配置有多个网络接口,请为每个子网运行一次网络测试。例如(包含互连子网1的Segment主机地址名的主机文件):
sdw1-1
sdw2-1
sdw3-1
-h hostname
指定将参与性能测试的单个主机名(或主机地址)。用户可以多次使用-h选项来指定多个主机名。
--netperf
指定应该用netperf二进制文件来执行网络测试,而不是Greenplum网络测试。要使用此选项,用户必须从http://www.netperf.org下载netperf并且安装到所有Greenplum主机(Master和Segment)的$GPHOME/bin/lib目录中。
-r ds{n|N|M}
指定要运行的性能测试,默认是 dsn:
磁盘I/O测试(d)
流测试(s)
网络性能测试,串行(n)、并行(N)或全矩阵(M)模式。可选的--duration 选项指定了运行网络测试的时间(以秒为单位)。要使用并行(N)模式,用户必须在偶数台主机上运行测试。
如果用户宁愿使用netperf(http://www.netperf.org)而不是Greenplum网络测试,用户必须下载它并安装到所有Greenplum主机(Master和Segment)的$GPHOME/bin/lib目录中。然后,用户可以指定可选的--netperf选项来使用netperf二进制文件而不是默认的gpnetbench*工具。
-S file_size
指定用于-d所指定的所有目录的磁盘I/O测试的总文件尺寸。file_size应该等于主机上总RAM的两倍。如果未指定,则默认值是在执行gpcheckperf的主机上的总RAM的两倍,这确保了测试是真正地测试磁盘I/O而不是使用内存缓存。用户可以以KB、MB或GB为单位指定尺寸。
-v (详细模式)| -V (非常详细模式)
详细(Verbose)模式显示性能测试运行时的进度和状态信息。非常详细(Very Verbose)模式显示该工具生成的所有输出消息。
--version
显示该工具的版本
-? (帮助)
显示在线帮助
XIV、初始化数据库
初始化数据库的要求:
①、确保完成系统配置,GP的安装,环境变量的配置
②、创建主机文件hosts
③、数据库系统配置文件
④、时区以及本地化设置
1.登录gpadmin用户,并加载greepplum_path.sh文件
$ su - gpadmin
$ source /usr/local/greenplum-db/greenplum_path.sh
2.创建初始化主机文件
$ vim hostfile_gpinitsystem
3.配置文件 gpinitsystem_config
①、复制文件,放在gpadmin用户下
$ cp $GPHOME/docs/cli_help/gpconfigs/gpinitsystem_config \
/home/gpadmin/gpconfigs/gpinitsystem_config
②、编辑文件gpinitsystem_config添加配置
ARRAY_NAME="Greenplum Data Platform"
SEG_PREFIX=gpseg
PORT_BASE=6000
declare -a DATA_DIRECTORY=(/data1/primary /data1/primary /data1/primary /data2/primary /data2/primary /data2/primary)
MASTER_HOSTNAME=master
MASTER_DIRECTORY=/data/master
MASTER_PORT=5432
TRUSTED SHELL=ssh
CHECK_POINT_SEGMENTS=8
ENCODING=UNICODE
③、配置镜像(可选)
MIRROR_PORT_BASE=7000
declare -a MIRROR_DATA_DIRECTORY=(/data1/mirror /data1/mirror /data1/mirror /data2/mirror /data2/mirror /data2/mirror)
4、运行初始化
$ cd ~
$ gpinitsystem -c gpinitsystem_config -h hostfile_gpinitsystem