[linux-012] 用docker搭建greenplum数据库

1.用docker安装greenplum

2.参考文档

https://my.oschina.net/u/876354/blog/1606419
《Greenplum企业应用实战_何勇,陈晓峰著》

3.步骤

3.1 拉取centos镜像
docker pull centos:latest


3.2 创建4个节点

docker run --name gpcentos1 -it centos /bin/bash
docker run --name gpcentos2 -it centos /bin/bash
docker run --name gpcentos3 -it centos /bin/bash
docker run --name gpcentos4 -it centos /bin/bash


3.3 在每个节点都执行如下操做
yum install -y net-tools which openssh-clients openssh-server less zip unzip iproute.x86_64

ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key
ssh-keygen -t ecdsa -f /etc/ssh/ssh_host_ecdsa_key
ssh-keygen -t ed25519 -f /etc/ssh/ssh_host_ed25519_key
/usr/sbin/sshd

3.4 在每个节点配置/etc/hosts
注意,ip和hostname跟示例里不一样,要仔细区分


节点1   172.17.0.3  266a5746aeee
节点2 172.17.0.4  43dd8f0b86e8
节点2 172.17.0.5  5f1e077de725
节点2 172.17.0.6  bb0778aae767

每个节点的/etc/hosts文件都修改为
172.17.0.3    266a5746aeee
172.17.0.4    43dd8f0b86e8
172.17.0.5    5f1e077de725
172.17.0.6    bb0778aae767

172.17.0.3 dw-greenplum-1 mdw
172.17.0.4 dw-greenplum-2 sdw1
172.17.0.5 dw-greenplum-3 sdw2
172.17.0.6 dw-greenplum-4 sdw3


分别修改4个节点的/etc/sysconfig/network,保持主机名一致,比如master节点是
cat /etc/sysconfig/network

NETWORKING=yes
HOSTNAME=mdw

其它以此类推


3.5在每个节点创建用户和用户组
groupadd -g 530 gpadmin
useradd -g 530 -u 530 -m -d /home/gpadmin -s /bin/bash gpadmin
chown -R gpadmin:gpadmin /home/gpadmin
passwd gpadmin

注意,passwd统一设置为 xxxxDDDD


3.6修改每个节点打开文件限制
vi /etc/security/limits.conf

# End of file
* soft nofile 65536
* hard nofile 65536
* soft nproc 131072
* hard nproc 131072

3.7 关闭所有节点防火墙和selinux
centos 7命令改了,参考 https://www.cnblogs.com/shizhijie/p/8005727.html和http://www.piis.cn/zhishi/web1453.asp


systemctl stop firewalld #停止firewall
systemctl stop iptables #停止iptables

[root@mdw 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=disabled
# SELINUXTYPE= can take one of these two values:
#     targeted - Targeted processes are protected,
#     mls - Multi Level Security protection.
SELINUXTYPE=targeted 


4. 注册账号
https://account.run.pivotal.io/z/uaa/sign-up


5.下载安装包
https://network.pivotal.io/products/pivotal-gpdb


为了跟参考文档一致,选择greenplum-db-4.3.33.1-rhel5-x86_64.zip


6.主节点安装
把安装包cp到第一个节点
 docker cp greenplum-db-4.3.33.1-rhel5-x86_64.zip 266a5746aeee:/home/gpadmin

su gpadmin

unzip greenplum-db-4.3.14.1-rhel5-x86_64.zip

chmod +x greenplum-db-4.3.14.1-rhel5-x86_64.bin

./greenplum-db-4.3.14.1-rhel5-x86_64.bin

安装期间需要修改默认安装目录,输入/home/gpadmin/greenplum-db-4.3.14.1


配置批量操做,创建两个文件/home/gpadmin/config下的hostlist和seg_hosts
cat hostlist

mdw
sdw1
sdw2
sdw3

cat seg_hosts
sdw1
sdw2
sdw3

配置环境变量
source /home/gpadmin/greenplum-db/greenplum_path.sh 

然后执行打通所有机器
gpssh-exkeys -f /home/gpadmin/config/hostlist 


这样,就可以对所有机器做批量操做了,比如
gpssh -f /home/gpadmin/config/hostlist
登陆到所有机器
=>pwd
显示所有当前目录

打包master节点上的安装包
tar -cf gp.4.3.tar greenplum-db-4.3.14.1/
使用gpscp命令将这个文件复制到每一台机器上

gpscp -f /home/gpadmin/conf/seg_hosts gp.4.3.tar =:/home/gpadmin/
批量解压,并建立软链接

[gpadmin@mdw conf]$ gpssh -f hostlist
=> cd /opt/greenplum
[sdw1]
[sdw2]
[mdw]
=> tar -xf gp.4.3.tar
[sdw1]
[sdw2]
[mdw]
=> ln -s ./greenplum-db-4.3.8.1 greenplum-db
[sdw1]
[sdw2]
[mdw]
=>exit


7.初始化安装数据库
批量创建数据目录

[gpadmin@mdw conf]$ gpssh -f hostlist
=> mkdir gpdata
[ mdw]
[sdw2]
[sdw1]
=> cd gpdata
[ mdw]
[sdw2]
[sdw1]
=> mkdir gpmaster gpdatap1 gpdatap2 gpdatap3 gpdatam1 gpdatam2 gpdatam3
[ mdw]
[sdw2]
[sdw1]
=> exit

8.在每个节点上配置.bash_profile环境变量

[gpadmin@mdw ~]$ cd
[gpadmin@mdw ~]$ cat .bash_profile 
# .bash_profile

# Get the aliases and functions
if [ -f ~/.bashrc ]; then
    . ~/.bashrc
fi

# User specific environment and startup programs

PATH=$PATH:$HOME/bin

export PATH

source /opt/gpadmin/greenplum-db/greenplum_path.sh
export MASTER_DATA_DIRECTORY=/home/gpadmin/gpdata/gpmaster/gpseg-1
export PGPORT=2345
export PGDATABASE=testDB

[gpadmin@mdw ~]$ source .bash_profile

9.初始化数据库

gpinitsystem -c /home/gpadmin/config/gpinitsystem_config -s sdw2


10.启动gp

在master节点执行

psql -d postgres

创建测试数据库
createdb testDB -E utf-8

postgre的基本命令
https://blog.csdn.net/Linga_X/article/details/51906152


切换到testDB上进行操作
\c testDB  

select version();

退出
\q


启动qp
gpstart -a

关闭gp
gpstop

可以用一下试试。


11. 架构

11.1 每个节点是一个postgre,每个节点相互独立,不共享任何资源,包括数据。每个节点只使用自己的数据和硬件。每个节点的数据都是全部数据的一部分。


11.2 segment host是数据节点,master host是控制节点。


12. 实战

数据仓库,历史拉链表


 

上一篇:Python学习012


下一篇:从0开始的Python学习012数据结构&对象与类