greenplum 집단 구축 및 배치

10095 단어 데이터베이스

1. 환경 준비


1. 서버 3대 준비


192.168.123.103   master
192.168.123.104   data1
192.168.123.105   data2

2. 서버hosts 변경

#vim /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.123.103 master
192.168.123.104 data1
192.168.123.105 data2

scp를 사용하여 다른 데이터 노드로 직접 복사:
#scp /etc/hosts data1:/etc
#scp /etc/hosts data2:/etc

3. 서버 간 액세스 암호 변경


각 서버에서 수행해야 함
#ssh-keygen -t rsa # root , OK
#ssh-copy-id data1 # ,ip1 ssh IP
#ssh data1 # 

4. 각 서버에 그룹 및 사용자 정보 추가

#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

5. 시스템 코어 수정

#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 (구성 적용)

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로 수정되었습니다.

7, 방화벽 및 SELinux 구성 관리


방화벽 관리: (linux 버전에 따라 조회 방식이 다르다)
CentOS 6.5:
 : service iptables stop
 :chkconfig iptables off
 : service iptables status


CentOS 7.2:
 : systemctl stop firewalld.service
 :systemctl disable firewalld.service
 : systemctl status firewalld.service
 :firewall-cmd --zone=public --add-port=80/tcp --permanent
 :firewall-cmd --list-ports

SELinux 구성:
#vi /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

2. Greenplum DB 설치 배포


1. 설치 패키지 다운로드


다운로드 주소:https://github.com/greenplum-db/gpdb/releases

2.1, 설치 컴파일 환경

# yum groupinstall "Development Tools"
# yum install readline
# yum install readline-devel
# yum install zlib-devel

2.2 Greenplum DB 컴파일 설치


그 중에서 2.1은 원본 코드를 컴파일하여 설치하거나 rpm 패키지를 사용하여 직접 설치할 수 있다. 다음과 같다.
# yum install greenplum-db-6.0.0-rhel7-x86_64.rpm

3. greenplum의 설치 경로를 gpadmin에 접근하기

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

3. Greenplum DB 구성


1.1, 모든 노드 호스트 이름을 포함하는hostlist 만들기

# vi /home/gpadmin/conf/hostlist
 
master
data1
data2

1.2,seg_ 만들기hosts, 모든 Segment Host를 포함하는 호스트 이름

# vim /home/gpadmin/conf/seg_hosts
 
data1
data2

2. ssh 비밀 연결 설정:

[root@ gp-master ~]# su - gpadmin
[gpadmin@ gp-master ~]# source /usr/local/greenplum-db/greenplum_path.sh  
[gpadmin@ gp-master ~]# gpssh-exkeys -f /home/gpadmin/conf/hostlist
 
[STEP 1 of 5] create local ID and authorize on local host
  ... /home/gpadmin/.ssh/id_rsa file exists ... key generation skipped
 
[STEP 2 of 5] keyscan all hosts and update known_hosts file
 
[STEP 3 of 5] authorize current user on remote hosts
  ... send to gp-sdw1
  ... send to gp-sdw2
  ... send to gp-sdw3
# : gpadmin 
[STEP 4 of 5] determine common authentication file content
 
[STEP 5 of 5] copy authentication files to all remote hosts
  ... finished key exchange with gp-sdw1
  ... finished key exchange with gp-sdw2
  ... finished key exchange with gp-sdw3
 
[INFO] completed successfully

 :

[root@ gp-master ~]# ssh data1  # ;
 :

[root@ gp-master ~]# gpssh -f /home/gpadmin/conf/hostlist
 
=> pwd
[data1] /home/gpadmin
[data2] /home/gpadmin
[master] /home/gpadmin
=> exit
 。

3. Segment 노드에 Greenplum DB 설치


각 하위 노드에서 폴더 권한 부여:
$ chown -R gpadmin:gpadmin /usr/local
$ chown -R gpadmin:gpadmin /opt

마스터에서 설치 패키지를 포장하여 각 하위 노드로 복사합니다.
$ cd /usr/local/
$ tar -cf gp.tar greenplum-db-5.0.0/
$ gpscp -f /home/gpadmin/conf/seg_hosts gp.tar =:/usr/local/

만약 의외의 일이 없다면 대량 복제에 성공하면 하위 노드의 해당 폴더를 보고 tar 패키지를 압축을 풀 수 있습니다. 현재 우리는 하위 노드에 대한 대량 압축 해제 작업을 사용할 것입니다.
$ source /usr/local/ greenplum-db/greenplum_path.sh
$ gpssh -f /home/gpadmin/conf/seg_hosts  
 
=> cd /usr/local
[sdw3]
[sdw1]
[sdw2]
=> tar -xf gp.tar
[sdw3]
[sdw1]
[sdw2]
 
# 
=> ln -s ./greenplum-db-5.0.0 greenplum-db
[sdw3]
[sdw1]
[sdw2]
=> ll( ll )
=>exit( )

이렇게 하면 모든 노드의 설치를 완성할 수 있다.
 

4. 데이터베이스 초기화


1. 자원 디렉터리 만들기

source /usr/local/ greenplum-db/greenplum_path.sh
gpssh -f /home/gpadmin/conf/hostlist # 
 
#  /opt/greenplum/data ( )
=> mkdir -p /opt/greenplum/data/master
=> mkdir -p /opt/greenplum/data/primary
=> mkdir -p /opt/greenplum/data/mirror
=> mkdir -p /opt/greenplum/data2/primary
=> mkdir -p /opt/greenplum/data2/mirror

