우분투(Ubuntu) 환경에 패키지(Package)로 PostgreSQL 설치하기

PostgreSQL(이하 postgresql)은 BSD(berkeley software distribution) 또는 MIT 라이선스(license)와 유사한 postgresql license가 적용된 오픈소스(open source) 소프트웨어로 배포(release) 됩니다.

postgresql은 확장 가능성 및 표준 준수를 강조하는 객체-관계형 데이터베이스 관리 시스템(ORDBMS, object-relational database management system)으로, 트랜잭션(transaction)과 ACID(Atomicity, Consistency, Isolation, Durability)를 지원합니다.

macOS 서버의 경우 postgresql이 기본 데이터베이스(database)이며, MS Windows와 리눅스(linux)에서도 이용할 수 있습니다.

이 포스트에서는 우분투(ubuntu) 환경에서 패키지(package)로 postgresql을 설치하는 방법을 소개합니다.

선행조건(PREREQUISITE)

  • ubuntu 환경에 Java가 설치되어 있어야 합니다.
  • 방화벽 설정이 필요합니다.
    • TCP 5432 포트가 개방되어 있어야 합니다.

Java 설치 방법은 우분투(Ubuntu) 환경에 OpenJDK(Java) 설치하기 포스트를 참고하시기 바랍니다.

방화벽 설정 방법은 우분투(Ubuntu) 환경에 방화벽(Firewalld) 설치 및 설정하기 포스트를 참고하시기 바랍니다.

테스트 환경(TEST ENVIRONMENT)

  • VMware® Workstation 15 Pro (15.5.1 build-15018445)
  • Ubuntu 18.04.3 LTS (Bionic Beaver) Server (64-bit)
  • PostgreSQL 11.5 (Ubuntu 11.5-3.pgdg18.04+1)
  • OpenJDK 1.8.0_222

요약(SUMMARY)

  1. postgresql debian packages repository 설정
  2. apt 명령어로 postgresql 설치
  3. postgresql 설정
  4. systemctl 명령어로 postgresql 실행

내용(CONTENTS)

1. postgresql debian packages repository 추가

$ sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt/ `lsb_release -cs`-pgdg main" > /etc/apt/sources.list.d/pgdg.list'

2. postgresql debian packages repository key 추가

$ sudo wget -q https://www.postgresql.org/media/keys/ACCC4CF8.asc -O - | sudo apt-key add -

3. apt install 명령어로 postgresql 설치

$ sudo apt update && sudo apt install postgresql postgresql-contrib -y

4. postgresql 설정

일반 사용자 계정으로 진행합니다.

4.1. PGDATA 디렉터리(directory) 생성

$ export LINDAREX_WORKSPACE=${HOME}/workspace
$ mkdir -p ${LINDAREX_WORKSPACE}/pgsql/data

4.2. PGDATA directory 경로(path) 추가

$ sudo vi /etc/profile
----------------------------------------
export LINDAREX_WORKSPACE=/home/ubuntu/workspace
export PGDATA=${LINDAREX_WORKSPACE}/pgsql/data
----------------------------------------

위 workspace(LINDAREX_WORKSPACE) directory path는 사용자 계정에 따라 다릅니다.

수정 내역 적용을 위해 아래 명령어를 입력합니다.

$ source /etc/profile

4.3. Database 초기화

  • 아래 명령어로 Database 초기화를 실행합니다.
$ /usr/lib/postgresql/11/bin/initdb

4.4. postgresql 설정 수정

  • 아래 설정으로 외부 접속이 가능하게 합니다.
$ sudo vi /etc/postgresql/11/main/postgresql.conf
----------------------------------------
listen_addresses = '*'
----------------------------------------
  • 아래 설정으로 모든 사용자(비밀번호 사용)가 접속이 가능하게 합니다.
$ sudo vi /etc/postgresql/11/main/pg_hba.conf
----------------------------------------
## Add at the bottom
host    all             all             0.0.0.0/0               password
----------------------------------------

5. systemctl 명령어로 postgresql 서비스(service) 관리

5.1. postgresql service 설정 반영

$ sudo systemctl daemon-reload

5.2. postgresql service 시작

$ sudo systemctl start postgresql.service

5.3. postgresql service 중지

$ sudo systemctl stop postgresql.service

5.4. postgresql service 재시작

$ sudo systemctl restart postgresql.service

5.5. postgresql service 설정 재적용

$ sudo systemctl reload postgresql.service

5.6. postgresql service 상태 조회

$ sudo systemctl status postgresql.service

5.7. postgresql service 활성화(부팅 시 자동 시작)

$ sudo systemctl enable postgresql.service

5.8. postgresql service 비활성화

$ sudo systemctl disable postgresql.service

5.9. postgresql service 및 관련 프로세스 모두 중지

$ sudo systemctl kill postgresql.service

마무리(CONCLUSION)

ubuntu 환경에 package로 postgresql 설치를 완료했습니다.

2020년 3월 기준, open source 소프트웨어인 postgresql은 세계 점유율 4위로, open source 프로젝트 커뮤니티 기반의 database 중에는 1위이며, 대량 Insert 처리와 DW(data warehouse)에 강한 모습을 보이면서 국내에서도 점유율이 증가하는 추세입니다.

postgresql은 pgAdmin, psql cli(command line interface, 명령 줄 인터페이스) 등으로 postgresql을 관리하며, 실제 기능적인 면에서 Oracle과 유사한 것이 많기 때문에, Oracle 사용자들이 가장 쉽게 테스트하고 적용할 수 있습니다.

더 자세한 내용은 아래 참고 페이지를 확인해 주시기 바랍니다.

database ranking에 대한 자세한 정보는 https://db-engines.com/en/ranking, https://db-engines.com/en/ranking_trend를 확인해 주시기 바랍니다.

data warehouse에 대한 자세한 정보는 https://ko.wikipedia.org/wiki/데이터_웨어하우스를 확인해 주시기 바랍니다.

참고(REFERENCES)

Leave a comment