zoukankan      html  css  js  c++  java
  • Greenplum部署实践

    1 介绍

    Greenplum是Pivotal公司开源的一款大规模并行处理(MPP)数据库,其架构是专门针对大型分析性数据仓库和商业智能工作负载设计。本质上讲,它是多个 PostgreSQL 实例一起充当一个数据库管理系统。

    2 Linux配置(每一台主机)

    所有节点进行配置linux的部署环境,本文使用系统是centos6.5。对于节点数的选择,一般来说,业务量不是很大的情况下,选择3~5个计算节点较为合适,而且,每个计算节点不在同一台物理机中,同时master和standby不在同一台物理机中。尽量将每个节点分散出去,避免因为宿主机宕机导致整个集群不可用。greenplum集群可以同时允许一个计算节点和一个master节点宕机还能正常工作(前提是配置了mirror机制和standby备用master)。

    2.1 配置hosts

    修改系统hosts文件,vim /etc/hosts,实际中可以参考如下配置,实际的IP按照申请虚拟机的IP来设置。注意,之前安装时候,OpenStack创建的机器登录IP和网卡IP不一致,需要配置成网卡IP。主机名要与实际中的一致,此处的master、datan和standby只作为举例使用。

    10.10.10.10 master  
    10.10.10.11 data1
    10.10.10.12 data2
    10.10.10.13 data3
    10.10.10.14 data4
    10.10.10.15 standby
    

    2.2 节点间互信配置

    为了简化配置,建议将各个服务器root密码配置成相同的。一般的配置方法如下:

    ssh-keygen -t rsa #使用root用户运行,四个回车OK
    ssh-copy-id ip1 #会提示输入密码,ip1是需要ssh免密码登录的机器IP
    ssh ip1 #验证是否成功
    
    

    注意,配置集群的互信是双向的,因此需要在每一台机器上运行上述命令。
    如果机器众多的话,也可以用下面脚本的方法来配置。

    • 安装expect
      yum install expect -y

    • 生成秘钥
      ssh-keygen

    运行下面的脚本

    #!/bin/bash
    SERVERS="master data1 data2 data3 data4 standby"
    PASSWORD=gpadmin #配置每一台的主机root密码为相同的
    auto_ssh_copy_id() {
    expect -c "set timeout -1;
    spawn ssh-copy-id $1;
    expect {
    *(yes/no)* {send -- yes
    ;exp_continue;}
    *assword:* {send -- $2
    ;exp_continue;}
    eof {exit 0;}
    }";
    }
    ssh_copy_id_to_all() {
    for SERVER in $SERVERS
    do
    auto_ssh_copy_id $SERVER $PASSWORD
    done
    }
    ssh_copy_id_to_all
    
    

    注意,该脚本也需要在每一台主机上运行一次。

    2.3 添加用户

    为每一台主机增加gpadmin用户和相关组,并设置用户密码,下面的mypassword根据实际情况进行改变。

    groupadd -g 530 gpadmin
    useradd -g 530 -u 530 -m -d /home/gpadmin -s /bin/bash gpadmin
    chown -R gpadmin.gpadmin /home/gpadmin
    echo "mypassword" | passwd --stdin gpadmin
    

    2.4 关闭SELinux, iptables

    为了避免不必要的安装问题,建议关闭selinux和iptables。
    查看当前selinux配置,如果不是disable则需要进行关闭。

    [xxxx@xxxx ~]$ sestatus
    SELinux status:                 disabled
    

    查看iptables的状态

    /etc/init.d/iptables status
    

    如果为打开的,建议直接关闭,并关闭开机启动

    service iptables stop
    chkconfig iptables off 
    

    2.5 配置内核参数

    系统内核参数在sysctl.conf中,可以使用vim 编辑器打开/etc/sysctl.conf

    kernel.shmmax=34359738368
    kernel.shmall=8388608
    kernel.shmmni = 4096
    kernel.sem = 250 512000 100 2048
    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_tw_recycle = 1
    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.overcommit_ratio=95
    

    配置完后使用sysctl -p使配置生效,如果出现了问题,请查看参数是否存在。

    2.6 配置进程文件资源限制

    可以使用如下命令来配置参数

    vim /etc/security/limit.conf
    
    * soft nofile 65536
    * hard nofile 65536
    * soft nproc 131072
    * hard nproc 131072
    
    

    注意:对于RedHat6.x系统,还需要将/etc/security/limits.d/90-nproc.conf文件中 的1024修改为131072。

    2.7 XFS分区

    官方建议使用xfs分区,在没有特殊需求的情况下ext3、ext4也是没有问题的。

    2.8 设置linux调度器规则

    默认为cfq,更改为deadline,由于数据库安装的盘设备名是sdb,因此只需要将设备名更改为sdb即可。
    查看调度器规则

    cat /sys/block/sdb/queue/scheduler  
    

    更改

    echo deadline > /sys/block/sdb/queue/scheduler
    

    2.9 禁用 Transparent Huge Pages (THP)

    查看

    cat /sys/kernel/mm/transparent_hugepage/defrag 
    [always] madvise never
    

    更改为never

    echo never > /sys/kernel/mm/transparent_hugepage/defrag
    

    2.10 修改磁盘预计参数 「预读扇区数」

    df -T查看有哪些磁盘
    将相关的数据盘进行调整:

    blockdev --setra 65536 /dev/sda
    blockdev --setra 65536 /dev/sdb
    
    

    2.11 NTP时间校验

    由于集群的同步依赖于时间,因此集群的各台主机的时间要一致。

    ntpdate cn.pool.ntp.org
    
    

    3 Greenplum安装(master安装)

    3.1 下载

    可以直接从官网下载 https://network.pivotal.io/products/pivotal-gpdb#/releases/1624 ,版本可以根据需要选择,如果没有账号需要注册一个账号。

    3.2 安装

    master上进行安装,直接运行二进制文件,二进制的文件是上一步从官网下载的。

    ./greenplum-db-4.3.8.0-build-1-RHEL5-x86_64.bin
    

    安装的过程是交互,需要用户补充相关的安装信息,大致过程可以按照以下来进行。

    ********************************************************************************
    Do you accept the Pivotal Database license agreement? [yes|no]
    ********************************************************************************
    
    yes
    
    ********************************************************************************
    Provide the installation path for Greenplum Database or press ENTER to
    accept the default installation path: /usr/local/greenplum-db-4.3.8.0
    ********************************************************************************
    
    [ENTER]
    
    ********************************************************************************
    Install Greenplum Database into </usr/local/greenplum-db-4.3.8.0>? [yes|no]
    ********************************************************************************
    
    yes
    
    ********************************************************************************
    /usr/local/greenplum-db-4.3.8.0 does not exist.
    Create /usr/local/greenplum-db-4.3.8.0 ? [yes|no]
    (Selecting no will exit the installer)
    ********************************************************************************
    
    yes
    
    Extracting product to /usr/local/greenplum-db-4.3.8.0
    
    ********************************************************************************
    Installation complete.
    Greenplum Database is installed in /usr/local/greenplum-db-4.3.8.0
    
    Pivotal Greenplum documentation is available
    for download at http://docs.gopivotal.com/gpdb
    ********************************************************************************
    

    3.3 更改文件夹权限

    将greenplum的安装路径给gpadmin访问权限

    chown -R gpadmin.gpadmin /usr/local/
    chown -R gpadmin.gpadmin /usr/local/greenplum-db
    

    3.4 配置集群的hosts

    这里分为两个文件,是一个是集群所有的hosts,一个是计算节点(data)的hosts。这两个文件不存在,需要用户手动创建出来,创建的方法如下:

    su - gpadmin
    mkdir -p /usr/local/greenplum-db/conf
    

    创建集群host_file

    注意,host_file 和seg_file里面需要填上主机名,不要填以下名称。

    vim /usr/local/greenplum-db/conf/host_file
    
    master
    data1
    data2
    data3
    data4
    standby
    

    创建计算节点seg_hosts

    vim /usr/local/greenplum-db/conf/seg_hosts
    
    data1
    data2
    data3
    data4
    
    

    3.5 安装集群

    这一步在其他节点上安装greenplum
    root用户

    source /usr/local/greenplum-db/greenplum_path.sh	
    gpseginstall -f /usr/local/greenplum-db/conf/host_file -u gpadmin -p gpadmin
    
    

    3.6 配置gpadmin环境变量

    vim /home/gpadmin/.bash_profile

    source /usr/local/greenplum-db/greenplum_path.sh
    export MASTER_DATA_DIRECTORY=/data1/gpdata/gpmaster/gpseg-1
    export GPPORT=5432
    export PGDATABASE=postgres
    
    

    3.7 创建数据库的数据目录

    这一步创建数据库的数据库文件存放目录,这里的gpdatap1,gpdatap2,gpdatam1,gpdatam2是一个主机上的两个主节点和两个镜像节点的数据库文件目录。这个目录的结构根据实际情况进行调整,但是建议不要在一台主机上安装过多的pg实例,否则数据同步时候,会大量占用系统网络资源,导致节点down掉。

    本文挂载的1T数据盘在/data1下。

    gpssh -f /usr/local/greenplum-db/conf/host_file -e -v "mkdir -p /data1/gpdata/{gpmaster,gpdatap1,gpdatap2,gpdatam1,gpdatam2}"
    

    3.8 初始化greenplum配置文件

    配置文件模板在/usr/local/greenplum-db/docs/cli_help/gpconfigs里面,此模板中的mirror segment被注释掉了,在实际使用的时候需要反注释,然后进行配置,建议拷贝一份出来重命名。

    cd /usr/local/greenplum-db/docs/cli_help/gpconfigs
    cp gpinitsystem_config initgp_config
    

    修改initgp_config配置文件。

    ARRAY_NAME="EMC Greenplum DW"
    MACHINE_LIST_FILE=/usr/local/greenplum-db/conf/seg_hosts
    SEG_PREFIX=gpseg
    PORT_BASE=40000
    declare -a DATA_DIRECTORY=(/data1/gpdata/gpdatap1 /data1/gpdata/gpdatap2)
    MASTER_HOSTNAME=master
    MASTER_DIRECTORY=/data1/gpdata/gpmaster
    MASTER_PORT=5432
    TRUSTED_SHELL=ssh
    CHECK_POINT_SEGMENTS=8
    ENCODING=UNICODE
    MIRROR_PORT_BASE=50000
    REPLICATION_PORT_BASE=41000
    MIRROR_REPLICATION_PORT_BASE=51000
    declare -a MIRROR_DATA_DIRECTORY=(/data1/gpdata/gpdatam1 /data1/gpdata/gpdatam2)
    

    3.9 初始化集群

    初始化命令 -S 表示使用Spread Mirror 分配 mirror节点,防止一个节点挂掉,另外一个节点集中成为瓶颈!-s 表示 standby master

    gpinitsystem -c initgp_config -S -s standby  
    

    等待初始化成功后,执行gpstate来查看各节点状态。

    4 集群配置

    4.1 修改master的pg_hba.conf和postgresql.conf

    pg_hba.conf是控制数据库访问的文件

    vim $MASTER_DATA_DIRECTORY/pg_hba.conf
    host all gpadmin 0.0.0.0/0 md5
    

    执行gpstop -u使配置生效

    postgresql.conf是集群的配置文件,可以根据实际情况进行配置。但是主要有两个必须配置:

    • 监听地址
    • 连接数

    至此。集群安装成功。

    4.2 常用gp命令

    操作 命令
    启动 gpstart -a
    停止 gpstop -a
    快速停止 gpstop -M fast
    配置重载,但是只适用于部分参数 gpstop -u
    查看mirror的状态 gpstate -e
    查看standby master的状态 gpstate -f
    查看整个GP群集的状态 gpstate -s
    查看GP的版本 gpstate -i
    帮助文档,可以查看gpstat更多用法 gpstate --help

    5 总结

    本文介绍了安装过程中的一些步骤,但是不作为标准,每一个参数的合理值需要根据实际情况进行调整。不同的节点,不同的机器配置,不同的网络,不同的业务,参数都不尽相同。这个就偏离了本文的目的,参数调优是在实际过程中需要不断调整和实践的,每一个数据库每一个业务场景都有其最佳实践,需要自己去摸索。

  • 相关阅读:
    lr如何获取当前系统时间戳
    linux创建用户、设置密码、修改用户、删除用户
    Linux下安装load generator步骤及问题解决
    怎么将手动设定的IP变成固定的自动IP.
    Redis与Memcached的区别
    memcached 下载安装
    linux上传下载文件rz,sz
    oracle错误码
    sharepoint 2013 附件控件FileUpload怎样检验是否为图片的方法
    10gocm-&gt;session3-&gt;数据备份与恢复
  • 原文地址:https://www.cnblogs.com/easonbook/p/10864440.html
Copyright © 2011-2022 走看看