Welcome 微信登录

首页 / 数据库 / MySQL / Greenplum测试环境部署

1.准备3台主机

本实例是部署实验环境,采用的是Citrix的虚拟化环境,分配了3台RHEL6.4的主机。
Master创建模板后,额外添加20G一块磁盘/dev/xvdb,额外添加2块网卡eth1,eth2
Standby创建模板后,额外添加20G一块磁盘/dev/xvdb,额外添加2块网卡eth1,eth2
Segment01创建模板后,额外添加50G一块磁盘/dev/xvdb,额外添加2块网卡eth1,eth2
网络规划
 eth0(外部IP)eth1eth2
Master192.168.9.123172.16.10.101172.16.11.101
Standby192.168.9.124172.16.10.102172.16.11.102
Segment01192.168.9.125(可选)172.16.10.1172.16.11.1
实验环境资源有限暂时配置3个节点,后续可能会根据需求添加Segment02,Segment03...修改主机名将Master,Standby,Segment01的三台主机名分别设置为mdw, smdw, sdw1主机名修改方法:hostname 主机名vi /etc/sysconfig/network 修改hostnameOptions:配置脚本,前期为了方便同步节点间的配置,可选。export NODE_LIST="MDW SMDW SDW1"vi /etc/hosts 临时配置192.168.9.123 mdw192.168.9.124 smdw192.168.9.125 sdw1配置第一个节点到自身和其他机器的无密码登录ssh-keygen -t rsassh-copy-id -i /root/.ssh/id_rsa.pub root@192.168.9.123ssh-copy-id -i /root/.ssh/id_rsa.pub root@192.168.9.124ssh-copy-id -i /root/.ssh/id_rsa.pub root@192.168.9.125cluster_run_all_nodes "hostname ; date"磁盘规划gp建议使用xfs文件系统,所有节点需要安装依赖包
# rpm -ivh xfsprogs-3.1.1-10.el6.x86_64.rpm所有节点建立/data文件夹,用来挂载xfs的文件系统mkdir /datamkfs.xfs /dev/xvdb[root@smdb Packages]# mkfs.xfs /dev/xvdbmeta-data=/dev/xvdbisize=256agcount=4, agsize=1310720 blks = sectsz=512 attr=2, projid32bit=0data = bsize=4096 blocks=5242880, imaxpct=25 = sunit=0swidth=0 blksnaming =version 2bsize=4096 ascii-ci=0log=internal log bsize=4096 blocks=2560, version=2 = sectsz=512 sunit=0 blks, lazy-count=1realtime =none extsz=4096 blocks=0, rtextents=0vi /etc/fstab 添加下面一行/dev/xvdb /data xfs rw,noatime,inode64,allocsize=16m1 1

2.关闭iptables和selinux

cluster_run_all_nodes "hostname; service iptables stop"cluster_run_all_nodes "hostname; chkconfig iptables off"cluster_run_all_nodes "hostname; chkconfig ip6tables off"cluster_run_all_nodes "hostname; chkconfig libvirtd off"cluster_run_all_nodes "hostname; setenforce 0"cluster_run_all_nodes "hostname; sestatus"vi /etc/selinux/configcluster_copy_all_nodes /etc/selinux/config /etc/selinux/注:所有节点都要统一设定,我这里先配置了信任,用脚本实现的同步,如果没有配置,是需要每台依次设定的。

3.设定建议的系统参数