2. 환경 변수 구성


2.1 주 노드에서 환경 변수 설정(gpadmin의 사용자 권한에 설정)

# vi /home/gpadmin/.bash_profile  
 
source /usr/local/greenplum-db/greenplum_path.sh
export MASTER_DATA_DIRECTORY=/opt/greenplum/data/master/gpseg-1
export GPPORT=5432
export PGDATABASE=gp_sydb

2.2 각 하위 노드에 순차적으로 복사

# scp /home/gpadmin/.bash_profile gp-sdw1:/home/gpadmin/

2.3 환경 변수 적용

# source .bash_profile

3, NTP 구성


master 노드에서 ntp를 활성화하고 Segment 노드에서 NTP를 구성하고 활성화합니다.
echo "server master perfer" >>/etc/ntp.conf
gpssh -f /home/gpadmin/conf/hostlist -v -e 'sudo ntpd'
gpssh -f /home/gpadmin/conf/hostlist -v -e 'sudo /etc/init.d/ntpd start && sudo chkconfig --level 35 ntpd on'

4. 초기화 전 연결성 검사


노드와 노드 사이의 파일 읽기 검사하기;
cd /usr/local/greenplum-db/bin
gpcheckperf -f /home/gpadmin/conf/hostlist -r N -d /tmp
 
--  NETPERF TEST
-------------------
 
====================
==  RESULT
====================
Netperf bisection bandwidth test
master -> gp-sdw1 = 72.220000
data2 -> gp-sdw3 = 21.470000
data1 -> gp-master = 43.510000

 
Summary:
sum = 181.40 MB/sec
min = 21.47 MB/sec
max = 72.22 MB/sec
avg = 45.35 MB/sec
median = 44.20 MB/sec

상기 내용이 나타나면 각 노드가 이미 연결될 수 있음을 증명한다.

5. 초기화 수행


초기화 Greenplum 프로필 템플릿은/usr/local/greenplum-db/docs/cli_help/gpconfigs 디렉터리에서 gpinitsystem_config는 Greenplum을 초기화하는 템플릿입니다. 이 템플릿에 Mirror Segment 설정이 설명되어 있습니다.다음 구성을 수정하는 복사본을 만듭니다.
# cd /usr/local/greenplum-db/docs/cli_help/gpconfigs
# cp gpinitsystem_config initgp_config
# vi initgp_config  

#다음은 텍스트에서 수정할 속성 필드 설정#자원 디렉터리는 앞 장에서 만든 자원 디렉터리입니다. 자원 디렉터리를 몇 번 설정하면 하위 노드마다 몇 개의 실례가 있습니다.
declare -a DATA_DIRECTORY=(/opt/greenplum/data/primary /opt/greenplum/data/primary /opt/greenplum/data/primary /opt/greenplum/data2/primary /opt/greenplum/data2/primary /opt/greenplum/data2/primary)
declare -a MIRROR_DATA_DIRECTORY=(/opt/greenplum/data/mirror /opt/greenplum/data/mirror /opt/greenplum/data/mirror /opt/greenplum/data2/mirror /opt/greenplum/data2/mirror /opt/greenplum/data2/mirror)
 
ARRAY_NAME=”gp_sydb”                                       
MASTER_HOSTNAME=master                                  
MASTER_DIRECTORY=/opt/greenplum/data/master                 
MASTER_DATA_DIRECTORY=/opt/greenplum/data/master/gpseg-1    
DATABASE_NAME=gp_sydb  
MACHINE_LIST_FILE=/home/gpadmin/conf/seg_hosts                                        

6. 초기화를 실행한다. 

# gpinitsystem -c initgp_config -S -s standby  

초기화에 실패하면/opt의 데이터 자원 디렉터리를 삭제하고 다시 초기화해야 합니다. 

5. 데이터베이스 작업


1 클러스터 중지 및 시작

# gpstop -M fast
# gpstart -a

2 데이터베이스 로그인

# psql -d postgres  # 
 
postgres=# \l #  
                 List of databases
   Name    |  Owner  | Encoding |  Access privileges  
-----------+---------+----------+---------------------
 gp_sydb   | gpadmin | UTF8     | 
 postgres  | gpadmin | UTF8     | 
 template0 | gpadmin | UTF8     | =c/gpadmin          
                                : gpadmin=CTc/gpadmin
 template1 | gpadmin | UTF8     | =c/gpadmin          
                                : gpadmin=CTc/gpadmin
(4 rows)
postgres=# \i test.sql # sql
postgres=# copy   to '/tmp/1.csv' with 'csv';      # 
postgres=# copy   from '/tmp/1.csv' with 'csv';    # 
postgres=# \q          # 

3 클러스터 상태

gpstate -e # mirror 
gpstate -f # standby master 
gpstate -s # GP 
gpstate -i # GP 
gpstate --help # , gpstate 

비고: 지금까지 데이터베이스가 조작되었습니다. 기본적으로 로컬만 데이터베이스를 연결할 수 있습니다.다른 I가 필요하면 gp_를 수정해야 합니다hba.conf 파일
vim $MASTER_DATA_DIRECTORY/pg_hba.conf 
# 
host all gpadmin 0.0.0.0/0 md5

실행 gpstop -u 구성 적용

좋은 웹페이지 즐겨찾기