PostgreSQL 快速安装
参考文档:https://ubuntu.com/server/docs/databases-postgresql
# 安装
apt install -y postgresql
# 监听所有地址
sed -i 's/#listen_addresses = \'localhost\'/listen_addresses = \'*\'/g' /etc/postgresql/12/main/postgresql.conf
# 修改密码
sudo -u postgres psql -c "ALTER USER postgres WITH PASSWORD 'postgres';"
# 允许外部访问
echo 'host all all 0.0.0.0/0 md5' >> /etc/postgresql/12/main/pg_hba.conf
# 重启数据库
systemctl restart postgresql
GreenPlum 简介
概述
参考文档:GreenPlum 架构介绍
组成
GreenPlum 由三部分组成:
- Master
- 访问系统的入口
- 数据库监听进程
- 处理所有用户连接
- 建立查询计划
- 协调工作处理过程
- 管理工具
- 系统目录表和元数据
- 不存放任何用户数据
- Segment
- 每段存放一部分用户数据
- 一个系统可以有多段
- 用户不能直接存取访问
- 所有对段的访问都经过 Master
- 数据库监听进程监听来自 Master 的连接
- Interconnect
- 数据库之间的连接层
- 进程间协调和管理
- 基于千兆以太网架构
- 属于系统内部死亡配置
- 支持两种 TCP 和 UDP 协议
总结
直接把 Master 当成一个 PostgreSQL 数据库来使用。
GreenPlum 集群搭建
注意事项
- 官网文档的安装教程并不是太 Quick Start,实际上那些一大堆调优参数并不是必须选项,安装并没有什么影响,顶多会有一个
Master open file limit is 1024 should be >= 65535
的警告。sudo cat >> /etc/security/limits.conf << EOF * softnofile 65535 * hardnofile 65535 * softnproc 65535 * hardnproc 65535 EOF reboot ulimit -n
- 官网文档看似很多命令和配置文件,实际上大部分都只是为了更方便操作多个节点,只有初始化时才使用到了配置文件。
- 官网文档中
mdw
表示 Master 主机、smdw
表示 Standby 主机、sdw
表示 Segment 主机。 - 加载了
/usr/local/greenplum-db/greenplum_path.sh
的LD_LIBRARY_PATH
后yum
或者apt
将无法使用。
集群规划
节点 | 角色 |
---|---|
node201 | Master |
node202 | Standby |
node203 | Segment |
node204 | Segment |
虚拟机
# IP
sed -i 's/192.168.137.7/192.168.137.201/g' /etc/sysconfig/network-scripts/ifcfg-ens33
systemctl restart network
# hostname
hostnamectl set-hostname node1
# 换源
sed -e 's|^mirrorlist=|#mirrorlist=|g' \
-e 's|^#baseurl=http://mirror.centos.org/centos|baseurl=https://mirrors.ustc.edu.cn/centos|g' \
-i.bak \
/etc/yum.repos.d/CentOS-Base.repo
sudo yum makecache
# 卸载 MariaDB
rpm -e --nodeps $(rpm -qa | grep mariadb)
# 禁用 SELINUX
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
# 禁用防火墙
systemctl stop firewalld && systemctl disable firewalld
# 禁用交换
vim /etc/fstab
# 注释 swap 相关行
# 重启
reboot
# 本地 DNS
cat >> /etc/hosts << EOF
192.168.137.201 node201
192.168.137.202 node202
192.168.137.203 node203
192.168.137.204 node204
EOF
创建gpadmin
用户
# 创建用户
useradd -r -m gpadmin
# 更改密码
echo 'gpadmin:gpadmin' | chpasswd
# 加入 sudo 组
usermod -a -G wheel gpadmin
# 切换用户
su -l gpadmin
# SSH 免密登陆
ssh-keygen -t rsa -q -N "" -f ~/.ssh/id_rsa
ssh-copy-id node201
ssh-copy-id node202
ssh-copy-id node203
ssh-copy-id node204
安装
.rpm
包下载地址:https://github.com/greenplum-db/gpdb/releases/tag/6.17.3
# 安装 gp
sudo yum install -y ./open-source-greenplum-db-6.17.3-rhel7-x86_64.rpm
sudo chown -R gpadmin:gpadmin /usr/local/greenplum*
# 环境变量
cat >> ~/.bashrc << EOF
source /usr/local/greenplum-db/greenplum_path.sh
export MASTER_DATA_DIRECTORY=/home/gpadmin/data/master/gpseg-1
EOF
source ~/.bashrc
确认安装
cat > all_host << EOF node201 node202 node203 node204 EOF gpssh-exkeys -f all_host gpssh -f all_host -e 'ls -l /usr/local/greenplum-db'
创建数据目录
# 创建 master 数据目录
mkdir -p ~/data/master
# 创建 standby 数据目录
gpssh -h node202 -e 'mkdir -p /home/gpadmin/data/master'
# 创建 segment 数据目录
gpssh -h node203 -e 'mkdir -p /home/gpadmin/data/primary && mkdir -p /home/gpadmin/data/mirror'
gpssh -h node204 -e 'mkdir -p /home/gpadmin/data/primary && mkdir -p /home/gpadmin/data/mirror'
批量创建
cat > ~/seg_host << EOF node203 node204 EOF gpssh -f ~/seg_host -e 'mkdir -p /home/gpadmin/data/primary && mkdir -p /home/gpadmin/data/mirror'
初始化
# 配置文件
mkdir -p ~/gpconfigs
cat > ~/gpconfigs/gpinitsystem_seg_host << EOF
node203
node204
EOF
cp $GPHOME/docs/cli_help/gpconfigs/gpinitsystem_config ~/gpconfigs/gpinitsystem_config
vim ~/gpconfigs/gpinitsystem_config
# declare -a DATA_DIRECTORY=(/home/gpadmin/data/primary /home/gpadmin/data/primary)
# MASTER_HOSTNAME=node201
# MASTER_DIRECTORY=/home/gpadmin/data/master
# 初始化
gpinitsystem -c gpconfigs/gpinitsystem_config -h gpconfigs/gpinitsystem_seg_host
# 初始化 standby
gpinitstandby node201
# 查看状态
gpstate
安装后配置
# 允许外部访问
cat >> $MASTER_DATA_DIRECTORY/pg_hba.conf << EOF
host all all 0.0.0.0/0 md5
EOF
# 重启
gpstop -u
# 修改密码
psql -d postgres -c "ALTER ROLE gpadmin WITH PASSWORD 'gpadmin';"