vi /etc/sysctl.confkernel.shmmax = 500000000kernel.shmmni = 4096kernel.shmall = 4000000000kernel.sem = 250 512000 100 2048kernel.sysrq = 1kernel.core_uses_pid = 1kernel.msgmnb = 65536kernel.msgmax = 65536net.ipv4.tcp_syncookies = 1net.ipv4.ip_forward = 0net.ipv4.conf.default.accept_source_route = 0net.ipv4.tcp_tw_recycle = 1net.ipv4.tcp_max_syn_backlog = 4096net.ipv4.conf.all.arp_filter = 1net.ipv4.conf.default.arp_filter = 1net.core.netdev_max_backlog = 10000vm.overcommit_memory = 2kernel.msgmni = 2048net.ipv4.ip_local_port_range = 1025 65535vi /etc/security/limits.conf* soft nofile 65536* hard nofile 65536* soft nproc 131072* hard nproc 131072同步到各个节点:cluster_copy_all_nodes /etc/sysctl.conf /etc/sysctl.confcluster_copy_all_nodes /etc/security/limits.conf /etc/security/limits.conf磁盘预读参数及 deadline算法在/etc/rc.d/rc.local 添加blockdev --setra 16385 /dev/xvdbecho deadline > /sys/block/xvdb/queue/schedulercluster_copy_all_nodes /etc/rc.d/rc.local /etc/rc.d/rc.local注:重启后 blockdev --getra /dev/xvdb 验证是否生效验证所有节点的字符集cluster_run_all_nodes "hostname; echo $LANG"重启所有节点,验证修改是否生效:blockdev --getra /dev/xvdb more /sys/block/xvdb/queue/schedulercluster_run_all_nodes "hostname; service iptables status"

4.在Master上安装

mkdir -p /data/soft上传greenplum-db-4.3.4.2-build-1-RHEL5-x86_64.zip到Master**解压**unzipgreenplum-db-4.3.4.2-build-1-RHEL5-x86_64.zip **安装**/bin/bash greenplum-db-4.3.4.2-build-1-RHEL5-x86_64.bin

5.在所有的节点上安装配置Greenplum

