大家好,欢迎来到IT知识分享网。
Greenplum是一套基于postgresql数据库的典型MPP(大规模并行处理系统)集群数据库,整个GP环境中包含几个部分:
1. Master:建立与客户端的连接和管理,生产SQL查询计划,执行计划向segment的分发收集执行结果。Master本身不负责数据存储,只存储数据字典。
2. Segment:业务数据的存取,用户SQL的执行。
3. Master高可用,使用节点standby的方式。
4. Segment高可用,使用磁盘镜像的方式。
一、 准备
1. 软件:以下软件为确认可用的版本
1) 对于数据库版本和操作系统版本已经验证的有两个组合
a) 操作系统:Red Hat Enterprise Linux Server 6.2 64bit.
数据库:greenplum-db-4.3.8.2-build-1-RHEL5-x86_64.zip
b) 操作系统:CentOS-6.8-x86_64-bin-DVD1.
数据库:greenplum-db-5.2.0-rhel6-x86_64.zip.zip
2) 辅助工具:Xshell,winscp等。
准备三台虚拟机 node-01,node-02,node-03
2. 操作系统环境:
由于是集群数据库,所以要准备多台服务器,并且每台服务器均按如下方法进行配置:
\i. root修改内核
修改vi /etc/sysctl.conf
# Controls IP packet forwarding
net.ipv4.ip_forward = 0
# Controls source route verification
net.ipv4.conf.default.rp_filter = 1
# Do not accept source routing
net.ipv4.conf.default.accept_source_route =0
# Controls the System Request debuggingfunctionality of the kernel
kernel.sysrq = 1
# Controls whether core dumps will appendthe PID to the core filename.
# Useful for debugging multi-threadedapplications.
kernel.core_uses_pid = 1
# Controls the use of TCP syncookies
net.ipv4.tcp_syncookies = 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
# Controls the default maxmimum size of amesage queue
kernel.msgmnb = 65536
# Controls the maximum size of a message,in bytes
kernel.msgmax = 65536
kernel.msgmni = 2048
kernel.sem = 250 512000 100 2048
# Controls the maximum shared segment size,in bytes
#kernel.shmmax = 68719476736
kernel.shmmax = 500000000 —共享内存段最大值
kernel.shmmni = 4096 —共享内存段最大值
# Controls the maximum number of sharedmemory segments, in pages
#kernel.shmall = 4294967296
kernel.shmall = 4000000000 —共享内存段最大值
net.ipv4.tcp_tw_recycle=1
net.ipv4.tcp_max_syn_backlog=4096
net.ipv4.ip_local_port_range = 1025 65535
net.core.netdev_max_backlog=10000
vm.overcommit_memory=2
net.ipv4.conf.all.arp_filter = 1
net.core.rmem_max = 2097152
net.core.wmem_max = 2097152
ii. root修改Linux最大连接数
vi /etc/security/limits.conf
#greenplum configs
* soft nofile 65536
* hard nofile 65536
* soft nproc 131072
* hard nproc 131072
逐个修改 vi /etc/security/limits.d/90-nproc.conf
* soft nproc 131072
iii. I/O优化
vi /boot/grub/menu.lst
#greenplum configs
elevator=deadline
iV. vi /etc/rc.d/rc.local
最后加blockdev –setra 65536 /dev/sda –修改扇区读写能力。
Greenplum数据库安装
所有安装过程,若非特殊说明,均在master节点完成,本例中的master预定为node-01。
1. 创建gpadmin用户
这步在所有节点上完成:
useradd gpadmin 创建gpadmin账户
passwd gpadmin 给账户gpadmin设置密码
自己设置的 12345678
2. 配置gpadmin用户的环境变量(所有节点)cd /home/gpadmin
vim .bashrc和vim .bash_profile,添加下面两行
source /usr/local/greenplum-db/greenplum_path.sh
export MASTER_DATA_DIRECTORY=/data/gpdata/master/gpseg-1
不做任何改动,默认安装位置,这两句会生效,注意后面建立存储目录时,和这个地方的master要对应。Greenplum-db是安装过程中创建的软连接,默认即可。
注意系统变量vim /etc/profile也添加这两句话,并注意执行source /etc/profile使之生效。
3. 执行安装(以下操作均在node-01上完成)
将数据库安装文件上传到/opt目录下,解压并执行安装,这里不用对路径等信息做修改,一路默认即可,数据库名称可以适当进行调整。安装完成后,系统会自动在/usr/local目录下创建一个名为greenplum-db对安装目录的连接,这样和前面profile中的配置就一致了,如果修改了安装位置,有可能创建连接会失败。
unzip greenplum-db-4.3.8.2-build-1-RHEL5-x86_64.zip
cd greenplum-db-4.3.8.2-build-1-RHEL5-x86_64
chmod u+x greenplum-db-4.3.8.2-build-1-RHEL5-x86_64.bin
./greenplum-db-4.3.8.2-build-1-RHEL5-x86_64.bin(安装过程根据提示 yes,Enter即可)
4. 准备节点信息
创建一个目录专门存放节点配置,mkdir -p /opt/gpinst/,在这个目录里创建一个文件vim all_host,实际上文件名可以任意。内容是:
node-01
node-02
node-03
关闭防火墙
chkconfig iptables off ;//永久关闭,重启后不启动
service iptables stop ;//重启后会启动 ,用service iptables status检查状态。
systemctl stop firewalld.service (centos7.x的命令)
关闭SElinux
编辑 vim /etc/sysconfig/selinux
修改SELINUX=enforcing 为 SELINUX=disabled
重启生效。 reboot
查看selinux状态,执行:sestatus -v
获取 SELinux 状态:getenforce
安装GCC
http://vault.centos.org/6.3/os/x86_64/Packages/
到这里可以下载需要用的包,打成一个zip包
mkdir /export/server/gcc
然后上传gcc.zip
然后解压 unzip cgcc.zip
rpm -ivh kernel-headers-2.6.32-279.el6.x86_64.rpm
rpm -ivh mpfr-2.4.1-6.el6.x86_64.rpm
rpm -ivh cpp-4.4.6-4.el6.x86_64.rpm
rpm -ivh ppl-0.10.2-11.el6.x86_64.rpm
rpm -ivh cloog-ppl-0.15.7-1.2.el6.x86_64.rpm
rpm -ivh libgomp-4.4.6-4.el6.x86_64.rpm
rpm -Uvh gcc-4.4.6-4.el6.x86_64.rpm –nodeps –force
5. 建立节点之间的信任
a) 在node-01 机器上 ~目录下
ssh-keygen -t rsa [dsa] 按四下回车 rsa和dsa只是一种加密的方式 我们选择一个就行
生成密钥文件和私钥文件 id_rsa,id_rsa.pub
b) 将公钥拷贝给node-04机器, ~目录下
ssh-copy-id node-04
c) 需要完成第一台机器到所有免密
ssh-copy-id node-01
ssh-copy-id node-02
ssh-copy-id node-03 这样 根据自己的情况
6. 执行安装
仍然在bin( cd /usr/local/greenplum-db-4.3.8.2/bin)目录下执行:
gpseginstall -f /opt/gpinst/all_host -ugpadmin -p 12345678
一路顺利完成部署操作
7. 创建存储目录
由一开始的内容可知,我们这次准备了3台服务器,分别为node-01,node-02,node-03, node-01上要安装集群的master,同时他还要另外承担一部分segment的任务,其次还要配置某个节点的mirror,node-02与node-01类似,只不过node-02上会部署node-01的master-standby,node-03只做segment并部署集群中某个节点的mirror。
(这里不用创建.第八步会创建)
node01:
mkdir -p /data/gpdata/master
mkdir -p /data/gpdata/primary
mkdir -p /data1/gpdata/mirror
node02
mkdir -p /data/gpdata/master
mkdir -p /data/gpdata/primary
mkdir -p /data1/gpdata/mirror
node03
mkdir -p /data/gpdata/primary
mkdir -p /data1/gpdata/mirror
8. 开始创建目录:
Master
mkdir -p /data/gpdata/master
chown gpadmin:gpadmin /data/gpdata/master
segment(primary,在每个节点的/data目录下创建,使用gp自带的gpssh工具执行)
gpssh -f /opt/gpinst/all_host -e ‘mkdir -p /data/gpdata/primary’
gpssh -f /opt/gpinst/all_host -e ‘chown gpadmin:gpadmin /data/gpdata/primary’
mirror(同样在每个节点的/data1目录下创建)
gpssh -f /opt/gpinst/all_host -e ‘mkdir -p /data1/gpdata/mirror’
gpssh -f /opt/gpinst/all_host -e ‘chown gpadmin:gpadmin /data1/gpdata/mirror’
9. 设置时钟同步
注意这个操作是在本案例中的操作系统中进行,其他版本的Linux可能会不一样,甚至无法成功。
vi /etc/ntp.conf
加入一行:server node-01,每个节点上都进行同样的操作,同时这个server填成统一的,这样所有的机器统一和这个IP的服务器进行时间同步。
重启ntpd服务 /etc/init.d/ntpd restart
查看ntp同步情况 ntpq -p
使ntpd服务重启服务器后也启动 chkconfig –level 0123456 ntpd on
10. 编辑数据库初始文件
使用gpadmin创建目录和文件,
mkdir /home/gpadmin/gpconfigs
cp /usr/local/greenplum-db/docs/cli_help/gpconfigs/gpinitsystem_config
/home/gpadmin/gpconfigs/ (这是一句话,复制的时候注意)
chmod 775 /home/gpadmin/gpconfigs/gpinitsystem_config
在cd /home/gpadmin/gpconfigs/
修改这个 vim gpinitsystem_config文件: (红色部分是需要修改和打开的)
declare -a DATA_DIRECTORY=(/data/gpdata/primary)–若在每个节点上的指定目录里只创建一个primary,则这里只写一个位置即可,若超过一个,就会在每个节点上创建多余1个的primary目录。
ARRAY_NAME=”HX Greenplum DW” –默认即可
SEG_PREFIX=gpseg –默认即可
PORT_BASE=40000 –默认即可
MASTER_HOSTNAME=node-01
MASTER_DIRECTORY=/data/gpdata/master
MASTER_PORT=5432
TRUSTED_SHELL=ssh
CHECK_POINT_SEGMENTS=8
ENCODING=UNICODE
MIRROR_PORT_BASE=50000
REPLICATION_PORT_BASE=41000
MIRROR_REPLICATION_PORT_BASE=51000
declare -a MIRROR_DATA_DIRECTORY=(/data1/gpdata/mirror) —和primary一样
DATABASE_NAME=greenplum-db_test
MACHINE_LIST_FILE=/home/gpadmin/gpconfigs/hostfile_gpinitsystem –注意这个文件需要从cli_help目录中复制过来。
11. 执行数据库初始化
Gpadmin在bin目录下:
cd /usr/local/greenplum-db/bin
需要切换为gpadmin用户
su gpadmin
gpinitsystem -c /home/gpadmin/gpconfigs/gpinitsystem_config -h /opt/gpinst/all_host
跟进提示,输入一次y,顺利就可以完成数据库部署。
12. 为master安装standby
为node-01的master在node-02上配置standby,在node-02相同的位置创建一个master文件夹。
在node02上执行以下操作:
mkdir /data/gpdata/master
chown gpadmin:gpadmin /data/gpdata/master
在node01上执行以下操作:(注意此时数据库应是启动的)
gpinitstandby -snode-02
按照顺序执行直接完成创建standby操作。(输出y然后回车)
13. 设置访问权限
Greenplum数据库作为mpp结构的系统,用户只能通过Master节点对数据进行访问,所以需要修改master中的hba文件,使其能够接受网络中其他终端的访问。
vim /data/gpdata/master/gpseq-1/pg_hba.conf,在最后加上
#user define
host all all 192.168.25.190/24 trust
host all all 127.0.0.1/28 trust
三、 Greenplum数据库的基本使用
1. 启动和停止
su gpadmin
gpstart
gpstop
2. 查看数据库状态
psql -l
pgstate
3. 命令行连接访问数据库
psql -d greenplum-db_test -h node-1 -p 5432 -U gpadmin
在命令行界面也可以输入以下
\h:查看SQL命令的解释,比如\h select。
\?:查看psql命令列表。
\l:列出所有数据库。
\c [database_name]:连接其他数据库。
\d:列出当前数据库的所有表格。
\d [table_name]:列出某一张表格的结构。
\du:列出所有用户。
\e:打开文本编辑器。
\conninfo:列出当前数据库和连接的信息。
\q 退出命令行界面
# 创建新表
CREATE TABLE user_tbl(name VARCHAR(20), signup_date DATE);
# 插入数据
INSERT INTO user_tbl(name, signup_date) VALUES(‘张三’, ‘2013-12-22’);
# 选择记录
SELECT * FROM user_tbl;
# 更新数据
UPDATE user_tbl set name = ‘李四’ WHERE name = ‘张三’;
# 删除记录
DELETE FROM user_tbl WHERE name = ‘李四’ ;
# 添加栏位
ALTER TABLE user_tbl ADD email VARCHAR(40);
# 更新结构
ALTER TABLE user_tbl ALTER COLUMN signup_date SET NOT NULL;
# 更名栏位
ALTER TABLE user_tbl RENAME COLUMN signup_date TO signup;
# 删除栏位
ALTER TABLE user_tbl DROP COLUMN email;
# 表格更名
ALTER TABLE user_tbl RENAME TO backup_tbl;
# 删除表格
DROP TABLE IF EXISTS backup_tbl;
有问题的可以留言或者邮箱 duanhhsuper@sina.com
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/25943.html