• MPP


     

    一、集群介绍

    共3台主机,ip 为193.168.0.93   193.168.0.94  193.168.0.95

    集群对应master和segment如下,193.168.0.93为master节点。193.168.0.94  193.168.0.95为segment节点,每个segment节点配置两个primary segment和两个mirror segment(也可以为master做一个备份,目前没有做)

    架构图入下

     


    二、服务器修改(all host)

    2.1配置hosts

      vi /etc/hosts

     

    192.168.0.93 gpdb-1 mdw
    
    192.168.0.94 gpdb-2 sdw1
    
    192.168.0.95 gpdb-3 sdw2

     

    2.2创建用户及用户组

    2.2.1创建用户组,组id为530
    groupadd -g 530 gpadmin
    2.2.2创建用户,赋予gpadmin用户组,并自定用户根目录
    useradd -g 530 -u 530 -d /home/gpadmin -s /bin/bash gpadmi
    2.2.3授权/home/gpadmin
    chown -R  gpadmin:gpadmin /home/gpadmin
    2.2.4修改密码
    passwd gpadmin
    2.3关闭防火墙

    2.3.1关闭默认防火墙

            systemctl stop firewalld

    2.3.2关闭iptables

            systemctl stop iptables
    2.4修改network文件
      vi /etc/sysconfig/network
    
    
    NETWORKING=yes
    
    HOSTNAME=对应的主机名称
    2.5修改系统文件

    2.5.1修改内核配置

      vi /etc/sysctl.conf

    kernel.shmmax = 5000000000
    
    kernel.shmmni = 4096
    
    kernel.shmall = 4000000000
    
    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.ip_forward = 0
    
    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 = 1025 65535
    
    net.core.netdev_max_backlog = 10000
    
    net.core.rmem_max = 2097152
    
    net.core.wmem_max = 2097152
    
    vm.overcommit_memory = 2

    执行命令 sysctl -p  使修改数值生效

    2.5.2修改限制配置

      vi /etc/security/limits.conf

    * soft nofile 65536
    
    * hard nofile 65536
    
    * soft nproc 131072
    
    * hard nproc 131072

    2.5.3禁用SELINUX

      vi /etc/selinux/config

    SELINUX=disabled

    三、安装依赖及创建安装目录(all host)

    3.1安装依赖

    yum install -y epel-release
    
    yum install -y apr-devel bison bzip2-devel cmake3 flex gcc gcc-c++ krb5-devel libcurl-devel libevent-devel libkadm5 libyaml-devel libxml2-devel perl-ExtUtils-Embed python-devel python-paramiko python-pip python-psutil python-setuptools readline-devel xerces-c-devel zlib-devel
    
    pip install lockfile conan
    
    yum install openssl-devel

    3.2创建安装目录

    mkdir /opt/greenplum
    
    chown -R gpadmin:gpadmin /opt/greenplum
    
    chown -R gpadmin:gpadmin /usr/local/yiliao/

    ----------------------------------------以下用gpadmin用户------------------------------------------------------------

    四、安装gpdb

    4.1上传安装包并解压(Master)

    unzip gpdb-5.6.0.zip
    
    cd gpdb-5.6.0

    4.2编译gpdb(Master)

    4.2.1安装
    ./configure --with-perl --with-python --with-libxml --with-gssapi --disable-orca --prefix=/opt/greenplum/db
    
    make
    
    make install
    4.2.2引入脚本
    source /opt/greenplum/db/greenplum_path.sh

    4.3编辑节点服务器文件(Master)

                     (目录: /home/gpadmin/gpconfig/)

    mkdir gpconfig
    
    
    vi all_hosts
    
        mdw
        sdw1
        sdw2
    
    
    vi  seg_hosts
    
        sdw1
        sdw2

    4.4打通节点(Master)

    gpssh-exkeys -f all_hosts
    
    gpssh-exkeys -f seg_hosts

    4.5打包分发安装文件(Master)

    4.5.1打包分发
    tar -cf gp5.6.tar db/
    
    gpscp -f /home/gpadmin/gpconfig/seg_hosts  gp5.6.tar =:/opt/greenplum
    4.5.2解压分发文件(目录结构要和主节点一直)并创建数据目录
    gpssh -f all_hosts(连接all节点,批量)
    
    cd /opt/greenplum/
    
    tar -xf gp5.6.tar
    
    mkdir -p /usr/local/yiliao/gpdata/gpmaster
    
    mkdir -p /usr/local/yiliao/gpdata/gpp1
    
    mkdir -p /usr/local/yiliao/gpdata/gpp2
    
    mkdir -p /usr/local/yiliao/gpdata/gpm1
    
    mkdir -p /usr/local/yiliao/gpdata/gpm2
    4.5.3 编辑.bash_profile

    vi ~/.bash_profile

    source /opt/greenplum/db/greenplum_path.sh
    
    export MASTER_DATA_DIRECTORY=/usr/local/yiliao/gpdata/gpmaster/gpseg-1
    
    export PGPORT=5432
    
    export PGDATABASE=testDB

    生效     . ~/.bash_profile

    4.5.4编辑数据库启动文件(/home/gpadmin/gpconfig/)
    ARRAY_NAME="Greenplum"
    
    MACHINE_LIST_FILE=/home/gpadmin/gpconfig/seg_hosts
    
    SEG_PREFIX=gpseg
    
    PORT_BASE=40000
    
    declare -a DATA_DIRECTORY=(/usr/local/yiliao/gpdata/gpp1 /usr/local/yiliao/gpdata/gpp2)
    
    MASTER_HOSTNAME=mdw
    
    MASTER_DIRECTORY=/usr/local/yiliao/gpdata/gpmaster
    
    MASTER_PORT=5432
    
    TRUSTED_SHELL=ssh
    
    ENCODING=UNICODE
    
    MIRROR_PORT_BASE=50000
    
    REPLICATION_PORT_BASE=41000
    
    MIRROR_REPLICATION_PORT_BASE=51000
    
    declare -a MIRROR_DATA_DIRECTORY=(/usr/local/yiliao/gpdata/gpm1 /usr/local/yiliao/gpdata/gpm2)
    4.5.5初始化数据库
    gpinitsystem -c /home/gpadmin/gpconfig/gpinitsystem_config -a
    4.5.6用psql测试是否安装成功
    psql -d postgres
    
    CREATE USER yiliaodb PASSWORD 'yiliaodb' CREATEDB;

    4.5修改文件(Master)

      cd /usr/local/yiliao/gpdata/gpmaster/gpseg-1/

      vi pg_hba.conf

    host     all         yiliaodb           0.0.0.0/0     md5

    说明:

    (1).其中,"trust"和"password"为postgresql数据库登陆验证的方式,"trust"表示信任,即不需要输入密码(即使有密码),"password"表示需         要输入密码。

    (2).host all all 127.0.0.1/31 trust表示本地连接数据库不需要输入密码(即使有密码,设为trust后就不需要密码)

    (3).host all all 0.0.0.0/0 所有主机连接数据库需要输入密码(如果有密码)

    (4).当然,这两个综合后表现的结果就是:对于本机链接表示信任(不需要输入密码),对于非本机链接需要输入密码

    4.6安装注意事项

    1.每次服务器重启以后需要关闭防火墙

    2.每次需加载gpdb环境变量才能有gpdb数据库命令 “. ~/.bash_profile”

    3.gpstop 命令关闭gpdb

    4.gpstart -a 命令开启gpdb

    4.7 gp基本命令

      1.Shell命令:

    su - gpadmin
    
    gpstart                      #正常启动
    
    gpstop                       #正常关闭
    
    gpstop  -M  fast #快速关闭
    
    gpstop  -r               #重启
    
    gpstop  -u               #重新加载配置文件

      2.gp命令

    a) 登陆与退出Greenplum
          # 默认数据库登陆
    
            psql
    
          # 登陆gpdb数据库
    
            psql gpdb
    
            psql -d gpdb
    
          # 以gpadmin用户,gphostm server,5432端口登陆gpdb数据库
    
            psql -d gpdb -h gphostm -p 5432 -U gpadmin        
    
             # 退出
    
                 在gp数据库中: q
    
    
    b) 查看greenplum数据库下所有默认数据表:
    
        select * from pg_tables;
    
     
    
    c)进入数据库以后,就可以通过命令,查看数据库种的数据库:
    
        select * from pg_database; d)数据库中查看用户和数据库     用户: du     数据库:l

      3.检查及修复无效的segment节点

    # status命令查看状态
    
      Show detailed status information of a Greenplum Database system:
            gpstate -s
    
    
    Do a quick check for down segments in the master host system catalog:
            gpstate -Q
    
    
    Show information about mirror segment instances:
           gpstate -m
     
    
    Show information about the standby master configuration:
           gpstate -f
    
    Display the Greenplum software version information:
           gpstate -i
    
    # 恢复节点
        gprecoverseg -r
    

    五、数据备份和恢复

    5.1 了解GreenPlum数据库的备份恢复

    5.1.1并行备份(gp_dump)

    1)      GP同时备份Master和所有活动的Segment实例

    2)      备份消耗的时间与系统中实例的数量没有关系

    3)      在Master主机上备份所有DDL文件和GP相关的数据字典表

    4)      每个Segment备份各自的数据

    5)      所有备份文件组成一个完整的备份集合,通过唯一14位数字的时间戳来识别

    5.1.2 并行恢复(gp_restore)

    1)      通过gp_dump产生的时间戳来辨识备份集合,恢复数据库对象和数据到分布式数据库

    2)      每个Segment并行恢复各自的数据

    3)      被恢复的GP系统必须与备份的系统同构

    5.1.3非并行备份(pg_dump/pg_dumpall)

    1)      GP依然支持常规的PostgreSQL备份命令pg_dump和pg_dumpall

    2)      备份将在Master主机上创建一个包含所有Segment数据的大的备份文件

    3)      不适合于全部数据备份,适用于小部分数据的迁移或备份

    PS:   

      一般情况不使用pg_dump,它适用于PostgreSQL迁移到Greenplum。

      pg_dump一次只能备份一个单独的数据库,且不能备份角色和表空间信息(因为这些信息是cluster-wide,而不是在某个数据库中(per-database))

    5.1.4非并行恢复(pg_restore)

    1) 使用由pg_dump或pg_dumpall创建的备份文件来恢复

    2) 使用非并行恢复可以实现异构系统恢复

    5.1.5备份数据库的四种选择

    1) 为每个实例创建一个备份文件

      可用于全库备份或者相同配置的系统之间迁移数据;

    2) 使用gpcrondump进行定期备份

      对gp_dump进行包装,使用cron调度GP数据库的后台进行备份;

      调用gpcrondump的调度作业应该部署在GP的Master主机;

      gpcrondump命令还备份数据库角色和服务器配置等数据库之外的对象

    3) 使用pg_dump或pg_dumpall创建单个备份文件

      可用于不同数据库之间少量数据迁移或备份;

    4) 文件系统备份

      借助操作系统或者其他第三方工具来进行备份,实现增量备份

    5.2创建GP用户和数据库

    5.2.1切换到测试用户,并配置环境变量

               su gptestusr

        source /opt/greenplum/db/greenplum_path.sh

    5.2.2创建数据库用户,并进入数据库

      CREATE USER testdb WITH PASSWORD 'password';
    
      CREATE DATABASE testdb;
    
      GRANT ALL PRIVILEGES ON DATABASE testdb to testdb;
    
      ALTER ROLE testdb CREATEROLE CREATEDB;

      修改greenplum配置文件:

               vi /usr/local/yiliao/gpdata/gpmaster/gpseg-1/pg_hba.conf

      进入数据库,输入密码的模式

        psql -U testdb -d testdb -W

    5.3 备份实例

    测试数据库时表:

    create table syn_test(id int,name varchar(10)) distributed by (id);
    
    insert into syn_test values(1,'ab'),(2,'dc'),(3,'dfs'),(4,'sfs');
    
    create table syn_test2(id int,cost varchar(10)) distributed by (id);
    
    insert into syn_test2 values(11,'aa'),(22,'bb'),(55,'cc'),(77,'dd');

    5.3.1 pg_dump & pg_restore

      # 创建备份目录(root用户下)

               mkdir      /gpbackup

          chown     gpadmin.gpadmin   /gpbackup/

      # <1>表级别备份恢复

        备份:pg_dump -t syn_test -Fc -U testdb -W testdb -f /gpbackup/syn_test_pgdump.dmp

        恢复:pg_restore -d testdb /gpbackup/syn_test_pgdump.dmp

      # <2>database级别备份恢复

               备份:pg_dump testdb -Fc -Ugpadmin -W  -f /gpbackup/testdb_pgdump.dmp

         恢复:恢复之前需先创建空的数据库

    5.3.2 pg_dumpall

      gp_dump同时只能备份一个数据库。为了解决这个问题,就要使用pg_dumpall工具,它备份每个数据库和角色、表空间定义。

      执行pg_dumpall需要超级用户权限。

    # <1>导出所有role和tablespace

      pg_dumpall  -g >/gpbackup/role_tbs.sql

    # <2>导出所有database

      pg_dumpall  >/gpbackup/all.dmp

    5.3.3 gp_dump & gp_restore

    # gp_dump

      gp_dump是Greenplum的并行备份工具,Master和segment同时备份,备份保存在每个节点中。备份时间最长的节点决定着整个备份时长。

      Segment节点备份的只有数据,而Master备份的是所有DDL命令和一些全局系统表(如gp_segment_configuration)。

      执行gp_dump时,只有Segment的primary和active Master运行备份操作,Mirror和stanby Master不参与备份。

      gp_dump在每个Segment上运行gp_dump_agent代理进程,将备份状态报告给Master的gp_dump进程。

          备份:gp_dump testdb --table=syn_test --gp-d=/gpbackup/ --gp-r=/gpbackup/

    # gp_restore

      gp_restore命令使用gp_dump生成的备份文件恢复数据定义和用户的数据。特别要注意的时,gp_restore时需指定gp_dump备份时的时间戳(在gp_dump_.rpt中)。

      执行gp_restore有如下要求:

        gp_dump做的备份文件,并且备份文件在原始位置。

        GPDB正常运行

        GPDB的Segment节点数(包含primary和mirror)和备份时一致

        要被恢复的数据库(database)已创建

        使用gp_dump备份时指定了参数如-s (schema only) , -a (data only), --gp-c (compressed), --gp-d (alternate dump file location) ,那么使用gp_restore恢复时也要加上

          恢复:gp_restore --gp-d=/gpbackup/ --gp-r=/gpbackup/ --gp-k=201807041720

  • 相关阅读:
    Feb292012 个人核心竞争力的构建
    让读书成为一种习惯
    软件工厂方法(二):软件工厂应用
    Scrum之 站立例会
    信息系统开发平台OpenExpressApp - AutoUI自动生成界面
    信息系统开发平台OpenExpressApp-内置支持的属性编辑方式
    信息系统开发平台OpenExpressApp - 订单示例(Getting Started)
    需求入门: 原型开发
    信息系统开发平台OpenExpressApp - 学习必备知识
    从IT方法论来谈RUP
  • 原文地址:https://www.cnblogs.com/blitheG/p/9266794.html
Copyright © 2020-2023  润新知