配置/etc/hosts192.168.9.123 mdw172.16.10.101 mdw-1172.16.11.101 mdw-2192.168.9.124 smdw172.16.10.102 smdw-1172.16.11.102 smdw-2192.168.9.125 sdw1172.16.10.1 sdw1-1172.16.11.1 sdw1-2同步/etc/hosts配置cluster_copy_all_nodes /etc/hosts /etc/hosts配置gp需要的互信vi hostfile_exkeys 创建文件内容示例如下:mdwmdw-1mdw-2smdwsmdw-1smdw-2sdw1sdw1-1sdw1-2Option: 此时如果之前做了部分互信,可以清除之前为安装方便配置的ssh信任rm -rf /root/.ssh/# gpseginstall -f hostfile_exkeys -u gpadmin -p 123456# su - gpadmin$ source /usr/local/greenplum-db/greenplum_path.sh$ cd /usr/local/greenplum-db$ gpssh -f hostfile_exkeys -e ls -l $GPHOME互信此时应该是可用的,如果不可用,再次执行gpssh -f hostfile_exkeys创建Data Storage Areas,root用户操作# mkdir /data/master# chown gpadmin /data/master/利用gpssh,在standby master上也创建数据目录# source /usr/local/greenplum-db/greenplum_path.sh# gpssh -h smdw -e "mkdir /data/master"# gpssh -h smdw -e "chown gpadmin /data/master"在所有的segment节点上创建数据目录先创建一个文件 hostfile_gpssh_segonly,包含所有segment节点的主机名sdw1
创建目录# source /usr/local/greenplum-db/greenplum_path.sh# gpssh -f hostfile_gpssh_segonly -e "mkdir /data/primary"# gpssh -f hostfile_gpssh_segonly -e "mkdir /data/mirror"# gpssh -f hostfile_gpssh_segonly -e "chown gpadmin /data/primary"# gpssh -f hostfile_gpssh_segonly -e "chown gpadmin /data/mirror"配置NTP我这里没有配置NTP,生产环境建议配置。验证OS设置先建立一个hostfile_gpcheck文件mdwsmdwsdw1验证$ source /usr/local/greenplum-db/greenplum_path.sh$ gpcheck -f hostfile_gpcheck -m mdw -s smdw20150402:17:56:10:009650 gpcheck:mdw:gpadmin-[INFO]:-dedupe hostnames20150402:17:56:10:009650 gpcheck:mdw:gpadmin-[INFO]:-Detected platform: Generic Linux Cluster20150402:17:56:10:009650 gpcheck:mdw:gpadmin-[INFO]:-generate data on servers20150402:17:56:11:009650 gpcheck:mdw:gpadmin-[INFO]:-copy data files from servers20150402:17:56:12:009650 gpcheck:mdw:gpadmin-[INFO]:-delete remote tmp files20150402:17:56:12:009650 gpcheck:mdw:gpadmin-[INFO]:-Using gpcheck config file: /usr/local/greenplum-db/./etc/gpcheck.cnf20150402:17:56:12:009650 gpcheck:mdw:gpadmin-[ERROR]:-GPCHECK_ERROR host(None): utility will not check all settings when run as non-root user20150402:17:56:12:009650 gpcheck:mdw:gpadmin-[ERROR]:-GPCHECK_ERROR host(smdw): on device (xvdd) IO scheduler "cfq" does not match expected value "deadline"20150402:17:56:12:009650 gpcheck:mdw:gpadmin-[ERROR]:-GPCHECK_ERROR host(smdw): on device (xvda) IO scheduler "cfq" does not match expected value "deadline"20150402:17:56:12:009650 gpcheck:mdw:gpadmin-[ERROR]:-GPCHECK_ERROR host(smdw): ntpd not detected on machine20150402:17:56:12:009650 gpcheck:mdw:gpadmin-[ERROR]:-GPCHECK_ERROR host(sdw1): on device (xvda) IO scheduler "cfq" does not match expected value "deadline"20150402:17:56:12:009650 gpcheck:mdw:gpadmin-[ERROR]:-GPCHECK_ERROR host(sdw1): ntpd not detected on machine20150402:17:56:12:009650 gpcheck:mdw:gpadmin-[ERROR]:-GPCHECK_ERROR host(mdw): on device (xvda) IO scheduler "cfq" does not match expected value "deadline"20150402:17:56:12:009650 gpcheck:mdw:gpadmin-[ERROR]:-GPCHECK_ERROR host(mdw): ntpd not detected on machine20150402:17:56:12:009650 gpcheck:mdw:gpadmin-[INFO]:-gpcheck completing...验证网络性能hostfile_gpchecknet_sc1sdw1-1hostfile_gpchecknet_sc2sdw1-2验证磁盘I/O和内存hostfile_gpcheckperfsdw1配置本地化设置字符集的设定创建初始化文件$ mkdir -p /home/gpadmin/gpconfigs$ cd /home/gpadmin/gpconfigs$ vi hostfile_gpinitsystem sdw1-1sdw1-2拷贝gpinitsystem_config$ cp /usr/local/greenplum-db/docs/cli_help/gpconfigs/gpinitsystem_config /home/gpadmin/gpconfigs/gpinitsystem_config$ cd /home/gpadmin/gpconfigs修改 declare -a DATA_DIRECTORY=(/data/primary /data/primary) #declare -a MIRROR_DATA_DIRECTORY=(/data/mirror /data/mirror)以后配置默认就是注释的运行初始化工具$ gpinitsystem -c gpconfigs/gpinitsystem_config -h gpconfigs/hostfile_gpinitsystem -s smdw初始化过程中报错:20150403:10:58:51:032589 gpcreateseg.sh:mdw:gpadmin-[INFO]:-Start Function ED_PG_CONF20150403:10:58:52:032672 gpcreateseg.sh:mdw:gpadmin-[WARN]:-Failed to insert port=40001 in /data/primary/gpseg1/postgresql.conf on sdw1-220150403:10:58:52:032672 gpcreateseg.sh:mdw:gpadmin-[INFO]:-End Function ED_PG_CONF20150403:10:58:52:032672 gpcreateseg.sh:mdw:gpadmin-[FATAL][1]:-Failed Update port number to 4000120150403:10:58:52:032589 gpcreateseg.sh:mdw:gpadmin-[WARN]:-Failed to insert port=40000 in /data/primary/gpseg0/postgresql.conf on sdw1-120150403:10:58:53:032589 gpcreateseg.sh:mdw:gpadmin-[INFO]:-End Function ED_PG_CONF20150403:10:58:53:032589 gpcreateseg.sh:mdw:gpadmin-[FATAL][0]:-Failed Update port number to 40000找到资料:https://support.pivotal.io/hc/communities/public/questions/200372738-HAWQ-Initialization解决方法:1.所有节点安装ed# rpm -ivh /tmp/ed-1.1-3.3.el6.x86_64.rpm warning: /tmp/ed-1.1-3.3.el6.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID fd431d51: NOKEYPreparing...########################################### [100%] 1:ed ########################################### [100%]2.清除初始化系统的信息/bin/bash /home/gpadmin/gpAdminLogs/backout_gpinitsystem_gpadmin_20150403_1057213.重新初始化系统gpinitsystem -c gpconfigs/gpinitsystem_config -h gpconfigs/hostfile_gpinitsystem -s smdw吐槽下:明明依赖ed,官方安装文档中却没有提及..安装成功最后会输出类似下面的提示:20150403:11:13:00:002886 gpinitsystem:mdw:gpadmin-[INFO]:-Greenplum Database instance successfully created20150403:11:13:00:002886 gpinitsystem:mdw:gpadmin-[INFO]:-------------------------------------------------------20150403:11:13:00:002886 gpinitsystem:mdw:gpadmin-[INFO]:-To complete the environment configuration, please 20150403:11:13:00:002886 gpinitsystem:mdw:gpadmin-[INFO]:-update gpadmin .bashrc file with the following20150403:11:13:00:002886 gpinitsystem:mdw:gpadmin-[INFO]:-1. Ensure that the greenplum_path.sh file is sourced20150403:11:13:00:002886 gpinitsystem:mdw:gpadmin-[INFO]:-2. Add "export MASTER_DATA_DIRECTORY=/data/master/gpseg-1"20150403:11:13:00:002886 gpinitsystem:mdw:gpadmin-[INFO]:- to access the Greenplum scripts for this instance:20150403:11:13:00:002886 gpinitsystem:mdw:gpadmin-[INFO]:- or, use -d /data/master/gpseg-1 option for the Greenplum scripts20150403:11:13:01:002886 gpinitsystem:mdw:gpadmin-[INFO]:- Example gpstate -d /data/master/gpseg-120150403:11:13:01:002886 gpinitsystem:mdw:gpadmin-[INFO]:-Script log file = /home/gpadmin/gpAdminLogs/gpinitsystem_20150403.log20150403:11:13:01:002886 gpinitsystem:mdw:gpadmin-[INFO]:-To remove instance, run gpdeletesystem utility20150403:11:13:01:002886 gpinitsystem:mdw:gpadmin-[INFO]:-Standby Master smdw has been configured20150403:11:13:01:002886 gpinitsystem:mdw:gpadmin-[INFO]:-To activate the Standby Master Segment in the event of Master20150403:11:13:01:002886 gpinitsystem:mdw:gpadmin-[INFO]:-failure review options for gpactivatestandby20150403:11:13:01:002886 gpinitsystem:mdw:gpadmin-[INFO]:-------------------------------------------------------20150403:11:13:01:002886 gpinitsystem:mdw:gpadmin-[INFO]:-The Master /data/master/gpseg-1/pg_hba.conf post gpinitsystem20150403:11:13:01:002886 gpinitsystem:mdw:gpadmin-[INFO]:-has been configured to allow all hosts within this new20150403:11:13:01:002886 gpinitsystem:mdw:gpadmin-[INFO]:-array to intercommunicate. Any hosts external to this20150403:11:13:01:002886 gpinitsystem:mdw:gpadmin-[INFO]:-new array must be explicitly added to this file20150403:11:13:02:002886 gpinitsystem:mdw:gpadmin-[INFO]:-Refer to the Greenplum Admin support guide which is20150403:11:13:02:002886 gpinitsystem:mdw:gpadmin-[INFO]:-located in the /usr/local/greenplum-db/./docs directory20150403:11:13:02:002886 gpinitsystem:mdw:gpadmin-[INFO]:-------------------------------------------------------配置gpadmin环境变量source /usr/local/greenplum-db/greenplum_path.shexport MASTER_DATA_DIRECTORY=/data/master/gpseg-1可选:客户端会话环境变量export PGPORT=5432export PGUSER=gpadminexport PGDATABASE=gptest生效并拷贝到standby master$ source ~/.bashrc$ scp ~/.bashrc smdw:~/.bashrc

