GreenPlum安装笔记 - 图文
更新时间:2024-03-31 14:26:01 阅读量: 综合文库 文档下载
? 2015/6/13 22:51 GP架构_1 与GreenPlum类似的产品: IBM NITIZA(国内没人用) Terndata
2007年被EMC收购
GreenPlum国外市场:纳斯达克,skype
GreenPlum国内市场:阿里,民生银行,深发展银行,电信业(MPP架构)
MPP架构:海量并行处理 Massively Parallel Processing
share nothing 模式,每一个节点不进行资源共享,集群中每个节点有独立的CPU、内存、存储、总线等。
SMP架构: symmetric mass processing 对称多处理系统:耦合的多处理系统,共享总线、内存、IO资源,传统的 ORCKLE,DB2是非常典型的产品
ORACLE_RAC 处于半共享状态,各节点连接共享存储,所以不能算MPP
GreenPlum 基于 PostGreSQL8.2 之前在国内使用比较少,在国外使用广泛。 Mysql与PostGreSQL地位同等,但mysql被Oracle收购之后没落。
GreenPlum 在函数、dataloading、存储过程等继承了PostGreSQL
GP增加BI和数据仓库的支持: A、外部表、并行加载(优势明显) B、资源队列管理的优化,对角色、用户、组进行资源优化分配,管理。 C、GP在查询优化器的增强、分布支持、分区表、执行计划的优化、空间回收、数据分析,简化调优,架构时对称、数据分布均匀的话,可以免去调优 GP体系架构 Segment Host LAN Segment Host Client Segment Host Interconnect - Gigabit Ethernet SwitchMaster HostSegment HostMaster Host: 访问系统的入口,所有请求都需要从Master Host访问,正常来讲,管理员也不可以直接访问SegmentHost ,系统中只允许直接访问MasterHost ,单独操作 SegmentHost 影响一致性和完整性。 数据监听进程(PostGres):监听用户请求。 处理所有用户连接。 建立执行计划,通过网络层分发给SegmentHost。 协调整个处理过程,保证SegmentHost处理结果侧一致和同步。 只存储GP系统自身的数据,MasterHost的数据是很小的,存储架构信息、配置信息。不包含任何用户数据。
Interconnect 网络层: 千兆以太网的架构,各节点之间的连接层,系统内部私有网络配置,支持TCP和UDP TCP:面向连接的协议,三次握手,A请求B,B响应A,A才连接B建立稳定连接,线性扩展有节点的限制,官方1K个节点,实际不能达到。 UDP:(建议使用,连接快,也稳定)QQ聊天,面向非连接的,稳定性较差,效率较高。
Segment Host 数据节点 一些银行使用了60 segmentHost节点,一天的交易数据,分布在不同的SegHost中,分布的逻辑由,我们建立数据仓库的时候指定的,比如:随机的、指定分布键,每个SegmentHost存储一部分用户数据。 所有请求都来自MasterHost节点,有 PostGres监听进程负责
? 2015/6/13 23:15 GP架构_2 网络配置示例: as locally defined192.168. Local LAN/WANCatalyst 2960 X4200 (Master Host) iLOM e1000g3 e1000g2 e1000g1e1000g5e1000g0 e1000g4 X4500 (Segment Host 1, Standby Master) iLOM e1000g3 e1000g2 e1000g1e1000g5e1000g0 e1000g4 X4500 (Segment Host 2) iLOM e1000g3 e1000g2 e1000g1e1000g0 SMC 8748MSMC 8748M 172.16.0172.16.1172.16.2172.16.3
X4200/4500、网口主槽:e1000g0-e1000g3 ;网口扩展槽 e1000g4/5 ; iLOM串口
SegmentHost2 没有使用网口扩展槽,原因是 SegmentHost2 只是用户数据节点,而SegmentHost1 既是用户数据节点,又是 MasterHost的热备(standby)节点,所以SegHost1需要使用网口扩展槽e1000g4/5
扩展槽e1000g4/5连接广域网(用户网络),与用户连接
4网口主槽连接交换机个4个VLan:每个SegHost上面的会有多个Segment实例,假如每个实例都对应一个自己的网口,而且每个节点都有一个主网口连接到千兆交换机划分的虚拟网络上,例如所有节点的e1000g3都连接到Vlan:172.16.0.* ,不同的网口都在不同的局域网中,所以相同SegmentHost节点上的实例不会有网络带宽的竞争,使得数据访问更迅速。 iLON与catalyst 2960交换机相连接,用于管理员连接登陆各节点,管理个服务器节点。 在生产环境中,Master \\ Segment 节点的网口都会在6个以上,通过一个或多个交换机,将
各节点的网口,分组连接到不同的网段中,保证带宽的和高可用性。
Segment节点是没有公网出口的,Mast节点需要扩展网槽,连接到公网中。
网络交换机的冗余和高可用性:增加一个冗余交换机,Mast Host与Segment节点的网口分成两组分别连接到两台内网交换机上,例如各节点的 e1000g0/1 都连接到交换机A,e1000g2/3都连接到交换机B上,当A交换机宕机,各节点可以暂时通过B交换机的e1000g2/3网口进行连接和通信,提高了交换机及网路的高可用性
Synch process 同步MastHost上面发生的任何改变到standby master节点上,Mast instance坏掉,standby Master接管,避免单点故障。
3 Segment host都含有 PrimarySegment ,每个 segment Host都交叉备份其他segment 节点的 primarySegment。Segment通过镜像交叉备份,实现高可用性。
通过synchronization process实现 catalogs(数据字典信息)、 transaction logs (事物日志)从Master节点同步到 standby master节点上。
Primary 和 standby 部署在不同的物理节点上。
Synchronization process不会频繁同步,primary master节点上的数据的改变不会立刻同步到 standby master节点上
Standby master 不能自动接管故障Primary marter ,需要人工激活,激活前可以指定另外一个 standby master节点。
一般情况,segment N 的镜像放在前一个物理segment节点上,如segment N 上存放 segment1 的镜像。
当一个segment的一个节点宕机,可以有两种恢复方式,镜像只读,镜像可读写。 例如,镜像只读,当segment1的网络异常宕机,可以在不停止整个GP系统的情况下,修复网络后,直接将原来的segment1节点接入GP系统。
假如,镜像可写,需要关闭GP系统进行修复。
实际应用中,Segment 主机少则8-10台,多则上百 普通的X86的服务器,多核心CPU, 4G 内存 有条件的情况下,一个segment instance 应该独享一个CPU核心,适当的内存(8Gbi 以上 RAM),独立的存储(磁盘)、独立的网口,以保证减少数据竞争。如果条件不允许,也可以共享存储,但是最好有独立的CPU和网口。
GP系统的性能符合木桶原理,其性能由性能最差的segment instance决定的。
网络交换机的冗余和高可用性:增加一个冗余交换机,Mast Host与Segment节点的网口分成两组分别连接到两台内网交换机上,例如各节点的 e1000g0/1 都连接到交换机A,e1000g2/3都连接到交换机B上,当A交换机宕机,各节点可以暂时通过B交换机的e1000g2/3网口进行连接和通信,提高了交换机及网路的高可用性
2015/6/14 21:52 评估存储能力: 计算可用的空间: 步骤1:初始存储能力 = 硬盘大小 * 硬盘数(10块200G的硬盘 = 2Tbi) 步骤2: RAID10 ,冗余方案;
格式化磁盘空间 = (初始存储能力*0.9)/ 2 (2T * 0.9)/ 2 = 0.9 T
(Raid0 单纯提高存储的性能,2个磁盘,数据分别存到2个磁盘上,读写的时候
提高IO的性能,磁盘利用率50%; Raid1,2个盘,1个盘作为另外一个盘的镜像,IO效率没有提高,可用性提高; Raid5,奇偶验证,保证磁盘利用率和IO的性能。生产环境中,一般要选择Raid10,有冗余,也可提高IO效率,假如有 ABCD四个盘,AB盘做raid0 , CD盘做raid1,C是A盘镜像,D是B盘镜像,Raid10的磁盘利用率也是50%) 步骤3:可用磁盘空间 = 格式化磁盘空间 * 0.7 (格式化磁盘空间不能全沾满,根据最佳经验,当磁盘使用超过70%,系统管理员就会做相应处理) 步骤4:用户数据使用空间: 使用镜像:(2 * 用户数据) + 用户数据/3 = 可用磁盘空间 不用镜像:用户数据 + 用户数据/3 = 可用磁盘空间
计算用户数据大小:
平均来说,实际占用空间磁盘大小 = 用户数据*1.4(最佳经验),其中的0.4用来存储控制、配置信息。 页面开销:32Kb网页需要,需要20bytes 行开销:每行24bytes,行的头信息, append-only 只增加,多是分区表,如果修改或删除需要 truncate 掉分区,重新灌入数据。 索引开销: B-Tree 索引(任何数据库都用到),多路树,数据树状存放,二分法存储遍历数据。占用空间比较大:唯一值 * (库字段数据类型大小 + 24Bytes)。
Bitmap索引(数据字段重复值较多的情况):唯一值 * 行数 * 1bit *压缩比率/ 8 + (唯一值 * 32)
系统的元数据和日志计算空间需求:
系统元数据:20M在Master节点上,不会太大。但是,由于Master开销不大,一些商业环境中,ETL服务与Master混用,会增加存储。 预写日志(WAL,write ahead log ):记录用户操作数据库的每一个行为,当数据库节点出现故障,需要恢复时,就会用到WAL日志,WAL被拆分为多个64M的文件,允许的WAL的文件数据:( 2 * checkpoint_segments + 1 ) ,其中 checkpoint_segments 默认是8,(可配),如果 checkpoint_segments = 8 ,那么WAL的最大空间 = (2 * 8 + 1 ) * 64M = 1088 M。日志文件存储是轮转的,旧日志会被新日志替换。 GP数据库日志文件:日志轮转 性能监控数据:GP性能监控软件会记录节点上的性能数据,供DBA使用,软件所占空间
实验环境:
硬件环境:PC电脑,安装VMware 8 ,安装三台Linux虚拟机,Red Hat Enterprise Linux Server release 5.2
数据库:EMC主页去下载,greenplum-db-4.2.2.4-build-1-CE-RHEL5-i386 虚拟机: 节点 mdw sdw1 sdw2
IP 192.168.136.101 192.168.136.102 192.168.136.103 内存 400M 400M 400M 硬盘 8G 8G 8G 系统设置(所有节点)
系统参数:共享内存:分配合理,以免内存溢出,GP系统宕机。推荐《鸟哥私房菜》 修改或添加/etc/sysctl.conf
xfs_mount_options = rw,noatime,inode64,allocsize=16m kernel.shmmax = 500000000(最大共享内存) kernel.shmmni = 4096(最小共享内存) kernel.shmall = 4000000000
kernel.sem = 250 512000 100 2048
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
2015/6/1610:16
Vmware安装
http://dlsw.http://www.wodefanwen.com//sw-search-sp/soft/e5/13808/VMware-workstation-full-11.1.0.58002.1428919414.exe
ubuntu 12 的镜像 E:/ubuntu-15.04-desktop-amd64.iso
一、修改root密码
默认root密码是随机的,即每次开机都有一个新的root密码。
我们可以在终端输入命令 sudo passwd,终端会提示我们输入新的密码并确认,此时的密码就是root新密码。 修改成功后,输入命令 su root,再输入新的密码就ok了。 二、只启动命令行模式: sudo gedit /etc/default/grub 找到这一行
GRUB_CMDLINE_LINUX_DEFAULT=\改成
GRUB_CMDLINE_LINUX_DEFAULT=\在输入命令: sudo update-grub
开机后就自动进入tty1了。 # 重启系统 reboot # 关闭系统 shutdown -h now
Ubuntu 的网络设置
在Vmware 创建 Ubuntu 虚拟节点之后,还需要进行外网设置
创建虚拟网络设置选择NAT方式:NAT服务用于将一个地址段映射到另一个地址段,即可通过NAT把内网地址(私有地址)转换成合法的公网IP地址,以便内网地址访问公网
Ubuntu虚拟机设置固定IP上网,参考http://www.cnblogs.com/lanxuezaipiao/p/3613497.html, VMware虚拟机上网络连接(network type)的三种模式--bridged、host-only、NAT,参考
http://www.cnblogs.com/xiaochaohuashengmi/archive/2011/03/15/1985084.html
虚拟主机连接外网设置
Vi /etc/network/interfaces 添加如下内容:
# interfaces(5) file used by ifup(8) and ifdown(8) auto lo
iface lo inet loopback auto eth0
iface eth0 inet static address 192.168.1.151 netmask 255.255.255.0 gateway 192.168.1.2 dns-nameservers 202.38.64.1
sudo /etc/init.d/networking restart
安装SSH服务
RedHat 6.4 的网络设置
编辑vi /etc/sysconfig/network-scripts/ifcfg-eth0 注入如下信息:
DEVICE=\BOOTPROTO=none IPV6INIT=\NM_CONTROLLED=\ONBOOT=\TYPE=\
UUID=\HWADDR=00:0C:29:B3:C1:2C #本机静态IP地址设置 IPADDR=192.168.150.10 PREFIX=24 #网关设置
GATEWAY=192.168.150.2 #DNS服务器试着 DNS1=192.168.199.1 DEFROUTE=yes
IPV4_FAILURE_FATAL=yes IPV6_AUTOCONF=yes IPV6_DEFROUTE=yes IPV6_PEERDNS=yes IPV6_PEERROUTES=yes IPV6_FAILURE_FATAL=no NAME=\
配置好之后,重启网络服务:
[root@localhost ~]# /etc/rc.d/init.d/network restart
Shutting down interface eth0: Device state: 3 (disconnected) [ OK ] Shutting down loopback interface: [ OK ] Bringing up loopback interface: [ OK ] Bringing up interface eth0: Active connection state: activating
Active connection path: /org/freedesktop/NetworkManager/ActiveConnection/3 state: activated
Connection activated [ OK ]
redhat开机进入命令行
修改里面的启动项 vi /etc/inittab id:5:initdefault:
把这一句里面的5改成3就可是以命令行登录了。 退出保存。 www.2cto.com 附各种模式:
# 0 - halt (Do NOT set initdefault to this) # 1 - Single user mode
# 2 - Multiuser, without NFS (The same as 3, if you do not have networking) # 3 - Full multiuser mode # 4 - unused # 5 - X11
# 6 - reboot (Do NOT set initdefault to this)
2015/6/16 22:53
配置/etc/security/limits.conf文件 *soft nofile 65536 * hard nofile 65536 * soft nproc 131072 * hard nproc 131072
设置磁盘访问I/O调度策略 # echo deadline > /sys/block/sda/queue/scheduler # echo deadline > /sys/block/fd0/queue/scheduler # echo deadline > /sys/block/hdc/queue/scheduler # echo deadline > /sys/block/sr0/queue/scheduler
设置预读块的值为16384 # /sbin/blockdev --getra /dev/sda # /sbin/blockdev --setra 16384 /dev/sda # /sbin/blockdev --setra 16384 /dev/sda1 # /sbin/blockdev --setra 16384 /dev/sda2 # /sbin/blockdev --setra 16384 /dev/sda3
gpssh -f /usr/local/greenplum-db/seg_hosts -e 'echo deadline > /sys/block/sr0/queue/scheduler' gpssh -f /usr/local/greenplum-db/seg_hosts -e 'echo deadline > /sys/block/sda/queue/scheduler'
gpssh -f /usr/local/greenplum-db/seg_hosts -e '/sbin/blockdev --setra 16384 /dev/sda ' gpssh -f /usr/local/greenplum-db/seg_hosts -e '/sbin/blockdev --setra 16384 /dev/sda1' gpssh -f /usr/local/greenplum-db/seg_hosts -e '/sbin/blockdev --setra 16384 /dev/sda2' gpssh -f /usr/local/greenplum-db/seg_hosts -e '/sbin/blockdev --setra 16384 /dev/sda3'
修改/etc/hosts,添加如下内容 192.168.136.101 mdw 192.l68.136.102 sdw1 192.168.136.103 sdw2
在Master节点上安装Greenplum软件 下载地址:
http://gopivotal.com/products/pivotal-greenplum-database
(F:\\study\\ibeifeng\\workspace\\gp\\greenplum-db-4.3.5.2-build-1-RHEL5-x86_64.zip ) 解压: 上传到Muster 节点之后解压
# unzip greenplum-db-4.2.2.4-build-1-CE-RHEL5-i386.zip
安装软件: Root用户用 bash 直接运行 bin 文件
# /bin/bash greenplum-db-4.2.2.4-build-1-CE-RHEL5-i386.bin
软连接的作用:当用到不同版本的数据库可以避免每次都修改不同的版本路径,在环境变量中设置软连接就可以找到最新版本的数据库。 安装结果:
greenplum_path.sh:Greenplum数据库环境变量文件(初始gp的运行环境,不同用户运行GP需要首先初始化,声明环境)
GPDB-LICENSE.txt:Greenplum许可协议 bin:管理工具、客户端程序及服务程序 demo:示例程序
docs:帮助文档(数据库操作Mirror建立,启停数据库都在这里)
etc:OpenSSL的配置示例(安全策略的配置示例) ext:一些GP工具使用的捆绑程序(主要是python) inlcude:C头文件 lib:库文件
sbin:支持的或者内部的脚本和程序 share:共享文件
在所有主机上初始化配置Greenplum
获取环境参数
# source /usr/local/greenplum-db/greenplum_path.sh 创建主机文件all_hosts(指定集群服务器) 文件内容: mdw sdw1 sdw2
运行gpseginstall工具
# gpseginstall -f all_hosts -u gpadmin -p gpadmin
完成所有节点间的信任关系、在seg节点安装客户端
安装Greenplum(3)
课程目标
在所有主机上初始化配置Greenplum
验证安装
(a)切换到gpamdin用户并获取环境变量 $ su – gpadmin
# source /usr/local/greenplum-db/greenplum_path.sh
(b)使用gpssh工具来测试无密码登录所有主机 $ gpssh -f host_list -e ls -l $GPHOME
c) 将\添加到.bashrc文件最后
创建存储区域
(a)创建Master数据存储区域 # mkdir -p /data/master (b)改变目录的所有权
# chown gpadmin /data/master
(c)创建一个包含所有segment主机的文件seg_hosts文件内容: sdw1
sdw2
(d)使用gpssh工具在所有segment主机上创建主数据和镜像数据目录 # gpssh -f seg_hosts -e 'mkdir -p /data/primary' # gpssh -f seg_hosts -e 'mkdir -p /data/mirror'
# gpssh -f seg_hosts -e 'chown gpadmin /data/primary' # gpssh -f seg_hosts -e 'chown gpadmin /data/mirror'
同步系统时间
(a)在Master主机上编辑/etc/ntp.conf来设置如下内容: server 127.127.1.0
(b)在Segment主机上编辑 server mdw
(c)在Master主机上,通过NTP守护进程同步系统时钟 # gpssh -f all_hosts -v -e 'ntpd'
验证操作系统设置
# gpcheck -f all_hosts -m mdw
初始化Greenplum数据库系统(所有操作都在Master节点完成)
创建Greenplum数据库配置文件
a) 以gpadmin用户登录 # su - gpadmin
b) 从模板中拷贝一份gpinitsystem_config文件 $cp$GPHOME/docs/cli_help/gpconfigs/gpinitsystem_config /home/gpadmin/gpinitsystem_config
$ chmod 775 gpinitsystem_config
c) 设置所有必须的参数 ARRAY_NAME=\(可修改或保持默认) SEG_PREFIX=gpseg(所有segment的前缀) PORT_BASE=40000(端口4w,不用修改) declare -a DATA_DIRECTORY=(/data/primary)(数据目录) MASTER_HOSTNAME=mdw(主机名) MASTER_DIRECTORY=/data/master MASTER_PORT=5432 TRUSTED SHELL=ssh CHECK_POINT_SEGMENT=8 ENCODING=UNICODE d) 设置可选参数(默认屏蔽有镜像需求时使用) MIRROR_PORT_BASE=50000 REPLICATION_PORT_BASE=41000 MIRROR_REPLICATION_PORT_BASE=51000 declare -a MIRROR_DATA_DIRECTORY=(/data/mirror)
初始化Greenplum数据库系统(在Master节点上操作)
初始化数据库
(a)运行初始化工具
[gpadmin@mdw ~]$ gpinitsystem -c gpinitsystem_config -h /usr/local/greenplum-db/seg_hosts
(b)设置环境变量
添加“export MASTER_DATA_DIRECTORY=/data/master/gpseg-1”到~/.bashrc文件尾,并同步到其他节点。
$ scp .bashrc sdw1:`pwd` $ scp .bashrc sdw2:`pwd`
启动和停止数据库 检查数据库进程
a) 启动数据库 $ gpstart
b) 关闭数据库 $ gpstop
检查数据库进程:
以上过程都比较顺利,但是执行psql 指令后,系统错误1605,此错误只在google上有一个说明,但是与安装场景无关,经过反复尝试,发现1605错误由于防火墙和selinux服务没有屏蔽造成的。(对于RedHat6.x系统来说,没有重启后的配置画面,缺省状态下SELINUX和IPTABLES都是开启状态。)
在登录系统后还需要进行如下操作:
关闭SELINUX–使用getenforce命令检查SELINUX状态,若结果不是”Disabled”,可使用setenforce 0命令临时关闭SELINUX。要永久关闭SELINUX,需修改/etc/selinux/config配置文件,修改配置为SELINUX=disabled。
关闭IPTABLES–使用service iptables status命令检查IPTABLES状态,若结果不是”Firewall is stopped”,可使用service iptables stop命令关闭IPTABLES。要永久关闭IPTABLES,使用chkconfig iptables off命令。
以上操作完成后执行 psql –list获得如下截图:
06.分布式数据库存储及查询处理
分布存储 典型星形结构
(事实表为维度表包围,在数据分析数据库仓库中出现的较多)
星型结构的gp分布
mastersegment 1sale part 1customer part 1productpart 1global catalogvendor part 1segment 2sale part 2customer part 2productpart 2vendor part 2segment 3sale part 3customer part 3productpart 3vendor part 3
雪花型,用以描述业务流程,非常灵活
表分布的策略-并行计算的基础
Hash分布
segmentsmasterinput rowshashassignS1CCCBABCCAACS2AAAS3? CREATE TABLE … DISTRIBUTED BY (column *,…+)
BB ? 同样数值的内容被分配到同一个Segment上,最好指定主键、字段数值唯一,
并且在实际应用中经常作为关联字段。
循环分布
segmentsmasterinput rowsassign nextS1CCABABCCAACS2CBAS3BA ? CREATE TABLE … DISTRIBUTED RANDOMLY
? 具有同样数值的行内容并不一定在同一个Segment上,数据均匀分布,但是
效率不会比HASH分布高。因为在关联的数据可能在另外一个segment上面,将带来额外的开销。
创建表不指定分布键
? Createtable tbl_test_01 ( id int , name varchar(24) ) distribute by (id) ;
? 如建表语句中没有指定分布键( distribute by (id) )系统会根据策略指定一
个分布键:
当表中含有主键时,主键是分布键
当表中没有主键时,第一个字段是分布键
查询规划与分发
1、根据Client发送过来的查询,制定查询计划,将计划分发到所有segment节点,每个segment根据自己保存的数据来执行查询计划,之后将结果返回给Master节点。
2、当制定delete、update等操作会直接发送给某一个segment节点。
SQL查询处理机制
segment上的运算会分为至少一个QE(Query Executer)
如果存在数据的重分布(Moving)的操作,Query会被分为多个slice(相同操作)的操作,每个slice至少存在一个QE进程,同样一部分数据的处理属于一个gang,整体的结果会按照gang来提交。所有slice都是并行的。
Slice2会等待slice1的处理结果,slice1处理结果会提交给所有的slice2,因为涉及到数据重分布。
并行查询计划
SELECT customer, amount FROM sales JOIN customer USING (cust_id) WHERE date=04302008;
首先进行全表扫描,发现需要将数据进行重分布(因为segment1/2的数据有一部分在另外一个segmengt上面),所以,slice1负责数据的重分布(redistribute motion),slice2等待slice1的操作结果,之后进行hash_Join ,join的结果向上汇总到 slice3,slice3将结果返回给client。
角色权限及客户端认证管理
什么是角色(role)
Role的组成
两部分组成:用户(User)和组(Group);用户可以直接登录,组不可以登录,组只用来管理用户,如果给组授login的权限,那么组也可以登录。主要看自己的规划。 跟OS的role没有关系 与OS的role无任何关系 User通过Master登录和认证 Master负责用户的验证
Role是定义在GPDB系统级别的
制定搜索路径就可以访问目录下的所有数据
初始化SUPERUSER ROLE:gpadmin (最大权限)
角色与权限安全的最佳实践
保护系统User gpadmin
为每个登录的User分配不同的Role 使用Group来管理权限
控制具备SUPERUSER属性的User数量
创建Role
创建用户User Role
使用CREATE ROLE创建一个User Role: 例如:=# CREATE ROLE dylan WITH LOGIN; ALTER ROLE属性
创建组Group Role
使用CREATE ROLE创建一个Group Role:
=# CREATE ROLE admin CREATEROLE CREATEDB;
添加或删除Member(User Role):
=# GRANT admin TO dylan;授权admin组权限给dylan =# REVOKE admin FROM dylan;收回dylan的admin组权限 赋予合适的权限给GROUP ROLE
=# GRANT ALL ON TABLE mytable TO admin; =# GRANT ALL ON SCHEMA myschema TO admin; =# GRANT ALL ON DATABASE mydb TO admin;
获取管理属性
=> SET ROLE admin; 才能获得admin的权限,才能创建角色或DB
角色权限及客户端认证管理(2)
管理对象权限
对象类型 Tables, Views, Sequences External Tables Databases TEMPORARY | TEMP Functions Procedural Languages Schemas 权限 SELECT INSERT UPDATE DELETE RULE ALL SELECT RULE ALL CONNECT CREATE ALL EXECUTE USAGE CREATE USAGE ALL 每个对象的权限必须被独立的授权
使用GRANT SQL命令给指定的Role授权一个对象 =#GRANT INSERT ON mytable TO dylan;
使用DROP OWNED和REASSIGN OWNED命令来取消Role的Owner权限 =# REASSIGN OWNED BY dylan TO tom; =# DROP OWNED BY dylan;
创建表 tbl_test_01 :
第一次用wenhao用户登录时,系统提示 LOCAL 策略异常,随后修改 /data/master/gpseg-1/pg_hba.conf,添加了LOCAL ALL ALL trust 策略就可以正常登录,如图:
使用DROP OWNED和REASSIGN OWNED命令来取消Role的Owner权限。 经过尝试,发现“drop owned”这个用户独立拥有的对象全部删除,无法恢复
模拟Row或者Column级别的权限控制
本身不支持Row和Column级别的访问控制,可以通过View方式模拟(符合条件的行)。 密码加密
GPDB4.2.1版本之前,密码默认使用MD5加密(hash散列算法,有破解的可能)。4.2.1版本开始,开始使用SHA-256加密(很难以破解)。
基于时间的登录认证
访问限制可以控制到具体时间点。
时间约束仅仅对于设置的Role有效。(比如,给一个组授权时间认证,其组内的用户不继承时间权限认证)
需要的权限
SUPERUSER或者CREATEROLE权限是必须的(具有create role的用户就可以给其他用户设置时间访问控制权限)。 如何添加时间约束
在CREATE ROLE或者ALTER ROLE的时候使用DENY关键字来实现: 1、某天或者某个时间访问限制;
2、一个有开始时间和结束时间的访问控制
指明日期和时间 英文表述 DAY 'Sunday' DAY 'Monday' DAY 'Tuesday' DAY 'Wednesday' DAY 'Thursday' DAY 'Friday' DAY 'Saturday' 数字表述 DAY 0 DAY 1 DAY 2 DAY 3 DAY 4 DAY 5 DAY 6 TIME ‘14:00’ (24小时格式的时间) TIME '02:00 PM' (12小时格式的时间)
TIME ‘02:00’ (24小时格式的时间) 等价于 TIME '02:00 AM'.
如何添加时间约束 指定时间间隔
通过BETWEEN和AND关键字连接两个日期/时间。 BETWEEN DAY 'Monday' AND DAY 'Tuesday' BETWEEN DAY 'Monday' TIME '00:00' AND DAY 'Monday' TIME '01:00' BETWEEN DAY 'Monday' TIME '12:00 AM' AND DAY 'Tuesday' TIME '02:00 AM' BETWEEN DAY 'Monday' TIME '00:00' AND DAY 'Tuesday' TIME '02:00' BETWEEN DAY 1 TIME '00:00' AND DAY 2 TIME '02:00' 注意:日期间隔不能跨Saturday(周六)(比如上周五到本周日,需要拆成Monday and Saturday 和 Saturday and Sunday) Incorrect: DENY BETWEEN DAY 'Saturday' AND DAY 'Sunday‘
删除时间约束
使用ALTER ROLE命令接DROP DENY FOR关键字 原则:有交集即移出
ALTER ROLE dylan DROP DENY FOR DAY ‘Monday’;
配置客户端认证
允许连接到GPDB
pg_hba.conf 文件
Master和Segment节点上都存在; 包含每行一条记录的平面文件,格式: Remote(远程认证)
host database role CIDR-address authentication-method
host:主机
database:数据库(多个数据库逗号分隔) role:认证用户
CIDR-address:IP范围
authentication-method:信任方式(trust完全信任) Unix-domain(Unix的套接字)
local database role authentication-method
local:服务器 database:数据库 role:角色
authentication-method:信任方式
默认Master主机pg_hba.conf文件 允许SUPERUSER的本地连接;(允许pgadmin在Master本地连接) 不允许远程连接(不允许远程连接Master数据库)
客户端接口和程序(1)
配置客户端认证
允许连接到GPDB
编辑pg_hba.conf 文件 记录被顺序读取; 1、编辑文件 # allow the gpadmin user local access to all databases # using ident authentication
# LOCAL 本地UNiX套接字, HOST是远程访问 local all gpadmin ident sameuser host all gpadmin 127.0.0.1/32 ident host all gpadmin ::1/128 ident host all dba 192.168.0.0/32 md5 host all all 192.168.0.0/32 ldap ldapserver=usldap1 ldapport=1389 ldapprefix=\ ldapsuffix=\
2、保存并关闭文件
3、重新加载pg_hba.conf使修改生效
$gpstop –help查看帮助
$ gpstop –u (重新装载postgresql.conf 和 pg_hba.conf 文件) 限制并发连接
? 配置Server参数max_connections来实现(max_connections本地化参数,需要
到每个服务节点上进行配置,修改之后要重启数据库) ? Segment的值不能小于Master,建议5~10倍
? 设置依赖的参数max_prepared_transactions,至少要和Master上的
max_connections值一样大(最好保持一样) ? 修改最大连接数
1、停止数据库(如果数据库不停,直接修改max_connections,重启数据库会发生异常) $ gpstop
2、分别在Master和Segment上编辑postgresql.conf文件 修改max_connections和max_prepared_transactions参数 3、重启数据库 $ gpstart
转移临时文件或事务文件的位置 使用gpfilespace移动事务文件
1、确保文件空间存在,且与存储其他用户数据的文件空间不同 2、停止GPDB
3、将GPDB启动为限制模式
$ gpfilespace –movetransfilespace test_fs 注意:事务文件位置在Instance中配合共享内存使用,在创建、打开、删除事务文件时用到。
定义数据库对象(3)
正在阅读:
GreenPlum安装笔记 - 图文03-31
地质罗盘仪使用方法08-30
参观刘胡兰纪念馆心得体会10-09
《计算机组成原理》教学大纲05-27
How to create a harmonious dormitory life09-26
中层招聘的几个关键点10-19
控规基础资料汇编2014031801-26
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- GreenPlum
- 安装
- 图文
- 笔记