1.由于最小化安装,所有机器执行
1 2 |
yum install ed openssh-clients zip unzip perl bind-utils net-tools -y |
2.所有服务器关闭防火墙
1 2 3 4 5 6 7 8 9 10 11 |
#contos7: systemctl stop firewalld systemctl disable firewalld firewall-cmd --state #contos7以下: service iptables stop service iptables status chkconfig iptables off(永久性生效,重启后不会复原) #service iptables stop(即时生效,重启后复原) |
3.检查时间是否为北京时间,如已经操作第一步时间同步后,此步可省略
1 2 3 4 5 6 7 8 9 |
#检查ntp主机时间是否为当前北京时间 date #如不是: date -s "2020-05-15 16:11:00" #修改系统时间date后加clock -w 理由-->为了保险,需要使用 clock -w 把当前系统时间写入到CMOS中 clock -w |
4.所有机器执行挂载
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
#正常情况下: #查看磁盘 fdisk -l #查看已挂载磁盘对应目录 df -h #进入根目录 cd / #创建目录 mkdir data #格式化磁盘(如果是挂在两个盘,则需要格式两个磁盘:/dev/sdb /dev/sdc) mkfs.xfs -f /dev/sdb #mkfs.xfs -f /dev/sdc #将信息写入fstab,让系统开启自动挂载 echo " /dev/sdb /data xfs rw,noatime,inode64,allocsize=16m 1 1 " >>/etc/fstab #挂载磁盘 mount -a #检查是否挂载成功 df -h |
步骤4遇到的问题:
#当需要的挂载磁盘已经挂载了对应的目录
umount /dev/sdb /data
#当遇到提示:设备正忙,卸载即告失败(/data: device is busy)
可使用:lsof /data
#使用fuser查看目录被谁占用,然后kill掉线程(lsof /data其实也可)
或者使用:fuser /data
/data: 2454 rc
#kill掉正在使用的进程后,重新 umount /dev/sdb /data
kill -9 2454
umount /dev/sdb /data
#遇到:mount:can‘t find uuid = xxxx
这说明uuid 对应的磁盘之前是有挂载过,然后我们格式化后UUID已经变了,然后之前对应的也是/data 目录,解决办法:
输入 blkid,然后拿到/dev/sdb 新的UUID,然后把/etc/fstab 文件对应的/dev/sdb 换成UUID,把之前有关/data的全部注销掉,再重新挂载:
5.修改所有机器名称
1 2 3 4 5 6 7 8 9 10 11 12 13 |
#centos7: hostnamectl set-hostname mdw132 hostnamectl --static ..... hostnamectl set-hostname sdw137 hostnamectl set-hostname sdw138 hostnamectl set-hostname sdw139 #centos7以下: #永久生效 vi /etc/sysconfig/network HOSTNAME=mdw132 |
6.修改所有机器hosts
1 2 3 4 5 6 7 8 9 10 11 |
vi /etc/hosts 10.214.138.132 mdw132 10.214.138.133 sdw133 10.214.138.134 sdw134 10.214.138.135 sdw135 10.214.138.136 sdw136 10.214.138.137 sdw137 10.214.138.138 sdw138 10.214.138.139 sdw139 |
7.多机信任(免登陆),所有机器都需要执行
区分:这里master节点和其他datanode节点会略有区别。
1.首先所有节点均执行如下命令,遇到提示一路回车即可:
ssh-keygen -t rsa
2.在主节点执行以下命令:
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
3.scp文件到所有datenode节点:
1 2 3 4 5 6 7 8 |
scp ~/.ssh/authorized_keys root@10.214.138.133:~/.ssh/ scp ~/.ssh/authorized_keys root@10.214.138.134:~/.ssh/ scp ~/.ssh/authorized_keys root@10.214.138.135:~/.ssh/ scp ~/.ssh/authorized_keys root@10.214.138.136:~/.ssh/ scp ~/.ssh/authorized_keys root@10.214.138.137:~/.ssh/ scp ~/.ssh/authorized_keys root@10.214.138.138:~/.ssh/ scp ~/.ssh/authorized_keys root@10.214.138.139:~/.ssh/ |
8.GP数据库安装部署:
8.1:修改所有机器的hosts(如果步骤6已做检查一遍)
cat /etc/hosts
8.2:安装greenplum--主节点执行(mdw132上执行)
安装软件上传至mdw132目录:/home/gp_install
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
#创建/home/gp_install mkdir /home/gp_install #进入 cd /home/gp_install #赋值目录 chmod 777 /home/gp_install #winscp 上传greenplum-db-4.3.11.3-rhel5-x86_64.bin到 /home/gp_install #以下步骤root用户在mdw执行,安装本地GP,并交换密钥: #(在文件所在目录下执行) ./greenplum-db-4.3.11.3-rhel5-x86_64.bin # 注意修改默认安装目录为:/usr/local/greenplum-db,其它都默认为yes。 #读取变量 source /usr/local/greenplum-db/greenplum_path.sh |
8.3:配置全部服务器列表(mdw132上执行)
注意:后续vi新建脚本都默认在mdw132服务器的/home/gp_install目录下,同时执行命令也需在mdw132服务器的该目录下运行
1 2 3 4 5 6 7 8 9 10 11 12 13 |
cd /home/gp_install vi hostfile_all #添加: sdw133 sdw134 sdw135 sdw136 sdw137 sdw138 sdw139 |
8.4:交换密钥
1 2 3 4 5 6 7 8 9 10 11 12 13 |
#将hostfile_all文件赋值给 chown gpadmin:gpadmin /hostfile_all #删除原来的文件 cd /root/.ssh/ rm -rf * #执行 cd /home/gp_install/ gpssh-exkeys -f hostfile_all [INFO] completed successfully-->成功 |
如果遇到一直输密码啥的:
1.有可能我们之前的多机信任有问题。
2.ssh版本密钥不对,需要修改sshd_config(所有机器执行):
1 2 3 4 5 6 7 |
vi /etc/ssh/sshd_config #添加 KexAlgorithms curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group14-sha1,diffie-hellman-group-exchange-sha1,diffie-hellman-group1-sha1 service sshd restart |
最好改完以后,再重新生成一次秘钥,即从新多一个多机信任,先把cd /root/.ssh/ 下的文件都 rm -rf 了
8.5:服务器系统参数配置(mdw132上执行)
#配置1
#修改
vi /etc/sysctl.conf
注释原来所有内容,添加:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
#system # Controls source route verification net.ipv4.conf.default.rp_filter = 1 # Disable netfilter on bridges. net.bridge.bridge-nf-call-ip6tables = 0 net.bridge.bridge-nf-call-iptables = 0 net.bridge.bridge-nf-call-arptables = 0 #gp,64G内存—shmmax :68719476736,128G内存-- shmmax :137438953472,物理内存*0.9*1024*1024*1024 #xfs_mount_options = rw,noatime,inode64,allocsize=16m kernel.shmmax = 57438953472 kernel.shmmni = 4096 kernel.shmall = 40000000000 kernel.sem = 120 5120000 100 20480 kernel.sysrq = 1 kernel.core_uses_pid = 1 kernel.msgmnb = 65536 kernel.msgmax = 65536 kernel.msgmni = 2048 net.ipv4.tcp_syncookies = 1 net.ipv4.ip_forward = 0 net.ipv4.conf.default.accept_source_route = 0 net.ipv4.tcp_tw_recycle = 1 net.ipv4.tcp_max_syn_backlog = 4096 net.ipv4.conf.all.arp_filter = 1 net.ipv4.ip_local_port_range = 1025 65535 net.core.netdev_max_backlog = 10000 vm.overcommit_memory = 2 #net.core.rmem_max = 2097152 #net.core.wmem_max = 2097152 net.core.rmem_default = 256960 net.core.rmem_max = 2097152 net.core.wmem_default = 256960 net.core.wmem_max = 2097152 net.ipv4.tcp_timestamps = 0 net.ipv4.tcp_sack = 0 net.ipv4.tcp_window_scaling = 1 |
注意:
#gp-->kernel.shmmax的值:64G内存—shmmax :68719476736,128G内存-- shmmax :137438953472,即物理内存*0.9*1024*1024*1024,如我的机器全是256G的:256*1024*1024*1024*0.9 , 其实只要超过128G 都可以默认得了...
#配置2
#修改
vi /etc/security/limits.conf
在最后增加:
1 2 3 4 5 6 7 |
#增加: #gp gpadmin soft nofile 65536 gpadmin hard nofile 65536 gpadmin soft nproc 131072 gpadmin hard nproc 131072 |
注意:
对于RedHat6.x/CENTOS 6.X系统,还需要将vi /etc/security/limits.d/90-nproc.conf文件中的1024修改为131072。
对于RedHat7.x/CENTOS 7.X系统,还需要将vi 录vi /etc/security/limits.d/20-nproc.conf文件中的4096修改为131072。
#配置3
#修改
vi /etc/rc.d/rc.local
在最后增加:
1 2 3 4 |
#添加: #gp /sbin/blockdev --setra 16384 /dev/sd* |
保存修改后执行命令:
#单独执行命令:
echo 1 > /proc/sys/vm/overcommit_memory
#配置4(Centos6.5没有该文件,略过)
vi /boot/grub/menu.lst
1 2 3 4 5 |
#添加后的结果: kernel /boot/vmlinuz-2.2.18-164.el5 ro root=LABEL=/ ro elevator=deadline rhgb quiet (注:根据系统不同内容会不同,只管添加elevator=deadline即可)。 |
#配置5
vi /etc/inittab
#在最后增加:
id:3:initdefault:
#配置6
vi /etc/ssh/sshd_config
[找到MaxStartups去掉#并修改为如下参数]
MaxStartups=1000:30:5000
#配置 7
vi /etc/sysconfig/selinux
#找到SELINUX修改:
SELINUX=disabled
8.6.将mdw132(主服务器)配置覆盖其它节点服务器脚本:
#新建cp.sh文件
vi cp.sh
#添加:
1 2 3 4 5 6 7 8 9 10 |
gpscp -f hostfile_all /etc/hosts =:/etc gpscp -f hostfile_all /etc/sysctl.conf =:/etc gpscp -f hostfile_all /etc/security/limits.conf =:/etc/security gpscp -f hostfile_all /etc/rc.d/rc.local =:/etc/rc.d gpscp -f hostfile_all /proc/sys/vm/overcommit_memory =:/proc/sys/vm gpscp -f hostfile_all /etc/sysconfig/selinux =:/etc/sysconfig gpscp -f hostfile_all /etc/inittab =:/etc gpscp -f hostfile_all /etc/ssh/sshd_config =:/etc/ssh/sshd_config gpscp -f hostfile_all /etc/yum.repos.d/http.repo =:/etc/yum.repos.d/ |
#执行:
chmod +x cp.sh
./cp.sh
8.7.检查配置结果
#新建check文件
vi check
#添加:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
/sbin/sysctl -p /sbin/blockdev --setra 16384 /dev/sd* blockdev --getra /dev/sd* df -h /etc/init.d/iptables stop /etc/init.d/iptables status chkconfig iptables off chkconfig --list iptables setenforce 0 getenforce cat /etc/sysconfig/network cat /etc/hosts grep MaxStartups /etc/ssh/sshd_config grep MaxSessions /etc/ssh/sshd_config |
#执行
gpssh -f hostfile_all -v < check
8.8.安装GP数据库(mdw132上执行)
#1.创建数据存储区,以下步骤root用户在mdw132执行,在所有节点上安装GP:
gpseginstall -f hostfile_all -u gpadmin -p gpadmin
#2.master存储创建:
1 2 3 4 5 6 7 |
mkdir -p /data/master mkdir -p /data/master/space_fastdisk chown gpadmin /data/master chown -R gpadmin:gpadmin /data chown -R gpadmin:gpadmin /data/master |
#3.second master存储(本次没备用管理smdw服务器,请忽略此步骤)
1 2 3 |
//gpssh -h smdw -e 'mkdir -p /home/data/master' //gpssh -h smdw -e 'chown gpadmin /home/data/master' |
#4.segment存储
#创建mkdir文件
vi mkdir
#添加:
注意:正常情况都是data1到data4,因为此次服务器内存小,磁盘也不大,还是虚拟机,读写性能估计也一般,所以只做data1和data2,而机器,把盘做了raid,做n组raid就有n个盘挂载,我们就可以每个挂载盘创建一个data
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
mkdir -p /data/data1/gp/p mkdir -p /data/data1/gp/m mkdir -p /data/data2/gp/p mkdir -p /data/data2/gp/m mkdir -p /data/data1/gp/p/space_fastdisk mkdir -p /data/data1/gp/m/space_fastdisk mkdir -p /data/data2/gp/p/space_fastdisk mkdir -p /data/data2/gp/m/space_fastdisk chown -R gpadmin:gpadmin /data/data1 chown -R gpadmin:gpadmin /data/data2 chown -R gpadmin:gpadmin /data/data1/gp chown -R gpadmin:gpadmin /data/data2/gp |
#执行
gpssh -f hostfile_all -v < mkdir
8.9.配置环境变量
#以下步骤gpadmin用户在mdw132执行.
切换用户:su - gpadmin
#配置gpadmin变量
#修改:
vi /home/gpadmin/.bashrc
#添加:
1 2 3 4 5 6 7 |
export GPHOME=/usr/local/greenplum-db source $GPHOME/greenplum_path.sh export MASTER_DATA_DIRECTORY=/data/master/gpseg-1 export PGPORT=5432 export PGUSER=gpadmin export PGDATABASE=postgres |
#读取变量
source /home/gpadmin/.bashrc
8.10.初始化GP数据库(mdw132上执行)
#以下操作gpadmin用户在mdw132上执行:
#创建目录
1 2 3 4 |
su - gpadmin mkdir /home/gpadmin/gpconfigs cd /home/gpadmin/gpconfigs |
#配置实例对应的网卡
#创建文件:
vi hostfile_gpinitsystem
#添加节点服务器:
1 2 3 4 5 6 7 8 9 |
mdw132 sdw133 sdw134 sdw135 sdw136 sdw137 sdw138 sdw139 |
注意:一定要加上主服务器,不然到时候数据存不到主服务器
#配置实例对应的磁盘等
1.实例数不用太多,参考2物理cpu则8个实例即可;
2.DATA_DIRECTORY 一个目录代表一个实例,本次GP部署每台使用2块盘
vi gpinitsystem_config
#添加:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
ARRAY_NAME="EMC Greenplum DW" SEG_PREFIX=gpseg PORT_BASE=40000 declare -a DATA_DIRECTORY=(/data/data1/gp/p /data/data2/gp/p) MASTER_HOSTNAME=mdw11 MASTER_DIRECTORY=/data/master MASTER_PORT=5432 TRUSTED_SHELL=ssh CHECK_POINT_SEGMENTS=16 ENCODING=UTF8 MIRROR_PORT_BASE=50000 REPLICATION_PORT_BASE=41000 MIRROR_REPLICATION_PORT_BASE=51000 declare -a MIRROR_DATA_DIRECTORY=(/data/data1/gp/m /data/data2/gp/m) DATABASE_NAME=lte_mr |
#执行初始化
[无备管理服务器smdw执行]
gpinitsystem -c gpinitsystem_config -h hostfile_gpinitsystem
[有备管理smdw服务器]
//gpinitsystem -c gpinitsystem_config -h hostfile_gpinitsystem -s smdw
运行结果中如出现如下信息则创建成功!
……
Greenplum Database instance successfully created
……
8.11.远程访问设置(mdw132上执行)
#以下操作gpadmin用户在mdw132上执行
cd $MASTER_DATA_DIRECTORY
vi pg_hba.conf
#添加:
1 2 3 4 |
host all gpadmin 0.0.0.0/0 md5 host all dpi 0.0.0.0/0 md5 |
8.12.配置GP数据库登录密码(mdw132上执行)
#以下步骤gpadmin用户在mdw193执行。
切换用户:su - gpadmin
登录数据库:psql -d lte_mr
>alter role gpadmin with password 'gpadmin_GP$';
输入:\q退出数据库
8.13.GP数据库参数配置(mdw132上执行)
[gp_vmem_protect_limit=内存总量/实例数1024=(2564)/8*1024 MB,
以128G内存,8实例为例,基本使用默认不修改]
#以下操作gpadmin用户在mdw上执行:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
gpconfig -c gp_vmem_protect_limit -v 60000MB gpconfig -c max_statement_mem -v 21333MB gpconfig -c statement_mem -v 2048MB gpconfig -c filerep_socket_timeout -v 350 gpconfig -c gp_fts_probe_timeout -v 60 gpconfig -c max_connections -v 1000 -m 200 gpconfig -c max_appendonly_tables -v 50000 -m 50000 gpconfig -c gp_fts_probe_threadcount -v 90 -m 90 gpconfig -c gp_fts_probe_interval -v 120 -m 120 gpconfig -c gp_fts_probe_retries -v 10 -m 10 gpconfig -c gp_fts_probe_timeout -v 120 -m 120 gpconfig -c gp_segment_connect_timeout -v 600 gpconfig -c vacuum_freeze_min_age -v 999999999 -m 999999999 gpconfig -c autovacuum_freeze_max_age -v 2000000000 -m 2000000000 |
8.14.重启GP数据库(mdw132上执行)
#以下步骤gpadmin用户在mdw执行,切换用户:su - gpadmin
停数据库:gpstop -M fast
启数据库:gpstart -a
查看各节点状态:gpstate –m
8.15.性能验证(数据库安装成功后测试,mdw132上执行)
#网卡性能验证,网卡-管理口
vi hostfile_gpchecknet_eth0
#添加:
1 2 3 4 5 6 7 8 9 |
mdw132 sdw133 sdw134 sdw135 sdw136 sdw137 sdw138 sdw139 |
#测试:
gpcheckperf -f hostfile_gpchecknet_eth0 -r N -d /tmp > eth0.out
#查看:
cat eth0.out
#磁盘性能验证
[-S 256GB] 为内存的2倍
#测试
gpcheckperf -f hostfile_gpchecknet_eth0 -r ds -D -v -S 512GB -d /data1/gp/p >disk.out
#查看:
cat disk.out