6.创建数据库gptest

CREATE DATABASE gptest;$ psql template1psql (8.2.15)Type "help" for help.template1=# helpYou are using psql, the command-line interface to PostgreSQL.Type:copyright for distribution terms h for help with SQL commands ? for help with psql commands g or terminate with semicolon to execute query q to quittemplate1=# hAvailable help:ABORT BEGIN CREATE SEQUENCE DROP OPERATOR CLASS PREPAREALTER AGGREGATE CHECKPOINTCREATE SERVER DROP OWNEDPREPARE TRANSACTIONALTER CONVERSIONCLOSE CREATE TABLEDROP RESOURCE QUEUE REASSIGN OWNEDALTER DATABASECLUSTER CREATE TABLE AS DROP ROLE REINDEXALTER DOMAINCOMMENT CREATE TABLESPACE DROP RULE RELEASE SAVEPOINTALTER EXTERNAL TABLECOMMITCREATE TRIGGERDROP SCHEMA RESETALTER FILESPACE COMMIT PREPARED CREATE TYPE DROP SEQUENCE REVOKEALTER FOREIGN DATA WRAPPERCOPYCREATE USER DROP SERVER ROLLBACKALTER FUNCTIONCREATE AGGREGATECREATE USER MAPPING DROP TABLEROLLBACK PREPAREDALTER GROUP CREATE CAST CREATE VIEW DROP TABLESPACE ROLLBACK TO SAVEPOINTALTER INDEX CREATE CONSTRAINT TRIGGER DEALLOCATEDROP TRIGGERSAVEPOINTALTER LANGUAGECREATE CONVERSION DECLARE DROP TYPE SELECTALTER OPERATORCREATE DATABASE DELETEDROP USER SELECT INTOALTER OPERATOR CLASSCREATE DOMAIN DROP AGGREGATEDROP USER MAPPING SETALTER RESOURCE QUEUECREATE EXTERNAL TABLE DROP CAST DROP VIEW SET CONSTRAINTSALTER ROLECREATE FOREIGN DATA WRAPPER DROP CONVERSION END SET ROLEALTER SCHEMACREATE FUNCTION DROP DATABASE EXECUTE SET SESSION AUTHORIZATIONALTER SEQUENCECREATE GROUPDROP DOMAIN EXPLAIN SET TRANSACTIONALTER SERVERCREATE INDEXDROP EXTERNAL TABLE FETCH SHOWALTER TABLE CREATE LANGUAGE DROP FILESPACEGRANT START TRANSACTIONALTER TABLESPACECREATE OPERATOR DROP FOREIGN DATA WRAPPER INSERTTRUNCATEALTER TRIGGER CREATE OPERATOR CLASS DROP FUNCTION LISTENUNLISTENALTER TYPECREATE RESOURCE QUEUE DROP GROUPLOADUPDATEALTER USERCREATE ROLE DROP INDEXLOCKVACUUMALTER USER MAPPINGCREATE RULE DROP LANGUAGE MOVEVALUESANALYZE CREATE SCHEMA DROP OPERATOR NOTIFYtemplate1=# template1=# CREATE DATABASE gptest;CREATE DATABASE登录到gptest$ psqlpsql (8.2.15)Type "help" for help.gptest=#本文永久更新链接地址