※ 목차 ※
Upgrade PostgreSQL Minor Version on Linux
Upgrade PostgreSQL Minor Version on Windows
Upgrade PostgreSQL Minor Version on Linux | 목차 |
PostgreSQL의 Minor버전 릴리즈는 Major버전의 아키텍처를 변경(변형) 하지 않는 선에서 자주 발생하는 버그, 보안 및 데이터 손상 문제에 대해서만 수정된 내용을 제공합니다. Major버전 내부 아키텍처 변경이 없기 때문에 Minor버전 간의 호환성을 유지할 수 있습니다.
Linux에서 Minor Version Upgrade는 세가지 방법이 존재합니다.
첫 번째로, yum
, apt
를 통한 Minor Upgrade가 있습니다. 인터넷이 연결되어 있고, PostgreSQL Repository 등록이 되어 있어야 합니다. 업그레이드 시에 자동으로 서비스(Systemd)가 갱신됨에 따라 자동으로 PostgreSQL Server가 재기동됩니다.(정확히는 종료 → Upgrade → 기동 순으로 작동합니다.)
두 번째로, 인터넷이 연결되지 않은 서버에서 사용할 수 있는 rpm
, dpkg
를 통한 Minor Upgrade가 있습니다. 앞서 언급한 yum, apt를 통한 업그레이드와 진행 절차는 동일하며, 서버가 외부 인터넷 연결 가능 여부에 따라 설치 파일 준비 방법 차이만 있습니다.
세 번째로, Source File
을 이용한 방법이 있습니다.
yum | rpm | apt | dpkg | Source File | |
설치파일 | Repository | 개별준비 | Repository | 개별준비 | 개별준비 |
설치버전 | Major별 최신 Minor | 선택 | Major별 최신 Minor | 선택 | 선택 |
업그레이드 방법 | yum install -y postgresql{VERSION}-server | rpm -Uvh {Package} | apt install -y --only-upgrade postgresql* | dpkg -i {Package} |
이번 단락에서는 Linux Platform에서 Minor Version Upgrade에 대한 내용을 다루며, ①설치 파일 준비, ②PostgreSQL 설치 여부 확인, ③PostgreSQL 업그레이드, ④PostgreSQL 업그레이드 확인 순으로 기술됩니다. Linux Platform은 CentOS 7.9
, Ubuntu 22.04
로 진행하며, PostgreSQL 14.2에서 14.5로 업그레이드하는 내용을 기술합니다.
업그레이드 성공 여부를 확인하기 위해 postgres Database에 exem_tab 테이블을 조회합니다.
-- 테스트 테이블 생성
CREATE TABLE exem_tab ( no integer ,
in_date text not null default now() ) ;
INSERT INTO exem_tab VALUES (1) ;
INSERT INTO exem_tab VALUES (2) ;
INSERT INTO exem_tab VALUES (3) ;
1. 설치 파일 준비
업그레이드 방법에 따라서 설치 파일을 준비합니다.
업그레이드 방법 | 설명 |
yum | 인터넷 연결이 가능해야 하며, PostgreSQL yum Repository 등록 필요. PostgreSQL Setup - Installation > Install PostgreSQL on Linux (CentOS - yum) 문서 참고 |
rpm | yum.postgresql.org/packages에서 다운로드 가능. PostgreSQL Setup - Installation > Install PostgreSQL on Linux (CentOS - rpm) 문서 참고 |
apt | 인터넷 연결이 가능해야 하며, PostgreSQL apt Repository 등록 필요. PostgreSQL Setup - Installation > Install PostgreSQL on Linux (Ubuntu - apt) 문서 참고 |
dpkg | apt.postgresql.org/pub/repos/apt/pool/main/p/에서 다운로드 가능 PostgreSQL Setup - Installation > Install PostgreSQL on Linux (Ubuntu- dpkg) 문서 참고 |
Source File | www.postgresql.org/ftp/source에서 다운로드 가능 PostgreSQL Setup - Installation > Install PostgreSQL on Linux (Source File) 문서 참고 |
2. PostgreSQL 설치 여부 확인
CentOS (RedHat계열)
## CentOS
yum list installed | grep postgresql
rpm -qa | grep postgresql
[root@centos ~]# yum list installed | grep postgresql
postgresql14.x86_64 14.2-1PGDG.rhel7 installed
postgresql14-libs.x86_64 14.2-1PGDG.rhel7 installed
postgresql14-server.x86_64 14.2-1PGDG.rhel7 installed
[root@centos ~]# rpm -qa | grep postgresql
postgresql14-14.2-1PGDG.rhel7.x86_64
postgresql14-libs-14.2-1PGDG.rhel7.x86_64
postgresql14-server-14.2-1PGDG.rhel7.x86_64
## [postgres] PostgreSQL 버전 확인 및 데이터 확인
su - postgres
psql -c "SELECT VERSION()"
psql -c "SELECT * FROM exem_tab"
[root@centos ~]# su - postgres
-bash-4.2$ psql -c "SELECT VERSION()"
version
---------------------------------------------------------------------------------------------------------
PostgreSQL 14.2 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-44), 64-bit
(1 row)
-bash-4.2$ psql -c "SELECT * FROM exem_tab"
no | in_date
----+-------------------------------
1 | 2022-09-07 15:18:28.445582+09
2 | 2022-09-07 15:18:30.516606+09
3 | 2022-09-07 15:18:32.743652+09
(3 rows)
Ubuntu (Debian계열)
## Ubuntu
apt list --installed | grep postgresql
dpkg --get-selections | grep postgresql
root@ubuntu:~# apt list --installed | grep postgresql
postgresql-14/now 14.2-1.pgdg22.04+1+b1 amd64 [installed,upgradable to: 14.3-1.pgdg22.04+1]
postgresql-client-14/now 14.2-1.pgdg22.04+1+b1 amd64 [installed,upgradable to: 14.3-1.pgdg22.04+1]
postgresql-client-common/jammy-pgdg,now 241.pgdg22.04+1 all [installed]
postgresql-common/jammy-pgdg,now 241.pgdg22.04+1 all [installed]
root@ubuntu:~# dpkg --get-selections | grep postgresql
postgresql-14 install
postgresql-client-14 install
postgresql-client-common install
postgresql-common install
## [postgres] PostgreSQL 버전 확인 및 데이터 확인
su - postgres
psql -c "SELECT VERSION()"
psql -c "SELECT * FROM exem_tab"
root@ubuntu:~# su - postgres
postgres@ubuntu:~$ psql -c "SELECT VERSION()"
version
---------------------------------------------------------------------------------------------------------------------------------
PostgreSQL 14.2 (Ubuntu 14.2-1.pgdg22.04+1+b1) on x86_64-pc-linux-gnu, compiled by gcc (Ubuntu 11.2.0-16ubuntu1) 11.2.0, 64-bit
(1 row)
postgres@ubuntu:~$ psql -c "SELECT * FROM exem_tab"
no | in_date
----+-------------------------------
1 | 2022-09-07 05:51:04.669347+00
2 | 2022-09-07 05:51:08.348246+00
3 | 2022-09-07 05:51:12.156604+00
(3 rows)
Source File
## PostgreSQL Process 확인
ps -ef | grep postgres
[postgres@centos ~]$ ps -ef | grep postgres
postgres 20576 1 0 16:35 ? 00:00:00 /home/postgres/PostgreSQL_Engine/bin/postgres -D /home/postgres/PostgreSQL_Data
postgres 20578 20576 0 16:35 ? 00:00:00 postgres: checkpointer
postgres 20579 20576 0 16:35 ? 00:00:00 postgres: background writer
postgres 20580 20576 0 16:35 ? 00:00:00 postgres: walwriter
postgres 20581 20576 0 16:35 ? 00:00:00 postgres: autovacuum launcher
postgres 20582 20576 0 16:35 ? 00:00:00 postgres: stats collector
postgres 20583 20576 0 16:35 ? 00:00:00 postgres: logical replication launcher
## [postgres] PostgreSQL 버전 확인 및 데이터 확인
/home/postgres/PostgreSQL_Engine/bin/psql -c "SELECT VERSION()"
/home/postgres/PostgreSQL_Engine/bin/psql -c "SELECT * FROM exem_tab"
[postgres@centos ~]$ /home/postgres/PostgreSQL_Engine/bin/psql -c "SELECT VERSION()"
version
---------------------------------------------------------------------------------------------------------
PostgreSQL 14.2 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-44), 64-bit
(1 row)
[postgres@centos ~]$ /home/postgres/PostgreSQL_Engine/bin/psql -c "SELECT * FROM exem_tab"
no | in_date
----+-------------------------------
1 | 2022-09-07 16:36:38.275461+09
2 | 2022-09-07 16:36:42.46244+09
3 | 2022-09-07 16:36:45.221768+09
(3 rows)
3. PostgreSQL 업그레이드
CentOS (RedHat계열) - Using yum
## CentOS Using yum
## syntax : yum install -y postgresql{VERSION}-server
yum install -y postgresql14-server
[root@centos ~]# yum install -y postgresql14-server
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
* base: mirror.kakao.com
* extras: mirror.kakao.com
* updates: mirror.kakao.com
Resolving Dependencies
--> Running transaction check
---> Package postgresql14-server.x86_64 0:14.2-1PGDG.rhel7 will be updated
---> Package postgresql14-server.x86_64 0:14.5-1PGDG.rhel7 will be an update
--> Processing Dependency: postgresql14-libs(x86-64) = 14.5-1PGDG.rhel7 for package: postgresql14-server-14.5-1PGDG.rhel7.x86_64
--> Processing Dependency: postgresql14(x86-64) = 14.5-1PGDG.rhel7 for package: postgresql14-server-14.5-1PGDG.rhel7.x86_64
--> Running transaction check
---> Package postgresql14.x86_64 0:14.2-1PGDG.rhel7 will be updated
---> Package postgresql14.x86_64 0:14.5-1PGDG.rhel7 will be an update
---> Package postgresql14-libs.x86_64 0:14.2-1PGDG.rhel7 will be updated
---> Package postgresql14-libs.x86_64 0:14.5-1PGDG.rhel7 will be an update
--> Finished Dependency Resolution
Dependencies Resolved
===============================================================================================================================
Package Arch Version Repository Size
===============================================================================================================================
Updating:
postgresql14-server x86_64 14.5-1PGDG.rhel7 pgdg14 5.5 M
Updating for dependencies:
postgresql14 x86_64 14.5-1PGDG.rhel7 pgdg14 1.5 M
postgresql14-libs x86_64 14.5-1PGDG.rhel7 pgdg14 270 k
Transaction Summary
===============================================================================================================================
Upgrade 1 Package (+2 Dependent packages)
Total download size: 7.3 M
Downloading packages:
No Presto metadata available for pgdg14
(1/3): postgresql14-libs-14.5-1PGDG.rhel7.x86_64.rpm | 270 kB 00:00:02
(2/3): postgresql14-14.5-1PGDG.rhel7.x86_64.rpm | 1.5 MB 00:00:02
(3/3): postgresql14-server-14.5-1PGDG.rhel7.x86_64.rpm | 5.5 MB 00:00:02
-------------------------------------------------------------------------------------------------------------------------------
Total 1.6 MB/s | 7.3 MB 00:00:04
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
Warning: RPMDB altered outside of yum.
Updating : postgresql14-libs-14.5-1PGDG.rhel7.x86_64 1/6
Updating : postgresql14-14.5-1PGDG.rhel7.x86_64 2/6
Updating : postgresql14-server-14.5-1PGDG.rhel7.x86_64 3/6
Cleanup : postgresql14-server-14.2-1PGDG.rhel7.x86_64 4/6
Cleanup : postgresql14-14.2-1PGDG.rhel7.x86_64 5/6
Cleanup : postgresql14-libs-14.2-1PGDG.rhel7.x86_64 6/6
Verifying : postgresql14-14.5-1PGDG.rhel7.x86_64 1/6
Verifying : postgresql14-server-14.5-1PGDG.rhel7.x86_64 2/6
Verifying : postgresql14-libs-14.5-1PGDG.rhel7.x86_64 3/6
Verifying : postgresql14-14.2-1PGDG.rhel7.x86_64 4/6
Verifying : postgresql14-libs-14.2-1PGDG.rhel7.x86_64 5/6
Verifying : postgresql14-server-14.2-1PGDG.rhel7.x86_64 6/6
Updated:
postgresql14-server.x86_64 0:14.5-1PGDG.rhel7
Dependency Updated:
postgresql14.x86_64 0:14.5-1PGDG.rhel7 postgresql14-libs.x86_64 0:14.5-1PGDG.rhel7
Complete!
CentOS (RedHat계열) - Using rpm
## CentOS Using rpm
## syntax : rpm -Uvh {Pacakge}
rpm -Uvh postgresql14-libs-14.5-1PGDG.rhel7.x86_64.rpm \
postgresql14-server-14.5-1PGDG.rhel7.x86_64.rpm \
postgresql14-14.5-1PGDG.rhel7.x86_64.rpm
[root@centos ~]# rpm -Uvh postgresql14-libs-14.5-1PGDG.rhel7.x86_64.rpm \
> postgresql14-server-14.5-1PGDG.rhel7.x86_64.rpm \
> postgresql14-14.5-1PGDG.rhel7.x86_64.rpm
Preparing... ################################# [100%]
Updating / installing...
1:postgresql14-libs-14.5-1PGDG.rhel################################# [ 17%]
2:postgresql14-14.5-1PGDG.rhel7 ################################# [ 33%]
3:postgresql14-server-14.5-1PGDG.rh################################# [ 50%]
Cleaning up / removing...
4:postgresql14-server-14.2-1PGDG.rh################################# [ 67%]
5:postgresql14-14.2-1PGDG.rhel7 ################################# [ 83%]
6:postgresql14-libs-14.2-1PGDG.rhel################################# [100%]
Ubuntu (Debian계열) - Using apt
## Ubuntu Using apt
apt install -y --only-upgrade postgresql*
root@ubuntu:~# apt install -y --only-upgrade postgresql*
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
... 중략 ...
Suggested packages:
postgresql-doc-14
Recommended packages:
sysstat
The following packages will be upgraded:
libpq5 postgresql-14 postgresql-client-14 postgresql-client-common postgresql-common
5 upgraded, 0 newly installed, 0 to remove and 93 not upgraded.
Need to get 18.5 MB of archives.
After this operation, 364 kB of additional disk space will be used.
Get:1 http://apt.postgresql.org/pub/repos/apt jammy-pgdg/main amd64 libpq5 amd64 14.5-1.pgdg22.04+1 [172 kB]
Get:2 http://apt.postgresql.org/pub/repos/apt jammy-pgdg/main amd64 postgresql-common all 242.pgdg22.04+1 [230 kB]
Get:3 http://apt.postgresql.org/pub/repos/apt jammy-pgdg/main amd64 postgresql-client-common all 242.pgdg22.04+1 [92.2 kB]
Get:4 http://apt.postgresql.org/pub/repos/apt jammy-pgdg/main amd64 postgresql-client-14 amd64 14.5-1.pgdg22.04+1 [1,615 kB]
Get:5 http://apt.postgresql.org/pub/repos/apt jammy-pgdg/main amd64 postgresql-14 amd64 14.5-1.pgdg22.04+1 [16.4 MB]
Fetched 18.5 MB in 7s (2,841 kB/s)
Preconfiguring packages ...
(Reading database ... 75389 files and directories currently installed.)
Preparing to unpack .../libpq5_14.5-1.pgdg22.04+1_amd64.deb ...
Unpacking libpq5:amd64 (14.5-1.pgdg22.04+1) over (14.2-1.pgdg22.04+1+b1) ...
Preparing to unpack .../postgresql-common_242.pgdg22.04+1_all.deb ...
Leaving 'diversion of /usr/bin/pg_config to /usr/bin/pg_config.libpq-dev by postgresql-common'
Unpacking postgresql-common (242.pgdg22.04+1) over (241.pgdg22.04+1) ...
Preparing to unpack .../postgresql-client-common_242.pgdg22.04+1_all.deb ...
Unpacking postgresql-client-common (242.pgdg22.04+1) over (241.pgdg22.04+1) ...
Preparing to unpack .../postgresql-client-14_14.5-1.pgdg22.04+1_amd64.deb ...
Unpacking postgresql-client-14 (14.5-1.pgdg22.04+1) over (14.2-1.pgdg22.04+1+b1) ...
Preparing to unpack .../postgresql-14_14.5-1.pgdg22.04+1_amd64.deb ...
Unpacking postgresql-14 (14.5-1.pgdg22.04+1) over (14.2-1.pgdg22.04+1+b1) ...
Setting up postgresql-client-common (242.pgdg22.04+1) ...
Setting up libpq5:amd64 (14.5-1.pgdg22.04+1) ...
Setting up postgresql-client-14 (14.5-1.pgdg22.04+1) ...
Setting up postgresql-common (242.pgdg22.04+1) ...
Setting up postgresql-14 (14.5-1.pgdg22.04+1) ...
Processing triggers for man-db (2.10.2-1) ...
Processing triggers for libc-bin (2.35-0ubuntu3) ...
needrestart is being skipped since dpkg has failed
Ubuntu (Debian계열) - Using dpkg
## Ubuntu Using dpkg
dpkg -i libpq5_14.5-1.pgdg22.04+1_amd64.deb \
postgresql-14_14.5-1.pgdg22.04+1_amd64.deb \
postgresql-client-14_14.5-1.pgdg22.04+1_amd64.deb \
postgresql-client-common_242.pgdg22.04+1_all.deb \
postgresql-common_242.pgdg22.04+1_all.deb
root@ubuntu:~# dpkg -i libpq5_14.5-1.pgdg22.04+1_amd64.deb \
postgresql-14_14.5-1.pgdg22.04+1_amd64.deb \
postgresql-client-14_14.5-1.pgdg22.04+1_amd64.deb \
postgresql-client-common_242.pgdg22.04+1_all.deb \
postgresql-common_242.pgdg22.04+1_all.deb
(Reading database ... 75389 files and directories currently installed.)
Preparing to unpack libpq5_14.5-1.pgdg22.04+1_amd64.deb ...
Unpacking libpq5:amd64 (14.5-1.pgdg22.04+1) over (14.2-1.pgdg22.04+1+b1) ...
Preparing to unpack postgresql-14_14.5-1.pgdg22.04+1_amd64.deb ...
Unpacking postgresql-14 (14.5-1.pgdg22.04+1) over (14.2-1.pgdg22.04+1+b1) ...
Preparing to unpack postgresql-client-14_14.5-1.pgdg22.04+1_amd64.deb ...
Unpacking postgresql-client-14 (14.5-1.pgdg22.04+1) over (14.2-1.pgdg22.04+1+b1) ...
Preparing to unpack postgresql-client-common_242.pgdg22.04+1_all.deb ...
Unpacking postgresql-client-common (242.pgdg22.04+1) over (241.pgdg22.04+1) ...
Preparing to unpack postgresql-common_242.pgdg22.04+1_all.deb ...
Leaving 'diversion of /usr/bin/pg_config to /usr/bin/pg_config.libpq-dev by postgresql-common'
Unpacking postgresql-common (242.pgdg22.04+1) over (241.pgdg22.04+1) ...
Setting up libpq5:amd64 (14.5-1.pgdg22.04+1) ...
Setting up postgresql-client-common (242.pgdg22.04+1) ...
Setting up postgresql-common (242.pgdg22.04+1) ...
Setting up postgresql-client-14 (14.5-1.pgdg22.04+1) ...
Setting up postgresql-14 (14.5-1.pgdg22.04+1) ...
Processing triggers for libc-bin (2.35-0ubuntu3) ...
Processing triggers for man-db (2.10.2-1) ...
Using Source File
최초 설치방법과 같은 방법으로 업그레이드 버전 PostgreSQL을 설치합니다.
## [postgres] 업그레이드 버전 PostgreSQL 압축해제 (Version : 14.5)
tar -zxvf postgresql-14.5.tar.gz
mkdir PostgreSQL_14.5
cd PostgreSQL_14.5
## [postgres] 업그레이드 버전 PostgreSQL 설정 (Version : 14.5)
/home/postgres/postgresql-14.5/configure --prefix=/home/postgres/PostgreSQL_14.5 --without-readline --without-zlib
make && make install
설치가 완료되면, 기동 중인 PostgreSQL을 종료한 후 디렉토리명을 변경하여 다시 기동 합니다.
## [postgres] 기동중인 PostgreSQL 종료 (Version : 14.2)
/home/postgres/PostgreSQL_Engine/bin/pg_ctl -D /home/postgres/PostgreSQL_Data stop
## [postgres] PostgreSQL 14.2 엔진 디렉토리명 변경
mv /home/postgres/PostgreSQL_Engine /home/postgres/PostgreSQL_Engine_bak
## [postgres] PostgreSQL 14.5 엔진 디렉토리명 변경
mv /home/postgres/PostgreSQL_14.5 /home/postgres/PostgreSQL_Engine
## [postgres] PostgreSQL 기동 (Version : 14.5)
/home/postgres/PostgreSQL_Engine/bin/pg_ctl -D /home/postgres/PostgreSQL_Data start
[postgres@centos ~]$ /home/postgres/PostgreSQL_Engine/bin/pg_ctl -D /home/postgres/PostgreSQL_Data start
waiting for server to start....2022-09-07 16:45:57.626 KST [32167] LOG: starting PostgreSQL 14.5 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-44), 64-bit
2022-09-07 16:45:57.627 KST [32167] LOG: listening on IPv6 address "::1", port 5432
2022-09-07 16:45:57.627 KST [32167] LOG: listening on IPv4 address "127.0.0.1", port 5432
2022-09-07 16:45:57.629 KST [32167] LOG: listening on Unix socket "/tmp/.s.PGSQL.5432"
2022-09-07 16:45:57.632 KST [32168] LOG: database system was shut down at 2022-09-07 16:45:33 KST
2022-09-07 16:45:57.633 KST [32167] LOG: database system is ready to accept connections
done
server started
4. PostgreSQL 업그레이드 확인
CentOS (RedHat계열)
## CentOS
yum list installed | grep postgresql
rpm -qa | grep postgresql
[root@centos ~]# yum list installed | grep postgresql
postgresql14.x86_64 14.5-1PGDG.rhel7 @pgdg14
postgresql14-libs.x86_64 14.5-1PGDG.rhel7 @pgdg14
postgresql14-server.x86_64 14.5-1PGDG.rhel7 @pgdg14
[root@centos ~]# rpm -qa | grep postgresql
postgresql14-server-14.5-1PGDG.rhel7.x86_64
postgresql14-libs-14.5-1PGDG.rhel7.x86_64
postgresql14-14.5-1PGDG.rhel7.x86_64
## [postgres] PostgreSQL 버전 확인 및 데이터 확인
su - postgres
psql -c "SELECT VERSION()"
psql -c "SELECT * FROM exem_tab"
[root@centos ~]# su - postgres
-bash-4.2$ psql -c "SELECT VERSION()"
version
---------------------------------------------------------------------------------------------------------
PostgreSQL 14.5 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-44), 64-bit
(1 row)
-bash-4.2$ psql -c "SELECT * FROM exem_tab"
no | in_date
----+-------------------------------
1 | 2022-09-07 15:18:28.445582+09
2 | 2022-09-07 15:18:30.516606+09
3 | 2022-09-07 15:18:32.743652+09
(3 rows)
Ubuntu (Debian계열)
## Ubuntu
apt list --installed | grep postgresql
dpkg --get-selections | grep postgresql
root@ubuntu:~# apt list --installed | grep postgresql
postgresql-14/jammy-pgdg,now 14.5-1.pgdg22.04+1 amd64 [installed]
postgresql-client-14/jammy-pgdg,now 14.5-1.pgdg22.04+1 amd64 [installed]
postgresql-client-common/jammy-pgdg,now 242.pgdg22.04+1 all [installed]
postgresql-common/jammy-pgdg,now 242.pgdg22.04+1 all [installed]
root@ubuntu:~# dpkg --get-selections | grep postgresql
postgresql-14 install
postgresql-client-14 install
postgresql-client-common install
postgresql-common install
## [postgres] PostgreSQL 버전 확인 및 데이터 확인
su - postgres
psql -c "SELECT VERSION()"
psql -c "SELECT * FROM exem_tab"
root@ubuntu:~# su - postgres
postgres@ubuntu:~$ psql -c "SELECT VERSION()"
version
------------------------------------------------------------------------------------------------------------------------------
PostgreSQL 14.5 (Ubuntu 14.5-1.pgdg22.04+1) on x86_64-pc-linux-gnu, compiled by gcc (Ubuntu 11.2.0-19ubuntu1) 11.2.0, 64-bit
(1 row)
postgres@ubuntu:~$ psql -c "SELECT * FROM exem_tab"
no | in_date
----+-------------------------------
1 | 2022-09-07 05:51:04.669347+00
2 | 2022-09-07 05:51:08.348246+00
3 | 2022-09-07 05:51:12.156604+00
(3 rows)
Source File
## PostgreSQL Process 확인
ps -ef | grep postgres
[postgres@centos ~]$ ps -ef | grep postgres
postgres 32167 1 0 16:45 ? 00:00:00 /home/postgres/PostgreSQL_Engine/bin/postgres -D /home/postgres/PostgreSQL_Data
postgres 32169 32167 0 16:45 ? 00:00:00 postgres: checkpointer
postgres 32170 32167 0 16:45 ? 00:00:00 postgres: background writer
postgres 32171 32167 0 16:45 ? 00:00:00 postgres: walwriter
postgres 32172 32167 0 16:45 ? 00:00:00 postgres: autovacuum launcher
postgres 32173 32167 0 16:45 ? 00:00:00 postgres: stats collector
postgres 32174 32167 0 16:45 ? 00:00:00 postgres: logical replication launcher
## [postgres] PostgreSQL 버전 확인 및 데이터 확인
/home/postgres/PostgreSQL_Engine/bin/psql -c "SELECT VERSION()"
/home/postgres/PostgreSQL_Engine/bin/psql -c "SELECT * FROM exem_tab"
[postgres@centos ~]$ export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/postgres/PostgreSQL_Engine/lib
[postgres@centos ~]$ /home/postgres/PostgreSQL_Engine/bin/psql -c "SELECT VERSION()"
version
---------------------------------------------------------------------------------------------------------
PostgreSQL 14.5 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-44), 64-bit
(1 row)
[postgres@centos ~]$ /home/postgres/PostgreSQL_Engine/bin/psql -c "SELECT * FROM exem_tab"
no | in_date
----+-------------------------------
1 | 2022-09-07 16:36:38.275461+09
2 | 2022-09-07 16:36:42.46244+09
3 | 2022-09-07 16:36:45.221768+09
(3 rows)
📢 psql 접속 시libpq.so.5
라이브러리 관련 에러발생
** 문제error while loading shared libraries: libpq.so.5: cannot open shared object file: No such file or directory
** 해결방법
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/postgres/PostgreSQL_Engine/lib
Upgrade PostgreSQL Minor Version on Windows | 목차 |
Windows에서 Minor Version Upgrade는 두 가지 방법이 존재합니다.
첫 번째로, PostgreSQL 설치 파일(exe File)
을 통한 Minor Upgrade가 있습니다. PostgreSQL Install 과정과 동일하며(PostgreSQL Setup - Installation > Install PostgreSQL on Windows - 설치 관리자 참고), 설치 관리자가 기존에 설치된 폴더를 인식하여 업그레이드를 진행합니다. 서비스 종료 → 서비스 삭제 → 업그레이드 → 서비스 등록 → 서비스 시작 순으로 업그레이드를 수행합니다. 따라서, 업그레이드(설치) 소요시간만큼 다운타임이 발생합니다.
두 번째로, Binary File(Zip Archive)
를 통한 Minor Upgrade가 있습니다. 이 방법도 PostgreSQL Install 과정과 동일하며(PostgreSQL Setup - Installation > Install PostgreSQL on Windows - Binary File 참고), 압축해제 후 폴더명만 변경하여 업그레이드를 할 수 있습니다. 압축해제 → 서비스 종료 → 폴더명 변경 → 서비스 시작 순으로 업그레이드를 수행하며, 업그레이드에 다운타임을 최소한으로 가져갈 수 있습니다.
이번 단락에서는 Windows Platform에서 Minor Version Upgrade에 대한 내용을 다루며, 아래 순서로 기술됩니다. 세부내용으로 ①설치 파일 준비, ②PostgreSQL 설치 여부 확인, ③PostgreSQL 업그레이드, ④PostgreSQL 업그레이드 확인 순으로 기술됩니다. Windows 10 Platform에서 PostgreSQL 14.2를 14.5로 업그레이드하는 내용을 기술합니다.
업그레이드 성공 여부를 확인하기 위해 postgres Database에 exem_tab 테이블을 조회합니다.
-- 테스트 테이블 생성
CREATE TABLE exem_tab ( no integer ,
in_date text not null default now() ) ;
INSERT INTO exem_tab VALUES (1) ;
INSERT INTO exem_tab VALUES (2) ;
INSERT INTO exem_tab VALUES (3) ;
1. 설치 파일 준비
업그레이드 방법에 따라서 설치 파일을 준비합니다.
업그레이드 방법 | 설명 |
exe File | www.enterprisedb.com/downloads/postgres-postgresql-downloads에서 최신 Minor 버전에 대해서만 다운로드 가능. |
Binary File | https://www.enterprisedb.com/download-postgresql-binaries에서 최신 Minor 버전에 대해서만 다운로드 가능. |
2. PostgreSQL 설치 여부 확인
## 명령 프롬프트에서 아래 명령줄 수행
CMD> C:\PostgreSQL_Engine\bin\psql -U postgres -c "SELECT VERSION()"
CMD> C:\PostgreSQL_Engine\bin\psql -U postgres -c "SELECT * FROM exem_tab"
C:\Users\admin>C:\PostgreSQL_Engine\bin\psql -U postgres -c "SELECT VERSION()"
postgres 사용자의 암호:
version
------------------------------------------------------------
PostgreSQL 14.2, compiled by Visual C++ build 1914, 64-bit
(1개 행)
C:\Users\admin>C:\PostgreSQL_Engine\bin\psql -U postgres -c "SELECT * FROM exem_tab"
postgres 사용자의 암호:
no | in_date
----+-------------------------------
1 | 2022-09-08 10:45:51.975903+09
2 | 2022-09-08 10:46:04.124803+09
3 | 2022-09-08 10:46:09.153465+09
(3개 행)
3. PostgreSQL 업그레이드
설치관리자
Step 1. PostgreSQL 설치 파일을 실행합니다.(파일명 : postgresql-14.5-1-windows-x64.exe
Step 2. 설치할 구성요소를 선택(or 선택해제) 후 Next 버튼 클릭
- PostgreSQL Server : PostgreSQL Database Server 포함
- pgAdmin4 : PostgreSQL GUI Management Tool 포함
- Stack Builder : Management, integration, Migration, Replication, Geospatial 등 포함
- Command Line Tools : psql, pg_dump, pg_restore와 같은 Command Line Interface 포함
Step 3. 기존에 설치된 PostgreSQL이 존재하며, 이를 Upgrade 할지 여부 확인. Next 버튼 클릭
Step 4. 기존에 사용중이던 PostgreSQL Data 경로 및 Port를 사용할 건지 확인. Next 버튼 클릭
Step 5. Step 3부터 Step 5까지 설정 한 내용 확인 후 Next 버튼 클릭
Step 6. Next 버튼 클릭 하여 설치 실행
Step 7. PostgreSQL Server가 기동 중일 경우 경고창 발생. OK를 클릭하여 계속 Upgrade 진행
📢 PostgreSQL Server가 기동 중일 때 Minor Upgrade 순서
PostgreSQL Server 서비스 종료 → PostgreSQL Server 서비스 삭제 → 경고창 발생 → OK → Upgrade 시작 → Upgrade 완료 → PostgreSQL Server 서비스 등록 → PostgreSQL Server 서비스 기동
Step 8. Stack Builder를 실행할지 여부 선택 후 Finish 버튼 클릭
Binary File
Step 1. 다운로드한 Binary File 압축 해제(파일명 : postgresql-14.5-1-windows-x64-binaries.zip)
Step 2. PostgreSQL 서비스 종료(명령 프롬프트 관리자 권한으로 실행)
## 등록되어 있는 서비스 종료 (GUI환경에서 postgresql-x64-14 서비스 종료)
CMD> NET STOP postgresql-x64-14
C:\Users\admin\Desktop>NET STOP postgresql-x64-14
postgresql-x64-14 서비스를 멈춥니다..
postgresql-x64-14 서비스를 잘 멈추었습니다.
Step 3. PostgreSQL Engine 폴더명 변경
기존에 운영중이던 폴더명 변경 : PostgreSQL_Engine → PostgreSQL_Engine_bak
업그레이드 버전 폴더명 변경 : pgsql → PostgreSQL_Engine
Step 4. PostgreSQL 서비스 시작(명령 프롬프트 관리자 권한으로 실행)
## 등록되어 있는 서비스 시작 (GUI환경에서 postgresql-x64-14 서비스 시작)
CMD> NET START postgresql-x64-14
C:\Users\admin\Desktop>NET START postgresql-x64-14
postgresql-x64-14 서비스를 시작합니다..
postgresql-x64-14 서비스가 잘 시작되었습니다.
4. PostgreSQL 업그레이드 확인
## 명령 프롬프트에서 아래 명령줄 수행
CMD> C:\PostgreSQL_Engine\bin\psql -U postgres -c "SELECT VERSION()"
CMD> C:\PostgreSQL_Engine\bin\psql -U postgres -c "SELECT * FROM exem_tab"
C:\Users\admin>C:\PostgreSQL_Engine\bin\psql -U postgres -c "SELECT VERSION()"
postgres 사용자의 암호:
version
------------------------------------------------------------
PostgreSQL 14.5, compiled by Visual C++ build 1914, 64-bit
(1개 행)
C:\Users\admin>C:\PostgreSQL_Engine\bin\psql -U postgres -c "SELECT * FROM exem_tab"
postgres 사용자의 암호:
no | in_date
----+-------------------------------
1 | 2022-09-08 10:45:51.975903+09
2 | 2022-09-08 10:46:04.124803+09
3 | 2022-09-08 10:46:09.153465+09
(3개 행)
기획 및 글 | 기술기획팀
'엑셈 경쟁력 > DB 인사이드' 카테고리의 다른 글
DB 인사이드 | PostgreSQL Setup - Migration & Upgrade 성능 및 주의사항 (0) | 2022.11.23 |
---|---|
DB 인사이드 | PostgreSQL Setup - Major Upgrade (0) | 2022.09.28 |
DB 인사이드 | PostgreSQL Setup - Installation (0) | 2022.08.25 |
DB 인사이드 | PostgreSQL Setup - Version & Utility (0) | 2022.08.25 |
DB 인사이드 | MySQL Architecture - 8. InnoDB : 동작 원리 (3) | 2022.07.27 |
댓글