PostgreSQL 서버 이미지 사용 가이드
    • PDF

    PostgreSQL 서버 이미지 사용 가이드

    • PDF

    Article Summary

    환경에서 이용 가능합니다.

    사용하기 전에

    Q. PostgreSQL은 어떤 서비스인가요?

    • 원하는 CentOS 버전에 PostgreSQL을 몇 가지 설정과 클릭만으로 간편하게 구축할 수 있는 Basic Install 기능만을 지원하는 서비스입니다. 이에 관련하여 제공된 설치 외의 부분에 대해서는 기술 지원을 제공하지 않고 있습니다.
    • 'PostgreSQL'은 확장 가능성 및 표준 준수를 강조하는 오픈소스 객체-관계형 데이터베이스(ORDBMS)인 PostgreSQL을 이용하고 있습니다.

    Q. DB 서버를 생성하기전에 미리 준비해야 할 것들이 있나요?

    • PostgreSQL DB는 현재 네이버 클라우드 플랫폼 내부에서만 접근이 가능하므로, DB 서버에 접근할 애플리케이션 서버 역시 네이버 클라우드 플랫폼 내부에 있어야만 합니다.
    • 어떤 서비스에서 DB를 사용하고, 사용량이 얼마나 될지를 미리 예측하여, 서버 타입을 산정하셔야 합니다.

    Q. DB 서버로 생성할 수 있는 서버 타입에는 어떤 것들이 있나요?

    • PostgreSQL에서는 고객의 용도에 맞게 여러 서버 타입 중 하나를 선택할 수 있습니다.
    서버 타입용도
    2 vCPU, 4GB 메모리가장 작은 서버 타입으로 개발, 테스트 DB, 개인 블로그 등에 적합
    4 vCPU, 8GB 메모리작은 서버 타입으로 작은 커뮤니티 또는 개인 쇼핑몰 구축 등에 적합
    8 vCPU, 16GB 메모리일반적인 서버 타입으로 스타트업 홈페이지, 서비스 DB로 적합
    16 vCPU, 32GB 메모리가장 큰 서버 타입으로 게임 DB, 쇼핑몰 DB 또는 중형 서비스 DB로 적합

    Q. DB 서버 생성 절차는 어떻게 되나요?
    콘솔에 접속한 후 다음의 단계를 통해 DB 서버를 생성할 수 있습니다.

    1. 콘솔 접속: 네이버 클라우드 플랫폼에서 제공하는 콘솔에 접속합니다.
    2. 서버 설정: 스토리지 종류, 서버 타입, 서버 이름 등을 정합니다.
    3. 인증키 설정: 보유하고 있는 인증키를 활용하거나, 없다면 새로운 인증키를 생성합니다.
    4. 방화벽 설정: 보유하고 있는 ACG를 선택하거나 신규 ACG를 생성합니다.
    5. 최종 확인: 서버 타입 등의 서버 설정 정보와 사용자가 선택한 요금제 정보 등을 최종 확인하고 DB 서버를 생성합니다.

    Q. DB 서버가 생성될 때 어떤 운영 체제가 설치되며 제공되는 디스크의 크기는 얼마입니까?

    • 운영체제는 Linux입니다.
    • PostgreSQL의 경우 운영체제를 위한 기본 디스크는 50GB가 제공되며 DB 서버 요금에 포함되어 있습니다.
    • 운영체제가 설치되는 기본 디스크는 용량 변경이 불가능합니다.

    Q. 데이터베이스 스토리지는 무엇인가요?

    • 최초 DB 생성 시 HDD와 SSD 중 선택 가능하며, 이에 따라 다른 요금이 적용됩니다.
    • 서비스를 위한 DB인 경우 가급적 고성능 I/O가 제공되는 SSD 타입을 권장합니다.

    Q. PostgreSQL의 라이선스는 무엇인가요?

    PostgreSQL 설치형 서비스 소개

    네이버클라우드 PostgreSQL 설치형 서비스의 개념과 기본 구조를 설명합니다.

    PostgreSQL 소개

    PostgreSQL은 전 세계에서 가장 안정적이고 진보적인 오픈 소스로 평가받는 DBMS입니다. 완벽한 트랜잭션(ACID)과 높은 동시성 제어(MVCC)를 지원하여 효과적인 비용 관리가 가능합니다.

    네이버클라우드 PostgreSQL 설치형 서비스 구성

    설치형 서비스

    네이버클라우드에서 지원하는 PostgreSQL 설치형 서비스의 경우 기본적인 9.4, 13.3, 14.3 버전 설치를 지원하며 PostgreSQL Server가 Startup된 상태로 제공됩니다.
    이와 관련하여 DB 설치 외의 부분에 대해서는 기술 지원을 제공하지 않습니다.

    설치 방법 및 패키지

    PostgreSQL 설치의 경우 Source Compile / RPM / Binary 설치 방법이 있으며,
    네이버클라우드에서는 Normal Install 방법인 RPM 설치 이미지를 제공합니다.

    RPM 설치에는 PostgreSQL(postgresql.org)에서 공식적으로 제공하는 .repo 파일을 사용하며 Repo에서 제공하는 Latest Version을 기본으로 서버 이미지에 포함하여 제공합니다.

    다음은 기본 설정으로 설치되는 패키지 목록입니다.

    • PostgreSQL 9.4

      • postgresql94-server
      • postgresql94
      • postgresql94-libs
    • PostgreSQL 13.3

      • postgresql13-server
      • postgresql13
      • postgresql13-libs
      • postgresql13-contrib
    • PostgreSQL 14.3

      • postgresql14-server
      • postgresql14
      • postgresql14-libs
      • postgresql14-contrib

    설치 디렉터리

    항목위치
    DATADIR ($PGDATA)/var/lib/pgsql/9.4/data
    /var/lib/pgsql/13/data
    /var/lib/pgsql/14/data
    LOGFILE$PGDATA/pg_log
    postgresql.conf$PGDATA/postgresql.conf
    pg_hba.conf$PGDATA/pg_hba.conf
    pg_default 테이블 스페이스의 물리적 위치$PGDATA/base
    pg_global 테이블 스페이스의 물리적 위치$PGDATA/global

    원격 접속을 위한 환경 설정 방법(CentOS 6/7 공통)

    PostgreSQL은 최초 설치 시 localhost(127.0.0.1)에서만 접근을 허용하기 때문에 원격 접속이 불가능합니다. 따라서 네이버클라우드 내의 PostgreSQL 설치형 이미지에서 원격 접속을 허용하려면 다음과 같이 환경 설정 파일을 변경해야 합니다.

    • postgresql.conf

      기본적인 PostgreSQL DB 파리미터 설정 파일입니다. PostgreSQL의 Listen Address 기본 설정은 Localhost(127.0.0.1)만 허용하므로 외부에서 접근할 수 없습니다. 따라서 이 설정을 IP *(전체)로 변경한 후 서버를 재시작해야 합니다. 기본 포트 번호는 5432이며 필요 시 변경할 수 있습니다.

      vi /var/lib/pgsql/9.4/data/postgresql.conf
      * listen_addresses = '*'  # 모든 IP에 대한 remote 접속 허용합니다.
      * port = 5432             # 원하는 port번호를 설정합니다.
      
    • pg_hba.conf

      host-based authentication의 약자로, 인증 관련 설정 파일입니다. HOST, DATABASE, USER, ADDRESS, METHOD 정보로 구성됩니다.

      기본적으로 아래와 같은 설정이 적용되어 있으므로 별도로 내용을 수정할 필요는 없습니다.
      계정에 대한 접근 방식을 비밀번호 방식으로 변경하고 비밀번호를 md5로 암호화하여 전송합니다.

      vi /var/lib/pgsql/9.4/data/pg_hba.conf
      * host    all             all             0.0.0.0/0                 md5
      

    PostgreSQL 설치형 서비스 관리

    PostgreSQL 설치형 서비스에서 관련되는 관리 방법을 설명합니다.

    PostgreSQL 이미지 서버 생성

    PostgreSQL 설치형 서비스로 이미지 서버를 생성하면 PostgreSQL DB설치 및 daemon이 Startup된 상태로 제공됩니다.

    서버 생성

    PostgreSQL 이미지가 설치된 서버를 생성하는 방법을 설명합니다.

    Step 1. 관리콘솔 접근

    서버를 생성하거나 삭제 설정하기 위해 관리콘솔에 접근하려면 네이버 클라우드 플랫폼에서 [콘솔] 을 클릭해 주십시오.

    Step 2. 서버 생성

    1. 콘솔 Services > Compute > Server 메뉴로 이동해 주십시오.

    2. [서버 생성] 을 클릭해 주십시오.

    Step 3. 서버 이미지 선택

    1. 이미지타입 DBMS, DBMS 이미지타입 PostgreSQL을 각각 선택해 주십시오.

    2. 사용할 서버 이미지의 오른편 [다음] 을 클릭해 주십시오.

    Step 4. 서버 설정

    1. 필요한 정보를 설정해 주십시오.

    2. [다음] 을 클릭해 주십시오.

    Step 5. 인증키 설정

    인증키 설정 단계에서는 새로운 인증키를 생성하거나 기존 인증키를 그대로 사용할 수 있습니다.

    1. 처음 사용자는 새로운 인증키 생성을 선택하고 인증키 이름을 입력해 주십시오.

    2. 인증키 생성 및 저장을 클릭하고 다운로드된 인증키 파일(.pem)을 안전한 곳에 저장해 주십시오.

    • 이 파일은 향후 서버의 암호를 만드는 데 사용됩니다.
    • 같은 pem 파일을 사용하더라도 각각의 서버에 모두 다른 암호가 생성됩니다.
    1. [다음] 을 클릭해 주십시오.

    Step 6. 방화벽 설정

    방화벽 설정에서는 ACG(Access Control Group)를 생성하거나 보유 ACG를 선택합니다.

    1. 처음 생성하는 경우는 [ACG 생성] 을 클릭해 주십시오.

    2. ACG 이름을 입력해 주십시오.

    3. ACG 설정에서 프로토콜, 접근 소스, 허용 포트를 입력하고 생성해 주십시오.

    • 접근 소스: 접근을 시도하는 곳의 IP 주소나 IP 주소 대역을 기입합니다.
      예를 들면, 단일 IP 주소의 경우 10.64.51.205만 입력하고, 10.64.51.XXX 대역에서 모든 접근이 필요할 경우 10.64.51.0/24를 입력합니다. 내부 Private IP 주소가 NAT 방식을 통해 외부로 나갈 경우는 Public IP 주소를 입력해야 합니다.

    • 허용포트: 포트를 개별로 오픈할 경우 필요한 포트 번호를 허용 포트(서비스)에 입력합니다.
      필요한 포트가 여러 개일 경우 항목을 추가하여 입력할 수 있습니다. 모든 포트를 오픈할 경우 1-65535를 입력하면 됩니다. (단, 이 경우 서버는 보안이 취약해지므로 가급적 단일 포트(예:5432) 입력을 권장드립니다. 더불어 단일 포트를 지정하실 때는 ssh 디폴트 포트(22) 또는 포트 포워딩 포트를 반드시 추가 등록하셔야 합니다.)

    1. 오른쪽의 [추가] 를 클릭해 주십시오.

    2. 설정을 확인해 주십시오.

    3. [생성] 을 클릭해 주십시오.

    Step 7. 최종 확인

    위 단계까지 진행하고 난 후, pem key 파일이 내 컴퓨터의 안전한 곳에 보관되어 있고 ACG 설정을 기억하고 있어야 합니다. pem 키가 없다면 생성한 서버에 접근할 수 없으니 특별히 유의해 주십시오.

    1. [서버 생성] 을 클릭해 주십시오.

    2. 서버가 생성될 때까지 대기해 주십시오.

    서버 초기 설정 절차

    서버를 생성한 후 서버에 접근하기 위해서는 공인 IP 주소를 설정하거나 포트 포워딩을 설정해야 합니다. GUI(pgAdmin) Tool을 이용하려면 반드시 공인 IP 주소를 설정해야 합니다.

    공인 IP 주소 설정

    위에 생성한 서버에 외부에서 접근하기 위해서는 공인 IP 주소 설정이 필요합니다.

    1. Server > Public IP 메뉴로 이동해 주십시오.

    2. [공인 IP 신청] 을 클릭해 주십시오.

    • 공인 IP 주소는 보유하고 계신 서버의 개수만큼 신청할 수 있습니다.
    1. 생성된 서버를 선택해 주십시오.

    2. [다음] 을 클릭해 주십시오.

    3. [생성] 을 클릭해 주십시오.

    4. 일정 시간(분) 후 IP 주소가 할당됩니다.

    • 정상적인 공인 IP 주소가 할당되면 터미널 프로그램을 이용해 49.50.172.79:22로 해당 서버에 바로 접근할 수 있습니다.

    터미널 접근을 위한 포트 포워딩 설정

    포트 포워딩 정보에 안내된 서버 접속용 공인 IP 주소를 이용해 서버에 접속하기 위해서는 포트 포워딩을 설정해야 합니다.

    1. Server > Server 메뉴로 이동해 주십시오.

    2. 서버를 선택하고 상단의 [포트 포워딩 설정] 을 클릭해 주십시오.

    3. 아래 화면의 포트 포워딩 설정에서 ssh 접속을 위한 외부 포트를 등록해 주십시오.

    4. 외부 포트 등록 후 [추가] 를 클릭해 주십시오.

    5. [적용] 을 클릭해 주십시오.

    • 위 포트 포워딩 설정을 통해 postgresql 서버 이름에 49.50.172.79:1234 설정 정보로 접근할 수 있습니다.

    서버 비밀번호 확인하기

    1. 원하는 서버를 선택해 주십시오.

    2. [서버 관리 및 설정 변경] 메뉴에서 [관리자 비밀번호 확인] 을 클릭해 주십시오.

    3. 파일을 끌어 넣거나 클릭해 내 컴퓨터에 저장된 pem 파일을 업로드해 주십시오.

    4. [비밀번호 확인] 을 클릭해 주십시오.

    5. 최초 생성 시에 제공되는 관리자 비밀번호가 표시됩니다.

    • 최초 생성 시에 제공되는 관리자 비밀번호를 사용하여 최초 로그인한 후에는 향후 관리를 위해 서버에서 비밀번호를 변경할 수 있습니다.

    터미널을 이용한 접속

    터미널을 이용하여 서버에 네이버 클라우드 플랫폼 PostgreSQL에 접속하는 방법을 설명합니다.

    공인 IP 주소를 통한 접속

    database-database-6-1_122

    1. 서버의 접속 정보를 입력해 주십시오.
    • PORT: 기본 포트 번호(22)
    • 공인 IP: 발급받은 공인 IP 주소(예: 49.50.172.79)
    1. [열기] 를 클릭해 주십시오.

    database-6-1-123_ko

    1. [예] 를 클릭하여 접속해 주십시오.

    database-database-6-1_124

    1. 계정명 root를 입력해 주십시오.

    2. 관리자 비밀번호에서 확인한 비밀번호를 입력해 주십시오.

    포트 포워딩을 통한 접속

    database-database-6-1_125

    1. 서버의 접속 정보를 입력해 주십시오.
    • PORT: 포트 포워딩으로 설정한 포트 번호(예: 1234)
    • 공인 IP: 포트 포워딩 화면에 안내된 서버 접속용 공인 IP 주소(예: 49.50.172.79)
    1. [열기] 를 클릭해 주십시오.

    database-6-1-126_ko

    1. [예] 를 클릭하여 접속해 주십시오.

    database-database-6-1_127

    1. 계정명 root를 입력해 주십시오.

    2. 관리자 비밀번호에서 확인한 비밀번호를 입력해 주십시오.

    서버 이미지 생성 이후

    • 서버 생성 이후 바로 사용하지 않을 경우 보안 위험을 예방하기 위해 PostgreSQL Daemon ShutDown을 권장합니다.

    • 생성된 PostgreSQL의 경우 비밀번호가 설정되지 않았기 때문에 반드시 비밀번호를 설정합니다.

    PostgreSQL 기동/정지 방법

    PostgreSQL DB 기동 및 정지는 아래와 같은 명령어로 실행합니다. (root 계정에서 수행)

    -- CentOS 6
    shell> service postgresql-9.4 start
    shell> service postgresql-9.4 stop
    
    -- CentOS 7
    shell> systemctl start postgresql-9.4
    shell> systemctl stop postgresql-9.4
    
    -- CentOS 7
    shell> systemctl start postgresql-13 
    shell> systemctl stop postgresql-13
    
    -- CentOS 7
    shell> systemctl start postgresql-14 
    shell> systemctl stop postgresql-14
    

    DB 구동 상태 및 Listen 포트 확인 방법

    DB 구동 상태는 아래와 같은 명령어로 확인합니다. (root 계정에서 수행) 명령어 실행 결과 CentOS 6/7 공통으로 running이라는 단어가 보여야 합니다.

    -- CentOS 6
    Shell> service postgresql-9.4 status
    -- CentOS 7
    Shell> systemctl status postgresql-9.4
    -- PostgreSQL 13.3 
    Shell> systemctl status postgresql-13 
    -- PostgreSQL 14.3 
    Shell> systemctl status postgresql-14
    

    Listen 포트는 아래와 같은 명령어로 확인합니다. 명령어 실행 결과 5432 포트가 listen 상태여야 합니다.

    Shell> netstat -tunlp | grep post
    

    PostgreSQL 비밀번호 변경 방법

    PostgreSQL Password 정책에 따라 초기 비밀번호는 지정되지 않습니다. 최초 접속 시 반드시 비밀번호를 변경해야 합니다. 비밀번호를 변경하는 명령어는 다음과 같습니다.

    Shell> sudo su - postgres
    Shell> psql
    postgres=> alter user postgres with password '패스워드';
    

    PostgreSQL DB port 변경 방법

    PostgreSQL 접속 시 사용되는 포트 번호5432는 사용자들에게 잘 알려진 포트 번호이므로 보안 취약점이 존재합니다. 따라서 자신만의 고유한 포트 번호를 정해서 사용하는 것을 권장합니다. (예: 15432) 추가로 ACG(Access Control Group)의 허용 포트 번호(예: 15432)도 동일하게 설정하는 것을 권장합니다.

    포트 번호는 아래 명령어를 사용하여 변경합니다.

    1. conf 설정 변경
    -- PostgreSQL 9.4 
    vi /var/lib/pgsql/9.4/data/postgresql.conf port = 15432  #포트 번호 변경 
    
    -- PostgreSQL 13.3 
    vi /var/lib/pgsql/13/data/postgresql.conf port = 15432  #포트 번호 변경 
    
    -- PostgreSQL 14.3 
    vi /var/lib/pgsql/14/data/postgresql.conf port = 15432  #포트 번호 변경
    
    1. PostgreSQL 재시작

      # root 계정
      -- CentOS 6
      -- PostgreSQL 9.4 
      shell> service postgresql-9.4 restart
      
      -- CentOS 7
      -- PostgreSQL 9.4 
      shell> systemctl restart postgresql-9.4 
      -- PostgreSQL 13.3 
      shell> systemctl restart postgresql-13 
      -- PostgreSQL 14.3 
      shell> systemctl restart postgresql-14  
      
    2. 변경된 Listen 포트 번호 확인

      shell> netstat -tunlp | grep post
      

    로컬에서 PostgreSQL DB 접속 방법

    Shell> sudo su - postgres
    Shell> psql
    postgres=# \h  >> 도움말 보기
    postgres=# \q  >> 나가기
    

    만약 포트번호를 변경했다면 아래처럼 접속할 수 있습니다.

    Shell> psql -p 15432
    또는
    Shell> export PGPORT=15432
    Shell> psql
    

    원격 서버(웹 서버 또는 다른 DB)에서 PostgreSQL 접속 방법

    Shell> sudo su - postgres
    Shell> psql -h IP주소 -p 5432 -U 유저명 -d DB명
           Password for user : 비밀번호 입력
    postgres=# \h  >> 도움말 보기
    postgres=# \q  >> 나가기
    
    참고

    기본적으로 원격 접속을 위한 환경이 설정되어 있어야 합니다. 보다 자세한 내용은 본 문서의 postgresql.conf 파일 수정 방법을 참조해 주십시오.

    GUI(pgAdmin) Tool을 이용한 PostgreSQL 접속 방법

    본인 PC의 Windows 환경에서 PostgreSQL 서버에 접속해야 하므로, 추가로 PostgreSQL 서버에 공인 IP 주소를 할당해야 합니다. Public IP 메뉴에서 공인IP 신청을 선택 후, 적용 서버 선택에서 해당 서버를 선택합니다.

    pgAdmin Tool 관련 보다 자세한 내용은 아래 주소에서 확인할 수 있습니다.

    참고

    기본적으로 원격 접속을 위한 환경이 설정되어 있어야 합니다. 보다 자세한 내용은 본 문서의 postgresql.conf 파일 수정 방법을 참조해 주십시오.

    기본 Data Directoty 변경 방법

    1. postgres daemon stop

      -- cent 6
      service postgresql-9.4 stop
      
      -- cent 7
      -- PostgreSQL 9.4 
      systemctl stop postgresql-9.4 
      
      -- PostgreSQL 13.3 
      shell> systemctl stop postgresql-13 
      
      -- PostgreSQL 14.3 
      shell> systemctl stop postgresql-14
      
    2. 신규 디렉토리 생성

      mkdir -p /var/lib/pgsql/NEW_PGDATA
      
    3. 디렉토리 오너 및 권한 변경(700 필수)

      chown -R postgres:postgres /var/lib/pgsql/NEW_PGDATA
      chmod 700 -R /var/lib/pgsql/NEW_PGDATA
      
    4. postgres 유저의 .bash_profile 환경 변수 변경

      vi /var/lib/pgsql/.bash_profile
      변경 전 : PGDATA=/var/lib/pgsql/9.4/data
      변경 후 : PGDATA=/var/lib/pgsql/NEW_PGDATA
      
    5. pstgres service 설정 변경

    • 설치하신 version에 맞게 아래 내용 중 ${version} 부분을 9.4, 13, 14 중 하나로 치환합니다.

      -- cent 6
      # root 유저에서 수행
      vi /etc/init.d/postgresql-${version}
      >> PGDATA와 PGLOG 디렉토리 경로를 변경합니다.
      변경 전 : PGDATA=/var/lib/pgsql/{version}/data
      변경 후 : PGDATA=/var/lib/pgsql/NEW_PGDATA/data
      
      변경 전 : PGLOG=/var/lib/pgsql/{version}/pgstartup.log
      변경 전 : PGLOG=/var/lib/pgsql/NEW_PGDATA/pgstartup.log
      
      -- cent 7
      # root 유저에서 수행
      vi /usr/lib/systemd/system/postgresql-${version}.service
      변경 전 : Environment=PGDATA=/var/lib/pgsql/${version}/data/
      변경 후 : Environment=PGDATA=/var/lib/pgsql/NEW_PGDATA/data
      
    1. 새로운 Postgres datadir로 데이터 이전
    • 설치하신 version에 맞게 아래 내용 중 ${version} 부분을 9.4, 13, 14 중 하나로 치환합니다.

      # postgres 유저에서 수행
      mv /var/lib/pgsql/${version}/data /var/lib/pgsql/NEW_PGDATA/
      
    1. postmaster.opts 파일을 삭제

      rm /var/lib/pgsql/NEW_PGDATA/data/postmaster.opts
      
    2. postgres daemon reload & start

    • 설치하신 version에 맞게 아래 내용 중 ${version} 부분을 9.4, 13, 14 중 하나로 치환합니다.

      -- cent 6
      service postgresql-${version} reload
      service postgresql-${version} start
      -- cent 7
      systemctl daemon-reload
      systemctl start postgresql-${version}
      

    PostgreSQL 이미지 서버 반납

    네이버클라우드에서 PostgreSQL이 생성된 서버 반납 시 아래와 같은 절차 이후 반납하는 것을 권장합니다.

    1. PostgreSQL에서 저장한 데이터를 백업하여 다운로드 후 별도 보관

      Shell> sudo su - postgres
      Shell> pg_dumpall > '저장될 dump file명'
      
    2. PostgreSQL 서버 정지

    3. PostgreSQL이 저장된 데이터 디렉터리 삭제

      • 예: rm -rf /var/lib/pgsql
    4. 네이버클라우드 콘솔에서 정지 -> 반납 순서로 반납 진행

    연관 리소스

    아래 공식 메뉴얼에서 연관 리소스를 확인할 수 있습니다.


    이 문서가 도움이 되었습니까?

    Changing your password will log you out immediately. Use the new password to log back in.
    First name must have atleast 2 characters. Numbers and special characters are not allowed.
    Last name must have atleast 1 characters. Numbers and special characters are not allowed.
    Enter a valid email
    Enter a valid password
    Your profile has been successfully updated.