文档为markdown格式
关于greenplum的组件介绍、工作原理网上很多,下面是我感觉部署比较方便的方法
环境:
centos7.4 16核32G
ip | hostname | 角色 |
---|---|---|
192.168.0.44 | k8s-master | master、segment |
192.168.0.43 | k8s-node1 | segment、standby |
192.168.0.40 | k8s-node2 | segment |
一、服务器相关配置参数更改
1、添加hosts
cat /etc/hosts
192.168.0.44 k8s-master
192.168.0.43 k8s-node1
192.168.0.40 k8s-node2
2、配置tcp参数
修改/etc/sysctl.conf
[root@k8s-master ~]# cat >> /etc/sysctl.conf <<EOF
net.ipv4.ip_forward = 0
net.ipv4.conf.default.accept_source_route = 0
kernel.core_uses_pid = 1
kernel.msgmnb = 65536
kernel.msgmax = 65536
kernel.shmmax = 68719476736
kernel.shmall = 4294967296
net.ipv4.tcp_keepalive_time = 1200
net.ipv4.ip_local_port_range = 10240 65535
vm.swappiness=0
net.ipv4.tcp_sack=1
net.ipv4.tcp_timestamps=1
net.ipv4.tcp_window_scaling=1
net.ipv4.tcp_congestion_control=cubic
net.ipv4.tcp_syncookies=1
net.ipv4.tcp_tw_recycle=0
net.ipv4.tcp_max_syn_backlog=65535
net.core.somaxconn=65535
net.core.rmem_max=16777216
net.core.wmem_max=16777216
vm.overcommit_memory=1
fs.file-max = 2097152
fs.nr_open = 2097152
net.core.netdev_max_backlog = 16384
net.ipv4.tcp_mem = 786432 2097152 3145728
net.core.optmem_max=4194304
net.ipv4.tcp_max_tw_buckets = 1048576
net.ipv4.tcp_fin_timeout = 30
net.ipv4.conf.default.rp_filter = 0
net.ipv4.conf.all.rp_filter = 0
net.ipv4.conf.eth0.rp_filter = 0
net.core.rmem_default = 16777216
net.core.wmem_default = 16777216
net.ipv4.tcp_rmem = 4096 87380 16777216
net.ipv4.tcp_wmem = 4096 65536 16777216
net.ipv4.conf.all.arp_filter = 1
net.ipv4.conf.default.arp_filter = 1
vm.max_map_count = 1048575
kernel.shmmni = 4096
kernel.sem= 250 512000 100 2048
kernel.sysrq = 1
kernel.msgmni = 2048
kernel.pid_max=4096000
EOF
注意:kernel.shmmax = 5000000000 单位b(bit),值的大小为实际内存的50%。
kernel.shmmax参数调整系统内存的50%
执行:sysctl -p
3、添加limits.conf
[root@k8s-master ~]# cat >> /etc/security/limits.conf <<EOF
* soft nofile 65536
* hard nofile 65536
* soft nproc 131072
* hard nproc 131072
EOF
4、修改I/O调度算法
[root@k8s-master ~]# echo deadline > /sys/block/vdb/queue/scheduler
[root@k8s-master ~]# grubby --update-kernel=ALL --args="transparent_hugepage=never"
5、设置gpadmin用户,密码
[root@k8s-master ~]# useradd gpadmin
[root@k8s-master ~]# usermod -L gpadmin
#提权
[root@k8s-master ~]# visudo
gpadmin ALL=(ALL) ALL
gpadmin ALL=(ALL) NOPASSWD:ALL
#创建密码
[root@k8s-master ~]# passwd gpadmin
注:注意设置密码为了后面gpssh-exkeys -f list 使用
二、rpm安装:
1、下载&安装:
wget http://123.57.75.212:80/greenplum-db-5.10.2-rhel7-x86_64.rpm
安装
[root@k8s-master ~]# rpm -ivh greenplum-db-5.10.2-rhel7-x86_64.rpm
Preparing... ################################# [100%]
Updating / installing...
1:greenplum-db-5.10.2-1 ################################# [100%]
2、安装目录相关文件授权
[root@k8s-master ~]# chown -R gpadmin.gpadmin /usr/local/greenplum-db*
[root@k8s-master ~]# chown gpadmin.gpadmin /usr/local #需要在每个节点执行授权
以下开始,进入gpadmin用户下操作:
#hostlist自定义的,一般为hostname
[gpadmin@k8s-master ~]$ cat list
k8s-master
k8s-node1
k8s-node2
3、添加环境变量
[gpadmin@k8s-master ~]$ cat /usr/local/greenplum-db/greenplum_path.sh >>~/.bashrc
[gpadmin@k8s-master ~]$ cat >> ~/.bashrc <<EOF
MASTER_DATA_DIRECTORY=/opt/data/master/gpseg-1
export MASTER_DATA_DIRECTORY
EOF
[gpadmin@k8s-master ~]$ source ~/.bashrc
4、配置免密登陆:
[gpadmin@k8s-master ~]$ gpssh-exkeys -f list
5、检查环境(可以忽略):
[gpadmin@k8s-master ~]$ gpcheck -f list
6、在segment节点安装greenplum-db-5.10.2-rhel7-x86_64:
[gpadmin@k8s-master ~]$ gpseginstall -f list
7、创建数据目录:
[gpadmin@k8s-master ~]$ gpssh -f list -e " sudo chown gpadmin.gpadmin /opt"
[gpadmin@k8s-master ~]$ gpssh -f list -e " mkdir -p /opt/data/{primary,mirror}"
创建master目录
[gpadmin@k8s-master ~]$ mkdir -p /opt/data/master
8、创建初始化config文件
[gpadmin@k8s-master ~]$ cat > gpinitsystem_config <<EOF
###需要的参数,目录可以根据需要更改##
ARRAY_NAME="Greenplum Data Platform"
SEG_PREFIX=gpseg
PORT_BASE=40000
declare -a DATA_DIRECTORY=(/opt/data/primary /opt/data/primary /opt/data/primary)
MASTER_HOSTNAME=k8s-master #修改为主节点主机名
MASTER_DIRECTORY=/opt/data/master
MASTER_PORT=5432
TRUSTED_SHELL=ssh
CHECK_POINT_SEGMENTS=8
ENCODING=UNICODE
declare -a MIRROR_DATA_DIRECTORY=(/opt/data/mirror /opt/data/mirror /opt/data/mirror)
EOF
9、初始化数据库:
[gpadmin@k8s-master ~]$ gpinitsystem -a -c gpinitsystem_config -h list
初始化完成!
简单实用-添加允许连接的网段
示例:host 库名 用户名 ip/24 trust
注意:根据服务器的具体情况进行配置修改
cat /opt/data/master/gpseg-1/pg_hba.conf
host all gpadmin 192.168.0.43/32 trust
host all all 0.0.0.0/0 trust
local all gpadmin ident
host all gpadmin 127.0.0.1/28 trust
host all gpadmin 192.168.0.44/32 trust
重新加载配置文件
gpstop -u
#启动服务
gpstart -a
#停止服务
gpstop -a
三、登录测试:
[gpadmin@k8s-master ~]$ psql -d postgres
psql (8.3.23)
Type "help" for help.
postgres=# \l
List of databases
Name | Owner | Encoding | Access privileges
-----------+---------+----------+---------------------
postgres | gpadmin | UTF8 |
template0 | gpadmin | UTF8 | =c/gpadmin
: gpadmin=CTc/gpadmin
template1 | gpadmin | UTF8 | =c/gpadmin
: gpadmin=CTc/gpadmin
(3 rows)
postgres=#
postgres=# select * from gp_segment_configuration;
dbid | content | role | preferred_role | mode | status | port | hostname | address | replication_port
------+---------+------+----------------+------+--------+-------+---------------------+---------------------+------------------
1 | -1 | p | p | s | u | 5432 | k8s-master | k8s-master |
2 | 0 | p | p | s | u | 40000 | k8s-master | k8s-master |
5 | 3 | p | p | s | u | 40000 | bj-ksy-g1-mongos-02 | bj-ksy-g1-mongos-02 |
8 | 6 | p | p | s | u | 40000 | bj-ksy-g1-mongos-03 | bj-ksy-g1-mongos-03 |
3 | 1 | p | p | s | u | 40001 | k8s-master | k8s-master |
6 | 4 | p | p | s | u | 40001 | bj-ksy-g1-mongos-02 | bj-ksy-g1-mongos-02 |
9 | 7 | p | p | s | u | 40001 | bj-ksy-g1-mongos-03 | bj-ksy-g1-mongos-03 |
4 | 2 | p | p | s | u | 40002 | k8s-master | k8s-master |
7 | 5 | p | p | s | u | 40002 | bj-ksy-g1-mongos-02 | bj-ksy-g1-mongos-02 |
10 | 8 | p | p | s | u | 40002 | bj-ksy-g1-mongos-03 | bj-ksy-g1-mongos-03 |
四、授权
根据不同的库创建不同的用户名密码
xnreport 8ql6,report
crm 8ql6,crm
xncc 8ql6,xncc
示例(根据具体情况操作):
#给database授权
create user superuser xnreport password '8ql6,report';
grant all privileges on databases xn_report to xnreport;
#给table授权
grant all privileges on table table_name to xnreport;
五、添加mirror
1、在所有需要添加mirror的主机,创建存放mirror的数据目录(如果已经创建,忽略此操作)
$ mkdir /opt/data/mirror
以下再master操作
2、生成配置文件
$ gpaddmirrors -o addmirror
添加mirror
gpaddmirrors -a -i addmirror -v
六、添加standby
1、在standy节点上创建master目录
2、在master上执行
gpinitstandby -a -s k8s-node1
postgres=# select * from pg_stat_replication ;
procpid | usesysid | usename | application_name | client_addr | client_port | backend_start | state | sent_location | write_location | flush_location | replay_location | sync_priority | syn
c_state
---------+----------+---------+------------------+-------------+-------------+-------------------------------+-----------+---------------+----------------+----------------+-----------------+---------------+----
--------
6931 | 10 | gpadmin | walreceiver | 192.168.0.43 | 48800 | 2018-12-24 11:51:05.376815+08 | streaming | 0/14000C18 | 0/14000C18 | 0/14000C18 | 0/14000C18 | 1 | syn
c
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;