Greenplum集群安装
程序员文章站
2024-03-22 10:24:40
...
文章目录
主机与软件
IP | 主机名 | 角色 |
---|---|---|
192.168.0.106 | host106 | Master |
192.168.0.107 | host107 | Segment |
192.168.0.108 | host108 | Segment |
192.168.0.109 | host109 | Segment |
CentOS 7.5.1804
greenplum-db-5.18.0-rhel7-x86_64.zip
greenplum-cc-web-4.6.1-LINUX-x86_64.zip
环境准备
以下内容需要在所有服务器都执行
禁SELinux和防火墙
$ SELinuxstatus: disabled
或者
$ vi /etc/selinux/config
SELINUX=disabled
$ /sbin/chkconfig --list iptables
$ /sbin/chkconfig iptables off
$ systemctl status firewalld
$ systemctl stop firewalld.service
$ systemctl disable firewalld.service
修改Host
vi /etc/hosts
192.168.0.106 host106
192.168.0.107 host107
192.168.0.108 host108
192.168.0.109 host109
修改内核参数
$ vi /etc/sysctl.conf
kernel.shmmax = 10737418240
kernel.shmmni = 4096
kernel.shmall = 2621440
kernel.sem = 500 2048000 200 40960
kernel.sysrq = 1
kernel.core_uses_pid = 1
kernel.msgmnb = 65536
kernel.msgmax = 65536
kernel.msgmni = 2048
net.ipv4.tcp_syncookies = 1
net.ipv4.conf.default.accept_source_route = 0
net.ipv4.tcp_max_syn_backlog = 4096
net.ipv4.conf.all.arp_filter = 1
net.ipv4.ip_local_port_range = 10000 65535
net.core.netdev_max_backlog = 10000
net.core.rmem_max = 2097152
net.core.wmem_max = 2097152
vm.overcommit_memory = 2
vm.swappiness = 10
vm.zone_reclaim_mode = 0
vm.dirty_expire_centisecs = 500
vm.dirty_writeback_centisecs = 100
vm.dirty_background_ratio = 0
vm.dirty_ratio = 0
vm.dirty_background_bytes = 1610612736
vm.dirty_bytes = 4294967296
# kernel.shmmax
# 配置了最大的内存segment的大小 ------>这个设置的比SGA_MAX_SIZE大比较好。
# 16G 内存,16*1024*1024*1024*90% = 15461882265,
# kernel.shmall
# 全部允许使用的共享内存大小,
# 15461882265/4k(getconf PAGESIZE可得到) = 3774873。
$ sysctl -p
$ vi /etc/security/limits.conf
* soft nofile 524288
* hard nofile 524288
* soft nproc 131072
* hard nproc 131072
加载XFS文件系统
mount -o rw,noatime,inode64,allocsize=16m /dev/mapper/centos-home /home
# 格式化XFS
fdisk /dev/mapper/centos-home
mkfs.xfs /dev/mapper/centos-home
安装依赖
yum install -y net-tools which openssh-clients openssh-server less zip unzip iproute.x86_64
修改读块大小
# 参看
/sbin/blockdev --getra devname
# 修改
/usr/sbin/blockdev --setra 16384 /dev/sda
设置io的调度算法
# 每个磁盘
echo deadline > /sys/block/devname/queue/scheduler
# 或
grubby --update-kernel=ALL --args="elevator=deadline"
安装ntp服务(可选,该手册未执行这步)
$ yum install ntp -y
$ vi /etc/ntp.conf
serer 127.127.1.0
安装
只需在Master节点进行就可
创建用户
groupadd -g 530 gpadmin
useradd -g 530 -u 530 -m -d /home/gpadmin -s /bin/bash gpadmin
chown -R gpadmin:gpadmin /home/gpadmin
echo "gpadmin" | passwd --stdin gpadmin
ssh免密登录到其他主机
ssh-****** -t rsa -f /etc/ssh/ssh_host_rsa_key
ssh-****** -t ecdsa -f /etc/ssh/ssh_host_ecdsa_key
ssh-****** -t ed25519 -f /etc/ssh/ssh_host_ed25519_key
/usr/sbin/sshd
systemctl start sshd.service
安装Greenplum
root用户
# 解压
$ tar -xzf greenplum-db-5.18.0-rhel7-x86_64.zip
$ ./greenplum-db-5.11.3-rhel7-x86_64.bin
# 设置安装路径
/home/gpadmin/greenplum
注:如果运行安装报tar错误,可以vi greenplum-db-5.11.3-rhel7-x86_64.bin
进行不影响原意的修改,然后保存。
$ cd /home/gpadmin/greenplum
$ source ./greenplum_path.sh
$ vi all_hosts
host106
host107
host108
host109
$ vi seg_hosts
host107
host108
host109
$ gpssh-exkeys -f all_hosts
$ gpseginstall -f all_hosts -u gpadmin -p gpadmin
$ gpssh -f all_hosts
mkdir -p /home/gpadmin/greenplum/gpdata/gpmaster
mkdir -p /home/gpadmin/greenplum/gpdata/gpdatap1
mkdir -p /home/gpadmin/greenplum/gpdata/gpdatap2
mkdir -p /home/gpadmin/greenplum/gpdata/gpdatam1
mkdir -p /home/gpadmin/greenplum/gpdata/gpdatam2
# 未执行下面一步
$ gpssh -f all_hosts -v -e 'ntpd'
$ gpcheck -f all_hosts -m localhost
chown -R gpadmin:gpadmin /home/gpadmin
gpadmin用户
# 环境变量(su - gpadmin)
$ vi /home/gpadmin/.bashrc
source /home/gpadmin/greenplum/greenplum_path.sh
export MASTER_DATA_DIRECTORY=/home/gpadmin/greenplum/gpdata/gpmaster/gpseg-1
export GPPORT=5432
$ source /home/gpadmin/.bashrc
$ cp docs/cli_help/gpconfigs/gpinitsystem_config gpinitsystem_config
$ vi gpinitsystem_config
declare -a DATA_DIRECTORY=(/home/gpadmin/greenplum/gpdata/gpdatap1 /home/gpadmin/greenplum/gpdata/gpdatap2)
MASTER_DIRECTORY=/home/gpadmin/greenplum/gpdata/gpmaster
declare -a MIRROR_DATA_DIRECTORY=(/home/gpadmin/greenplum/gpdata/gpdatam1 /home/gpadmin/greenplum/gpdata/gpdatam2)
# 初始化
$ gpinitsystem -c gpinitsystem_config -h seg_hosts
# 启动关闭
gpstart -a
gpstop -a
gpstop -M fast
# 连接数据库
$ psql -d postgres
select * from pg_database;
操作
创建用户
$ psql -d postgres
create user ysr superuser password '123456';
配置远程登录
# $ find / -name pg_hba.conf
$ su - gpadmin
$ vi ~/greenplum/gpdata/gpmaster/gpseg-1/pg_hba.conf
host bigdataDB lzsp 192.168.0.1/24 md5
# 更新配置
$ gpstop -u
# 格式如下:
local database user auth-method [auth-options]
host database user CIDR-address auth-method [auth-options]
hostssl database user CIDR-address auth-method [auth-options]
hostnossl database user CIDR-address auth-method [auth-options]
host database user IP-address IP-mask auth-method [auth-options]
hostssl database user IP-address IP-mask auth-method [auth-options]
hostnossl database user IP-address IP-mask auth-method [auth-options]
# [local] - 使用unix-domain socket连接
# [host] - 使用TCP/IP连接,host包含SSL和non-SSL连接
# [hostssl] - 使用TCP/IP连接, 只接受SSL加密连接
# [hostnossl] - 使用TCP/IP连接, 接受non-ssl连接
# [database] - 数据库名称,all表示全部数据库,多个数据库用逗号分隔
# [user] - 数据库用户,all表示全部数据库,多个数据用逗号分隔,+表示role或group的成员,@表示来源于外部文件
# [CIDR-address] - CIDR地址,如:172.20.143.89/32 ,"/"前面是ip地址,后面是子网掩码 (仅用于 host, hostssl, and hostnossl)
# [IP-address]/[IP-mask] - 跟CIDR-address是一样,只是2种表示方式 (仅用于 host, hostssl, and hostnossl)
# [auth-method] - 包含选项有: trust/reject/md5/password/gss/sspi/krb5/ident/ldap/radius/cert/pam
# 使用较多的: trust(不需要任何验证)
# reject(拒绝任何请求)
# md5(需要提供MD5加密的密码)
# password(非加密的密码)
# ident(OS用户本地连接)
安装监控
$ su - gpadmin
$ vi ~/greenplum/gpdata/gpmaster/gpseg-1/postgresql.conf
# 取消注释
gp_enable_gpperfmon=on
gpperfmon_port=8888
gp_external_enable_exec=on
# 增加
gpperfmon_log_alert_level=warning
# 安装gpperfmon数据库
$ gpperfmon_install --enable --password gpmon --port 5432
# 重启
$ gpstop -r
$ ps -ef | grep gpmmon
# 检查gp监控是否监测到greenplum集群中的每台主机
$ psql -d 'gpperfmon' -c 'select * from system_now;'
$ ./gpccinstall-4.6.1
# 修改安装目录
# /home/gpadmin/greenplum-web
$ vi ~/.bashrc
source /home/gpadmin/greenplum-web/greenplum-cc-web-4.6.1/gpcc_path.sh
$ source ~/.bashrc
$ gpcc start
# http://IP:28080
# 进行访问 用户名/密码 gpmon/gpmon
新增节点
Segment
- 在新增的每台节点上执行【环境准备】的内容;
- 在新增的每台节点上执行【创建用户】;
- 在其中一台进行安装,然后scp到其他节点;
- 在新增的每台节点上执行【创建目录】,并chown目录;
- 在新增的每台节点上,配置环境变量;
- 在已有的主节点,进行免密操作(针对所有节点,修改all_hosts文件);
gpssh-exkeys -f all_hosts_file
- 初始化新扩展(在master上操作)
vi hosts_expand
host10
host11
gpexpand -f hosts_expand
Would you like to initiate a new System Expansion Yy|Nn (default=N):
> y
How many new primary segments per host do you want to add? (default=0):
> 4
Enter new primary data directory 1:
> /app/data/gp1
Enter new primary data directory 2:
> /app/data/gp2
Enter new primary data directory 3:
> /app/data/gp3
Enter new primary data directory 4:
> /app/data/gp4
Enter new mirror data directory 1:
> /app/data/gpm1
Enter new mirror data directory 2:
> /app/data/gpm2
Enter new mirror data directory 3:
> /app/data/gpm3
Enter new mirror data directory 4:
> /app/data/gpm4
# 会生成gpexpand_inputfile_20171208_005718,需要修改后才能通过配置文件扩展数据库
# trjdb是对应的数据库名
gpexpand -i gpexpand_inputfile_20171208_005718 -D trjdb
# 假如上一步失败了,怎么办?
# 启动限制模式,回滚。
gpstart -R
gpexpand --rollback -D trjdb
gpstart -a
# 然后找问题继续上一步,直到成功。
# 可以采用脚本进行表重分布
gpexpand -d 60:00:00
Standby
# 如果在GP已有集群中的机器中选择一台来搭建standby,
# 了解master节点用了哪些filespace.
postgres=# select a.dbid,a.content,a.role,a.port,a.hostname,b.fsname,c.fselocation from gp_segment_configuration a, pg_filespace b,pg_filespace_entry c where a.dbid=c.fsedbid and b.oid=c.fsefsoid order by content;
# 了解master的即可,可以看到除了pg_system,还有一个filespace叫ssd1。
# 进入初始化standby的步骤
# 根据第三步查到的信息,规划standby master filespace数据目录;
$ mkdir /disk1/digoal/gpdata
$ mkdir /disk1/digoal/new_p
# 如果在不同的主机创建standby master,则建议使用同样的端口和目录结构。
# 如下:
$ gpinitstandby -F pg_system:/data01/gpdata/master_pgdata/gpseg-1 -s digoal_host199092.zmf
...
Do you want to continue with standby master initialization? Yy|Nn (default=N):
> y
...
digoal=# select * from gp_segment_configuration where content='-1';
# 如果在同一台主机创建standby master,则需要使用不同的端口和目录结构。
# 如下:
# 指定不同的filespace路径,不同的监听端口。
$ gpinitstandby -F pg_system:/disk1/digoal/gpdata/gpseg-2,ssd1:/disk1/digoal/new_p/gp-2 -P 1922 -s digoal_host.sqa.zmf
# 启动standby
$ gpinitstandby -n
# 查看standby延迟,查看pg_stat_replication 视图即可。
digoal=# select pg_switch_xlog();
digoal=# select * from pg_stat_replication ;
digoal=# select * from pg_stat_replication ;
优化
$ su - gpadmin
$ vi /home/gpadmin/greenplum/gpdata/gpmaster/gpseg-1/postgresql.conf
max_connections = 200
shared_buffers = 1600MB
max_prepared_transactions = 300
work_mem = 640MB
# log
log_filename = 'pg-%Y%m%d.log'
log_truncate_on_rotation = on
log_min_messages = panic
log_statement = 'ddl'
上一篇: Java守护线程 博客分类: 多线程