哈喽!大家好,我是【IT邦德】,江湖人称jeames007,10余年DBA及大数据工作经验
一位上进心十足的【大数据领域博主】!
中国DBA联盟(ACDU)成员,目前服务于工业互联网
擅长主流Oracle、MySQL、PG、高斯及Greenplum运维开发,备份恢复,安装迁移,性能优化、故障应急处理等。
✨ 如果有对【数据库】感兴趣的【小可爱】,欢迎关注【IT邦德】
❤️❤️❤️感谢各位大可爱小可爱!❤️❤️❤️
开放源代码和 PostgreSQL 12 的衍生:VMware Greenplum 7 建立在开源代码的基础上,利用了现代 PostgreSQL 版本的功能、可靠性和灵活性。与前一版本相比,Greenplum 7 植根于 PostgreSQL 12,并整合了近5年以来 PostgreSQL 的发布版本。
VMware Greenplum 7 支持多种索引类型,包括 B 树索引、哈希索引、位图索引、块范围索引、文本索引、地理空间索引和 AI 向量索引。该功能可优化数据检索和查询性能。Greenplum 查询优化器自 2009 年以来不断改进,在第 6 版中取得了良好的性能记录,在第 7 版中得到了扩展,提供了全面的索引选择支持。
利用 PXF 增强数据联合:VMware Greenplum 7 中的平台扩展框架 (PXF) 经过改进,实现了卓越的数据联合。企业现在可以通过 JDBC 查询亚马逊简单存储服务 (S3) 对象存储、Hadoop 分布式文件系统 (HDFS) 和其他关系数据库中的数据集。它利用 PostgreSQL 的外来数据封装器 API 来并行访问远程数据源,提供抽象数据模型来管理远程数据的安全性和统计数据,以优化查询。
VMware Greenplum 7 扩展了文本搜索功能,同时支持词法搜索和人工智能驱动的语义搜索,以提供更准确的搜索结果。词法搜索支持基于关键字的传统文本搜索,对于语义搜索,则由人工智能和向量 embeddings 提供支持。
Mware Greenplum 7 通过集成 PostGIS 版本 3 升级了地理空间分析功能。这一改进大大提高了地理空间查询的速度和特征丰富度。
该功能是对 VMware Greenplum 中已有的基于角色的安全模型以及表级和列级权限的补充。
1)用于增强数据建模的生成列: VMware Greenplum 7 中引入了生成列,从而改进了数据抽象和建模,解决了安全特征保留数据屏蔽等用例问题。
2)改进的 DBA 查询功能: Greenplum 7 对 DBA 查询功能进行了大量改进,
包括 UPSERT 支持、带有事务的用户定义函数,以及对ALTER TABLE的改进以减少数据重写。
3)增强的半结构化和非结构化数据分析: Greenplum 7 除支持 XML 文档外,还支持半结构化数据处理,如增强的 JSON 和数组数据处理功能。全文搜索和基于文本的词法搜索索引可实现高效的文本存储、索引和搜索。此外,向量嵌入可实现非结构化数据的浓缩和高效表示,允许跨多种语言对匹配的文档、图像和视频进行相似性搜索,包括多语言搜索。
4)PostgreSQL 扩展生态系统: 更全面的PostgreSQL 扩展支持,如高级密码检查、模糊字符串匹配、Hyperloglog、用于网络数据的 Ip4r、用于媒体数据的 Isn、纳秒时间戳、稀疏向量、用于透视的 Tablefunc、用于唯一标识符的 UUID 以及用于人工智能向量嵌入的 pg_vector,已全部支持。
5)先进的资源管理: Greenplum 7 引入了一系列高级资源管理功能。这些功能可确保在高负载情况下的稳健性能。
6)VMware vSphere 部署模型: Greenplum 7 可以参考推荐的架构部署在裸机或公共云环境中。也可利用Greenplum 7版本中提供的自动部署模式无缝集成到vSphere私有云环境中。
7)多数据中心灾难恢复解决方案: 作为多数据中心灾难恢复解决方案的一部分,数据通过事务日志归档进行复制,从而实现比 Greenplum 以前版本更高效、更低的恢复点目标(RPO)和恢复时间目标(RTO)灾难恢复解决方案。
8)新的扩展 PostgresML:提供新的用户定义函数,使用户可以在 VMware Greenplum 中使用数以万计的开源人工智能/机器学习预训练模型。
VMware Greenplum 为企业带来的众多优势可分为四个关键领域:灵活性、速度和规模、生产效率以及弹性。
基础架构的多功能性:VMware Greenplum 在部署方面具有显著的灵活性,可兼容各种基础架构类型。它针对裸机、公有云和基于 vSphere 的私有云环境进行了优化。这意味着企业可以选择最适合其需求的基础架构,而无需牺牲性能或效率。
专用优化:Greenplum 提供专用的参考架构,确保无缝集成到不同的基础架构设置中,降低部署复杂性。
数据库内分析:
Greenplum 的数据库内分析功能大大加快了透视时间。这一功能意味着数据分析师和科学家可以直接在数据库中原地进行复杂的分析,而无需进行耗时的数据传输。
PB 级数据处理:
Greenplum 可处理海量数据,甚至是 PB 级数据。这确保了企业能够高效地分析和管理庞大的数据集,从其最大的数据存储库中获取洞察力。
数据多样性:
Greenplum 擅长在单一平台上管理各种类型的数据。它能无缝处理结构化、半结构化和非结构化数据,包括文本、图像、视频、向量、地理空间信息、图形和语音数据。这种多功能性使企业能够整合数据源,无论数据存储在哪里,都能更轻松地对其进行分析。
数据可访问性:
Greenplum 能够处理和分析来自不同来源的各种格式的数据,从而减少了预处理和整合来自多个来源的数据所需的时间和精力,提高了工作效率。
成熟的基础:
Greenplum 建立在开源数据库 PostgreSQL 的基础之上,这是一个久经考验的成熟数据库平台。这提高了关键任务应用程序和数据工作负载的可靠性和稳定性。
增强安全性:
Greenplum 集成了增强的安全功能,可帮助企业保护数据安全。这包括身份验证机制、加密选项和访问控制。
企业支持:
Greenplum 提供强大的企业级支持,使企业能够获得管理和优化数据平台所需的协助。
灾难恢复:
通过远程灾难恢复等功能,Greenplum 提供了数据备份和恢复机制,最大限度地减少了灾难发生时的停机时间和数据丢失。
1.Greenplum 的 GitHub
https://github.com/greenplum-db/gpdb/releases
2.Pivotal官网
https://network.pivotal.io/products/vmware-greenplum
IP | 主机名 | 端口 | 备注 |
---|---|---|---|
172.18.12.10 | mdw1 | 5432 | Master host |
172.18.12.11 | mdw2 | 5432 | Standby host |
172.18.12.12 | sdw1 | 主:6000-6003 镜像:7000-7003 |
segment host1,配置4个主实例+4个镜像实例 |
172.18.12.13 | sdw2 | 主:6000-6003 镜像:7000-7003 |
segment host2,配置4个主实例+4个镜像实例 |
172.18.12.14 | sdw3 | 主:6000-6003 镜像:7000-7003 |
segment host3,配置4个主实例+4个镜像实例 |
172.18.12.15 | sdw4 | 主:6000-6003 镜像:7000-7003 |
segment host4,配置4个主实例+4个镜像实例 |
[root@mdw1 /]# cat /etc/redhat-release
CentOS Linux release 8.2.2004 (Core)
[root@mdw1 /]# df -Th
Filesystem Type Size Used Avail Use% Mounted on
overlay overlay 447G 22G 407G 5% /
tmpfs tmpfs 64M 0 64M 0% /dev
tmpfs tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
shm tmpfs 64M 0 64M 0% /dev/shm
/dev/mapper/centos-root00 ext4 447G 22G 407G 5% /etc/hosts
tmpfs tmpfs 1.9G 8.3M 1.9G 1% /run
[root@mdw1 /]# free -m
total used free shared buff/cache available
Mem: 3770 1063 1375 67 1332 2357
Swap: 4995 0 4995
[root@mdw1 /]# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
7: eth0@if8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default
link/ether 02:42:ac:12:0c:0a brd ff:ff:ff:ff:ff:ff link-netnsid 0
inet 172.18.12.10/16 brd 172.18.255.255 scope global eth0
valid_lft forever preferred_lft forever
注意:为所有节点创建gpadmin用户
groupadd -g 1530 gpadmin
useradd -g 1530 -u 1530 -m -d /home/gpadmin -s /bin/bash gpadmin
chown -R gpadmin:gpadmin /home/gpadmin
echo “gpadmin:jeames” | chpasswd
1. /etc/hosts设置
1个master+1个standby master,4个segment的集群示例,OS均为CentOS Linux release 8.2.2004 (Core)
注意:所有节点设置一致
cat >> /etc/hosts <<"EOF"
172.18.12.10 mdw1
172.18.12.11 mdw2
172.18.12.12 sdw1
172.18.12.13 sdw2
172.18.12.14 sdw3
172.18.12.15 sdw4
EOF
2. all_hosts设置
为所有节点创建一个all_hosts文件,包含所有节点主机名
su - gpadmin
mkdir -p /home/gpadmin/conf/
cat > /home/gpadmin/conf/all_hosts <<"EOF"
mdw1
mdw2
sdw1
sdw2
sdw3
sdw4
EOF
3.seg_hosts设置
为所有节点创建一个seg_hosts文件 ,包含所有的Segment Host的主机名
su - gpadmin
cat > /home/gpadmin/conf/seg_hosts <<"EOF"
sdw1
sdw2
sdw3
sdw4
EOF
集群ssh免密,只在master节点 172.18.12.10 操作
su - gpadmin
ssh-keygen -t rsa
ssh-copy-id gpadmin@mdw1
ssh-copy-id gpadmin@mdw2
ssh-copy-id gpadmin@sdw1
ssh-copy-id gpadmin@sdw2
ssh-copy-id gpadmin@sdw3
ssh-copy-id gpadmin@sdw4
# 每个节点机器 root 用户操作关闭防火墙
yum install -y firewalld
systemctl status firewalld
systemctl stop firewalld
systemctl disable firewalld
##每个节点机器 root 用户操作,禁用selinux
cat /etc/selinux/config
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - No SELinux policy is loaded.
SELINUX=enforcing
# SELINUXTYPE= can take one of three values:
# targeted - Targeted processes are protected,
# minimum - Modification of targeted policy. Only selected processes are protected.
# mls - Multi Level Security protection.
SELINUXTYPE=targeted
sed -i "s#^SELINUX=.*#SELINUX=disabled#g" /etc/selinux/config
注意:修改后记得重启
cat /etc/sysctl.conf
# kernel.shmall = _PHYS_PAGES / 2 # See Shared Memory Pages
kernel.shmall = 197951838
# kernel.shmmax = kernel.shmall * PAGE_SIZE
kernel.shmmax = 810810728448
kernel.shmmni = 4096
vm.overcommit_memory = 2 # See Segment Host Memory
vm.overcommit_ratio = 95 # See Segment Host Memory
cat > /etc/sysctl.conf <<"EOF"
fs.file-max = 6815744
kernel.sem = 250 32000 100 128
kernel.shmmni = 4096
kernel.shmall = 1073741824
kernel.shmmax = 4398046511104
kernel.panic_on_oops = 1
fs.aio-max-nr = 1048576
net.ipv4.ip_local_port_range = 9000 65500
EOF
##变量生效
sysctl -p
注意:所有节点均做操作,配置本地yum
1.创建挂载路径
mkdir -p /mnt/cdrom
2.挂载系统镜像光盘到指定目录
#因为光盘的格式通常是iso9660,意思是/dev/sr0挂载在/mnt/cdrom目录上
mount -t iso9660 /dev/sr0 /mnt/cdrom
3.修改yum源配置文件
##编辑rhel8-local.repo文件,加入以下内容
[root@mdw1 ~]# cd /etc/yum.repos.d
[root@mdw1 yum.repos.d]# vi rhel8-local.repo
[localREPO]
name=localhost8
baseurl=file:///mnt/cdrom/BaseOS
enable=1
gpgcheck=0
[localREPO_APP]
name=localhost8_app
baseurl=file:///mnt/cdrom/AppStream
enable=1
gpgcheck=0
4.配置好后重建本地缓存
yum clean all
yum makecache
yum repolist
##安装依赖包
yum install -y apr apr-util bash bzip2 curl iproute krb5-devel libcgroup-tools libcurl libevent libuuid libuv libxml2 \
libyaml libzstd openldap openssh openssh-client openssh-server openssl openssl-libs \
perl python3 python3-psycopg2 python3-psutil python3-pyyaml python39 \
readline rsync sed tar which zip zlib
在所有节点操作,root用户操作
1.默认安装到/usr/local下
rpm -ivh open-source-greenplum-db-7.0.0-el8-x86_64.rpm
2.赋权,修改该路径gpadmin操作权限
chown -R gpadmin:gpadmin /usr/local/greenplum
##创建目录,用作集群数据的存储目录,所有节点操作
mkdir -p /greenplum/data/
chown -R gpadmin:gpadmin /greenplum
-- 所有节点
echo "/usr/local/greenplum-db/greenplum_path.sh" >> /home/gpadmin/.bashrc
-- master配置
echo "export MASTER_DATA_DIRECTORY=/greenplum/data/master/gpseg-1" >> /home/gpadmin/.bashrc
echo "export PGDATABASE=postgres" >> /home/gpadmin/.bashrc
# 使配置文件生效
source /home/gpadmin/.bashrc
在master节点操作:创建一个初始化副本 initgp_config,修改参数:
-- 在所有节点操作
(在master节点创建master目录,在segment节点分布创建primary目录和mirror目录
或3个目录创建都可以
su - gpadmin
-- master节点,Standby节点
mkdir -p /greenplum/data/master
-- segment节点
mkdir -p /greenplum/data/primary
mkdir -p /greenplum/data/mirror
-- master节点配置,有几个segment节点就设置几个DATA_DIRECTORY
cat > /home/gpadmin/conf/initgp_config <<"EOF"
declare -a DATA_DIRECTORY=(/greenplum/data/primary /greenplum/data/primary)
declare -a MIRROR_DATA_DIRECTORY=(/greenplum/data/mirror /greenplum/data/mirror /greenplum/data/mirror /greenplum/data/mirror)
ARRAY_NAME="rptgp"
SEG_PREFIX=gpseg
PORT_BASE=6000
MIRROR_PORT_BASE=7000
MASTER_PORT=5432
MASTER_HOSTNAME=mdw1
MASTER_DIRECTORY=/greenplum/data/master
DATABASE_NAME=rptgpdb
MACHINE_LIST_FILE=/home/gpadmin/conf/seg_hosts
EOF
--在master节点操作,执行初始化命令
su - gpadmin
gpinitsystem -c /home/gpadmin/conf/initgp_config -e=jeames -s mdw2 -P 5432 -S /greenplum/data/master/gpseg-1 -m 200 -b 256MB