소프트웨어는 항상 버그가 있고 성능개선이 있어 업그레이드가 꼭 필요하다.
Greenplum 도 6.10.x. 이하 버전에서 확인된 버그가 발견되어 6.11.0 이상으로 업그레이드를 권장하고 있다.
그래서 Greenplum 6.3.0 에서 6.11.1 로 업그레이드를 해보도록 하자.
## 업그레이드시 유의사항
-
Greenplum DB의 downtime 이 발생한다. (어플리케이션, ETL 프로그램등을 잠시 중단하여야 한다.)
## 업그레이드 가이드
## 업그레이드 시작
1. 설치파일 다운로드
network.pivotal.io/products/pivotal-gpdb#/releases/743424
URL로 접속한뒤 Greenplum Database Server 를 선택 > OS에 맞는 파일을 선택하여 다운로드한다.
Greenplum 다운로드를 할려면 Tanzu 계정이 필요하다. (Greenplum 을 계속 공부하려면 계정생성을 권장한다.)
!! Greenplum은 오픈소스이나 vmware tanzu Greenplum 은 다른제품이라고 할 수 있다. !!!
추후 오픈소스 Greenplum과 tanzu Greenplum 의 차이점을 포스팅해봐야 겠다.
현재 설치되어 있는 OS가 RedHat 7.x 이라 for REHL 7을 선택하여 파일을 다운로드한다.
2. 다운로드한 Greenplum 6.11.1 설치파일을 master 노드에 업로드(나는 /root/ 폴더에 업로드)
[root@mdw ~]# cd ~
[root@mdw ~]# ll
total 615228
-rw-------. 1 root root 2045 Feb 13 2020 anaconda-ks.cfg
-rw-r--r-- 1 root root 191299536 Dec 16 10:15 greenplum-db-6.11.1-rhel7-x86_64.rpm
[root@mdw ~]#
3. master 노드에 접속해서 gpadmin 계정으로 변환 후 db stop
[root@mdw ~]# su - gpadmin
Last login: Wed Dec 16 10:16:37 KST 2020
[gpadmin@mdw ~]$ gpstop -a
20201216:10:16:47:436962 gpstop:mdw:gpadmin-[INFO]:-Starting gpstop with args: -a
20201216:10:16:47:436962 gpstop:mdw:gpadmin-[INFO]:-Gathering information and validating the environment...
20201216:10:16:47:436962 gpstop:mdw:gpadmin-[INFO]:-Obtaining Greenplum Master catalog information
20201216:10:16:47:436962 gpstop:mdw:gpadmin-[INFO]:-Obtaining Segment details from master...
20201216:10:16:47:436962 gpstop:mdw:gpadmin-[INFO]:-Greenplum Version: 'postgres (Greenplum Database) 6.3.0 build commit:77aa1b6e4486adbaede9f5f2864a04fc3a512e93'
20201216:10:16:47:436962 gpstop:mdw:gpadmin-[INFO]:-Commencing Master instance shutdown with mode='smart'
20201216:10:16:47:436962 gpstop:mdw:gpadmin-[INFO]:-Master segment instance directory=/data/master/gpseg-1
20201216:10:16:47:436962 gpstop:mdw:gpadmin-[INFO]:-Stopping master segment and waiting for user connections to finish ...
server shutting down
20201216:10:16:48:436962 gpstop:mdw:gpadmin-[INFO]:-Attempting forceful termination of any leftover master process
20201216:10:16:48:436962 gpstop:mdw:gpadmin-[INFO]:-Terminating processes for segment /data/master/gpseg-1
20201216:10:16:48:436962 gpstop:mdw:gpadmin-[INFO]:-Stopping master standby host smdw.gbb.local mode=fast
20201216:10:16:49:436962 gpstop:mdw:gpadmin-[INFO]:-Successfully shutdown standby process on smdw.gbb.local
20201216:10:16:49:436962 gpstop:mdw:gpadmin-[INFO]:-Targeting dbid [2, 34, 3, 35, 4, 36, 5, 37, 6, 38, 7, 39, 8, 40, 9, 41, 10, 42, 11, 43, 12, 44, 13, 45, 14, 46, 15, 47, 16, 48, 17, 49, 18, 50, 19, 51, 20, 52, 21, 53, 22, 54, 23, 55, 24, 56, 25, 57, 26, 58, 27, 59, 28, 60, 29, 61, 30, 62, 31, 63, 32, 64, 33, 65] for shutdown
20201216:10:16:49:436962 gpstop:mdw:gpadmin-[INFO]:-Commencing parallel primary segment instance shutdown, please wait...
20201216:10:16:49:436962 gpstop:mdw:gpadmin-[INFO]:-0.00% of jobs completed
20201216:10:16:50:436962 gpstop:mdw:gpadmin-[INFO]:-100.00% of jobs completed
20201216:10:16:50:436962 gpstop:mdw:gpadmin-[INFO]:-Commencing parallel mirror segment instance shutdown, please wait...
20201216:10:16:50:436962 gpstop:mdw:gpadmin-[INFO]:-0.00% of jobs completed
20201216:10:16:51:436962 gpstop:mdw:gpadmin-[INFO]:-100.00% of jobs completed
20201216:10:16:51:436962 gpstop:mdw:gpadmin-[INFO]:-----------------------------------------------------
20201216:10:16:51:436962 gpstop:mdw:gpadmin-[INFO]:- Segments stopped successfully = 64
20201216:10:16:51:436962 gpstop:mdw:gpadmin-[INFO]:- Segments with errors during stop = 0
20201216:10:16:51:436962 gpstop:mdw:gpadmin-[INFO]:-----------------------------------------------------
20201216:10:16:51:436962 gpstop:mdw:gpadmin-[INFO]:-Successfully shutdown 64 of 64 segment instances
20201216:10:16:51:436962 gpstop:mdw:gpadmin-[INFO]:-Database successfully shutdown with no errors reported
20201216:10:16:51:436962 gpstop:mdw:gpadmin-[INFO]:-Cleaning up leftover gpmmon process
20201216:10:16:51:436962 gpstop:mdw:gpadmin-[INFO]:-No leftover gpmmon process found
20201216:10:16:51:436962 gpstop:mdw:gpadmin-[INFO]:-Cleaning up leftover gpsmon processes
20201216:10:16:51:436962 gpstop:mdw:gpadmin-[INFO]:-No leftover gpsmon processes on some hosts. not attempting forceful termination on these hosts
20201216:10:16:51:436962 gpstop:mdw:gpadmin-[INFO]:-Cleaning up leftover shared memory
[gpadmin@mdw ~]$
4. root 사용자로 변경한 후 모든 노드에 설치파일 복사
[root@mdw ~]# scp greenplum-db-6.11.1-rhel7-x86_64.rpm smdw:/root/
[root@mdw ~]# scp greenplum-db-6.11.1-rhel7-x86_64.rpm sdw1:/root/
[root@mdw ~]# scp greenplum-db-6.11.1-rhel7-x86_64.rpm sdw2:/root/
[root@mdw ~]# scp greenplum-db-6.11.1-rhel7-x86_64.rpm sdw3:/root/
[root@mdw ~]# scp greenplum-db-6.11.1-rhel7-x86_64.rpm sdw4:/root/
5. 모든 노드에 yum install 을 실행
!!! yum upgrade 로 하니 에러발생 !!!
[root@mdw ~]# yum upgrade ./greenplum-db-6.11.1-rhel7-x86_64.rpm
Loaded plugins: product-id, search-disabled-repos, subscription-manager
This system is not registered with an entitlement server. You can use subscription-manager to register.
Examining ./greenplum-db-6.11.1-rhel7-x86_64.rpm: greenplum-db-6-6.11.1-1.el7.x86_64
Package greenplum-db-6 not installed, cannot update it. Run yum install to install it instead.
No packages marked for update
[root@mdw ~]#
yum install 로 하면 성공
[root@mdw ~]# cd ~; yum install -y ./greenplum-db-6.11.1-rhel7-x86_64.rpm
Loaded plugins: product-id, search-disabled-repos, subscription-manager
This system is not registered with an entitlement server. You can use subscription-manager to register.
Examining ./greenplum-db-6.11.1-rhel7-x86_64.rpm: greenplum-db-6-6.11.1-1.el7.x86_64
Marking ./greenplum-db-6.11.1-rhel7-x86_64.rpm to be installed
Resolving Dependencies
--> Running transaction check
---> Package greenplum-db.x86_64 0:6.3.0-1.el7 will be obsoleted
---> Package greenplum-db-6.x86_64 0:6.11.1-1.el7 will be obsoleting
--> Finished Dependency Resolution
Dependencies Resolved
==============================================================================================================================================================================================================================================================================
Package Arch Version Repository Size
==============================================================================================================================================================================================================================================================================
Installing:
greenplum-db-6 x86_64 6.11.1-1.el7 /greenplum-db-6.11.1-rhel7-x86_64 503 M
replacing greenplum-db.x86_64 6.3.0-1.el7
Transaction Summary
==============================================================================================================================================================================================================================================================================
Install 1 Package
Total size: 503 M
Downloading packages:
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
Installing : greenplum-db-6-6.11.1-1.el7.x86_64 1/2
Erasing : greenplum-db-6.3.0-1.el7.x86_64 2/2
Verifying : greenplum-db-6-6.11.1-1.el7.x86_64 1/2
Verifying : greenplum-db-6.3.0-1.el7.x86_64 2/2
Installed:
greenplum-db-6.x86_64 0:6.11.1-1.el7
Replaced:
greenplum-db.x86_64 0:6.3.0-1.el7
Complete!
mdw 노드가 성공하면 smdw, sdw1, sdw2, sdw3, sdw4 접속하여 같은명령어를 실행한다.
6. 모든 노드의 /usr/local/greenplum* 폴더권한을 gpadmin 으로 변경
[root@mdw ~]# cd /usr/local; chown -R gpadmin:gpadmin /usr/local/greenplum*
[root@mdw local]# ll
total 60
drwxr-xr-x. 2 root root 4096 Feb 24 2020 bin
drwxr-xr-x. 2 root root 4096 Dec 15 2017 etc
drwxr-xr-x. 2 root root 4096 Dec 15 2017 games
lrwxrwxrwx 1 root root 28 Feb 14 2020 gppython -> /usr/local/gppython-4.2.2.0/
drwxr-xr-x 5 root root 4096 Dec 24 2017 gppython-4.2.2.0
drwxr-xr-x 10 gpadmin gpadmin 4096 Feb 14 2020 greenplum-cc-web-6.0.0
lrwxrwxrwx 1 gpadmin gpadmin 30 Dec 16 10:47 greenplum-db -> /usr/local/greenplum-db-6.11.1
drwxr-xr-x 12 gpadmin gpadmin 4096 Dec 16 10:47 greenplum-db-6.11.1
drwxr-xr-x 8 gpadmin gpadmin 4096 Dec 16 10:47 greenplum-db-6.3.0
drwxr-xr-x. 2 root root 4096 Dec 15 2017 include
drwxr-xr-x 3 root root 4096 Feb 14 2020 java
drwxr-xr-x. 2 root root 4096 Dec 15 2017 lib
drwxr-xr-x. 2 root root 4096 Dec 15 2017 lib64
drwxr-xr-x. 2 root root 4096 Dec 15 2017 libexec
drwxr-xr-x. 2 root root 4096 Dec 15 2017 sbin
drwxr-xr-x. 5 root root 4096 Feb 13 2020 share
drwxr-xr-x. 2 root root 4096 Dec 15 2017 src
[root@mdw local]#
[root@mdw local]# ssh smdw 'chown -R gpadmin:gpadmin /usr/local/greenplum*'
[root@mdw local]# ssh sdw1 'chown -R gpadmin:gpadmin /usr/local/greenplum*'
[root@mdw local]# ssh sdw2 'chown -R gpadmin:gpadmin /usr/local/greenplum*'
[root@mdw local]# ssh sdw3 'chown -R gpadmin:gpadmin /usr/local/greenplum*'
[root@mdw local]# ssh sdw4 'chown -R gpadmin:gpadmin /usr/local/greenplum*'
7. gpstart
[gpadmin@mdw ~]$ gpstart
20201216:11:18:56:103489 gpstart:mdw:gpadmin-[INFO]:-Starting gpstart with args:
20201216:11:18:56:103489 gpstart:mdw:gpadmin-[INFO]:-Gathering information and validating the environment...
20201216:11:18:56:103489 gpstart:mdw:gpadmin-[INFO]:-Greenplum Binary Version: 'postgres (Greenplum Database) 6.11.1 build commit:df5f06d6fecffb4de64ab4ed2a1deb3a45efa37c'
20201216:11:18:56:103489 gpstart:mdw:gpadmin-[INFO]:-Greenplum Catalog Version: '301908232'
20201216:11:18:56:103489 gpstart:mdw:gpadmin-[INFO]:-Starting Master instance in admin mode
20201216:11:18:57:103489 gpstart:mdw:gpadmin-[INFO]:-Obtaining Greenplum Master catalog information
20201216:11:18:57:103489 gpstart:mdw:gpadmin-[INFO]:-Obtaining Segment details from master...
20201216:11:18:57:103489 gpstart:mdw:gpadmin-[INFO]:-Setting new master era
20201216:11:18:57:103489 gpstart:mdw:gpadmin-[INFO]:-Master Started...
20201216:11:18:57:103489 gpstart:mdw:gpadmin-[INFO]:-Shutting down master
20201216:11:18:58:103489 gpstart:mdw:gpadmin-[INFO]:---------------------------
20201216:11:18:58:103489 gpstart:mdw:gpadmin-[INFO]:-Master instance parameters
20201216:11:18:58:103489 gpstart:mdw:gpadmin-[INFO]:---------------------------
20201216:11:18:58:103489 gpstart:mdw:gpadmin-[INFO]:-Database = template1
20201216:11:18:58:103489 gpstart:mdw:gpadmin-[INFO]:-Master Port = 5432
20201216:11:18:58:103489 gpstart:mdw:gpadmin-[INFO]:-Master directory = /data/master/gpseg-1
20201216:11:18:58:103489 gpstart:mdw:gpadmin-[INFO]:-Timeout = 600 seconds
20201216:11:18:58:103489 gpstart:mdw:gpadmin-[INFO]:-Master standby start = On
20201216:11:18:58:103489 gpstart:mdw:gpadmin-[INFO]:---------------------------------------
20201216:11:18:58:103489 gpstart:mdw:gpadmin-[INFO]:-Segment instances that will be started
20201216:11:18:58:103489 gpstart:mdw:gpadmin-[INFO]:---------------------------------------
20201216:11:18:58:103489 gpstart:mdw:gpadmin-[INFO]:- Host Datadir Port Role
20201216:11:18:58:103489 gpstart:mdw:gpadmin-[INFO]:- seg001.gbb.local /data1/primary/gpseg0 40000 Primary
20201216:11:18:58:103489 gpstart:mdw:gpadmin-[INFO]:- seg002.gbb.local /data1/mirror/gpseg0 41000 Mirror
20201216:11:18:58:103489 gpstart:mdw:gpadmin-[INFO]:- seg001.gbb.local /data1/primary/gpseg1 40001 Primary
.
. 생략
.
20201216:11:18:58:103489 gpstart:mdw:gpadmin-[INFO]:- seg003.gbb.local /data2/mirror/gpseg29 41007 Mirror
20201216:11:18:58:103489 gpstart:mdw:gpadmin-[INFO]:- seg004.gbb.local /data2/primary/gpseg30 40006 Primary
20201216:11:18:58:103489 gpstart:mdw:gpadmin-[INFO]:- seg001.gbb.local /data2/mirror/gpseg30 41007 Mirror
20201216:11:18:58:103489 gpstart:mdw:gpadmin-[INFO]:- seg004.gbb.local /data2/primary/gpseg31 40007 Primary
20201216:11:18:58:103489 gpstart:mdw:gpadmin-[INFO]:- seg002.gbb.local /data2/mirror/gpseg31 41007 Mirror
Continue with Greenplum instance startup Yy|Nn (default=N):
> y
20201216:11:19:00:103489 gpstart:mdw:gpadmin-[INFO]:-Commencing parallel primary and mirror segment instance startup, please wait...
..
20201216:11:19:02:103489 gpstart:mdw:gpadmin-[INFO]:-Process results...
20201216:11:19:02:103489 gpstart:mdw:gpadmin-[INFO]:-----------------------------------------------------
20201216:11:19:02:103489 gpstart:mdw:gpadmin-[INFO]:- Successful segment starts = 64
20201216:11:19:02:103489 gpstart:mdw:gpadmin-[INFO]:- Failed segment starts = 0
20201216:11:19:02:103489 gpstart:mdw:gpadmin-[INFO]:- Skipped segment starts (segments are marked down in configuration) = 0
20201216:11:19:02:103489 gpstart:mdw:gpadmin-[INFO]:-----------------------------------------------------
20201216:11:19:02:103489 gpstart:mdw:gpadmin-[INFO]:-Successfully started 64 of 64 segment instances
20201216:11:19:02:103489 gpstart:mdw:gpadmin-[INFO]:-----------------------------------------------------
20201216:11:19:02:103489 gpstart:mdw:gpadmin-[INFO]:-Starting Master instance mdw.gbb.local directory /data/master/gpseg-1
20201216:11:19:03:103489 gpstart:mdw:gpadmin-[INFO]:-Command pg_ctl reports Master mdw.gbb.local instance active
20201216:11:19:03:103489 gpstart:mdw:gpadmin-[INFO]:-Connecting to dbname='template1' connect_timeout=15
20201216:11:19:05:103489 gpstart:mdw:gpadmin-[INFO]:-Starting standby master
20201216:11:19:05:103489 gpstart:mdw:gpadmin-[INFO]:-Checking if standby master is running on host: smdw.gbb.local in directory: /data/master/gpseg-1
20201216:11:19:07:103489 gpstart:mdw:gpadmin-[INFO]:-Database successfully started
[gpadmin@mdw ~]$
8. gpstate 명령어 또는 select version() 쿼리 실행
[gpadmin@mdw ~]$ gpstate
20201216:12:42:50:264516 gpstate:mdw:gpadmin-[INFO]:-Starting gpstate with args:
20201216:12:42:50:264516 gpstate:mdw:gpadmin-[INFO]:-local Greenplum Version: 'postgres (Greenplum Database) 6.11.1 build commit:df5f06d6fecffb4de64ab4ed2a1deb3a45efa37c'
20201216:12:42:50:264516 gpstate:mdw:gpadmin-[INFO]:-master Greenplum Version: 'PostgreSQL 9.4.24 (Greenplum Database 6.11.1 build commit:df5f06d6fecffb4de64ab4ed2a1deb3a45efa37c) on x86_64-unknown-linux-gnu, compiled by gcc (GCC) 6.4.0, 64-bit compiled on Sep 17 2020 03:08:40'
20201216:12:42:50:264516 gpstate:mdw:gpadmin-[INFO]:-Obtaining Segment details from master...
20201216:12:42:50:264516 gpstate:mdw:gpadmin-[INFO]:-Gathering data from segments...
.
20201216:12:42:51:264516 gpstate:mdw:gpadmin-[INFO]:-Greenplum instance status summary
20201216:12:42:51:264516 gpstate:mdw:gpadmin-[INFO]:-----------------------------------------------------
20201216:12:42:51:264516 gpstate:mdw:gpadmin-[INFO]:- Master instance = Active
20201216:12:42:51:264516 gpstate:mdw:gpadmin-[INFO]:- Master standby = smdw.gbb.local
20201216:12:42:51:264516 gpstate:mdw:gpadmin-[INFO]:- Standby master state = Standby host passive
20201216:12:42:51:264516 gpstate:mdw:gpadmin-[INFO]:- Total segment instance count from metadata = 64
20201216:12:42:51:264516 gpstate:mdw:gpadmin-[INFO]:-----------------------------------------------------
20201216:12:42:51:264516 gpstate:mdw:gpadmin-[INFO]:- Primary Segment Status
20201216:12:42:51:264516 gpstate:mdw:gpadmin-[INFO]:-----------------------------------------------------
20201216:12:42:51:264516 gpstate:mdw:gpadmin-[INFO]:- Total primary segments = 32
20201216:12:42:51:264516 gpstate:mdw:gpadmin-[INFO]:- Total primary segment valid (at master) = 32
20201216:12:42:51:264516 gpstate:mdw:gpadmin-[INFO]:- Total primary segment failures (at master) = 0
20201216:12:42:51:264516 gpstate:mdw:gpadmin-[INFO]:- Total number of postmaster.pid files missing = 0
20201216:12:42:51:264516 gpstate:mdw:gpadmin-[INFO]:- Total number of postmaster.pid files found = 32
20201216:12:42:51:264516 gpstate:mdw:gpadmin-[INFO]:- Total number of postmaster.pid PIDs missing = 0
20201216:12:42:51:264516 gpstate:mdw:gpadmin-[INFO]:- Total number of postmaster.pid PIDs found = 32
20201216:12:42:51:264516 gpstate:mdw:gpadmin-[INFO]:- Total number of /tmp lock files missing = 0
20201216:12:42:51:264516 gpstate:mdw:gpadmin-[INFO]:- Total number of /tmp lock files found = 32
20201216:12:42:51:264516 gpstate:mdw:gpadmin-[INFO]:- Total number postmaster processes missing = 0
20201216:12:42:51:264516 gpstate:mdw:gpadmin-[INFO]:- Total number postmaster processes found = 32
20201216:12:42:51:264516 gpstate:mdw:gpadmin-[INFO]:-----------------------------------------------------
20201216:12:42:51:264516 gpstate:mdw:gpadmin-[INFO]:- Mirror Segment Status
20201216:12:42:51:264516 gpstate:mdw:gpadmin-[INFO]:-----------------------------------------------------
20201216:12:42:51:264516 gpstate:mdw:gpadmin-[INFO]:- Total mirror segments = 32
20201216:12:42:51:264516 gpstate:mdw:gpadmin-[INFO]:- Total mirror segment valid (at master) = 32
20201216:12:42:51:264516 gpstate:mdw:gpadmin-[INFO]:- Total mirror segment failures (at master) = 0
20201216:12:42:51:264516 gpstate:mdw:gpadmin-[INFO]:- Total number of postmaster.pid files missing = 0
20201216:12:42:51:264516 gpstate:mdw:gpadmin-[INFO]:- Total number of postmaster.pid files found = 32
20201216:12:42:51:264516 gpstate:mdw:gpadmin-[INFO]:- Total number of postmaster.pid PIDs missing = 0
20201216:12:42:51:264516 gpstate:mdw:gpadmin-[INFO]:- Total number of postmaster.pid PIDs found = 32
20201216:12:42:51:264516 gpstate:mdw:gpadmin-[INFO]:- Total number of /tmp lock files missing = 0
20201216:12:42:51:264516 gpstate:mdw:gpadmin-[INFO]:- Total number of /tmp lock files found = 32
20201216:12:42:51:264516 gpstate:mdw:gpadmin-[INFO]:- Total number postmaster processes missing = 0
20201216:12:42:51:264516 gpstate:mdw:gpadmin-[INFO]:- Total number postmaster processes found = 32
20201216:12:42:51:264516 gpstate:mdw:gpadmin-[INFO]:- Total number mirror segments acting as primary segments = 0
20201216:12:42:51:264516 gpstate:mdw:gpadmin-[INFO]:- Total number mirror segments acting as mirror segments = 32
20201216:12:42:51:264516 gpstate:mdw:gpadmin-[INFO]:-----------------------------------------------------
[gpadmin@mdw ~]$
[gpadmin@mdw ~]$ psql -c 'select version()'
version
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
PostgreSQL 9.4.24 (Greenplum Database 6.11.1 build commit:df5f06d6fecffb4de64ab4ed2a1deb3a45efa37c) on x86_64-unknown-linux-gnu, compiled by gcc (GCC) 6.4.0, 64-bit compiled on Sep 17 2020 03:08:40
(1 row)
[gpadmin@mdw ~]$
Greenplum Database 6.11.1 이 표시가 되면 정상적으로 업그레이드가 완료된 것이다.
'Database > Greenplum' 카테고리의 다른 글
Greenplum 6.14에서 ORCA(query optimizer) 성능향상 (0) | 2021.02.17 |
---|---|
Greenplum biopython-1.76 모듈 설치 (0) | 2021.01.01 |
Greenplum - Procedural Languages 란? (0) | 2020.12.23 |
Greenplum PXF 란? (0) | 2020.12.16 |
statement_timeout 속성에 대해서 (0) | 2020.12.08 |