PostgreSQL 사용 가이드
    • PDF

    PostgreSQL 사용 가이드

    • PDF

    Article Summary

    PostgreSQL 설치형 서비스

    설치 방법 및 패키지

    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을 사용하려면 네이버 클라우드 플랫폼[Financial]에서 제공하는 콘솔 및 리소스 등을 이용하기 위해 네이버 클라우드 플랫폼의 계정이 필요합니다.

    네이버 클라우드 플랫폼[Financial]에 가입하면 모든 서비스를 이용하실 수 있으며, 사용한 서비스에 대해서만 요금이 청구됩니다.
    이미 계정이 있는 경우에는 해당 단계를 건너뛸 수 있습니다.

    • 포털로 이동합니다.
    • 오른쪽 상단에 [회원가입] 버튼을 클릭하여 [회원가입] 페이지로 이동합니다.
    • 서비스 이용 약관 및 개인정보수집이용에 대한 안내 문구를 확인하고 동의합니다.
    • 법인 및 담당자 정보를 입력합니다.
    • 결제수단은 직접입금과 자동이체를 선택하실 수 있습니다.
    • 가입한 ID/PW를 통해 로그인하고 결제수단 선택 및 등록을 완료합니다.
    • 담당자의 가입정보 및 금융회원여부 검증 후 승인이 완료되면 SSL VPN 계정이 발급되어 메일로 전송됩니다.
    • SSL VPN Client 접속 툴을 설치하고 실행하여, 발급된 SSL VPN 계정으로 로그인합니다.
    • Financial 콘솔은 Financial 포털에 로그인하여 Console 버튼을 클릭하거나, 도메인(www.fin-ncloud.com)을 직접 입력하여 접속 후 사용가능합니다.
    참고

    포털에서 가입한 계정으로 콘솔에서도 동일하게 사용이 가능합니다.
    네이버 클라우드 플랫폼[Financial] 서비스를 사용하기 위해서는 반드시 SSL VPN 접속을 통해 이용가능합니다.

    서버 생성하기

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

    PostgreSQL 이미지 서버 생성

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

    콘솔 접속

    • 콘솔에 접속하여 Services > Compute > Server 메뉴로 이동합니다.
    • 서버를 생성하려면 서버 생성 버튼을 클릭합니다.

    서버 이미지 선택

    • 필터 조건을 [모든 이미지]로 설정합니다.
    • 원하는 OS 버전에 해당하는 PostgreSQL를 선택합니다.
    • PostgreSQL에 대한 공지를 확인한 후 [확인] 을 클릭합니다.
    • [다음] 을 클릭합니다.

    서버 설정

    • 원하는 VPC를 선택합니다.
    • 원하는 Subnet을 선택합니다.
    • 원하는 서버 타입을 선택합니다.
      • 일부 서버 스펙은 부팅 디스크 타입에 따라 지원되지 않을 수 있습니다.
      • 필요한 목적에 따라 Compact와 Standard 서버 타입을 선택하세요.
    • 요금제는 월요금제 또는 시간 요금제 중 선택할 수 있습니다.
    • 서버 이름을 입력합니다.
      • 고객이 서버를 구별하기 위한 명칭으로, 중복해서 사용할 수 없습니다.
    • Network Interface를 추가합니다.
    • 서버 설정을 마친 후 [다음] 버튼을 클릭합니다.

    인증키 설정

    [새로운 인증키 생성]

    • 새로운 인증키 생성을 선택합니다.
    • 인증키 이름을 입력합니다.
    • [인증키 생성 및 저장] 버튼을 클릭합니다.
      • 새로운 인증키를 발급받습니다.
      • 저장 후 인증키는 고객의 PC 안전한 위치에 보관해주세요.
      • 인증키는 최초의 관리자 비밀번호를 가져올 때 이용됩니다.
    • [다음] 버튼을 클릭합니다.

    [보유하고 있는 인증키 이용]

    • 보유하고 있는 인증키 이용을 선택합니다.

    네트워크 접근 설정

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

    최종 확인

    설정한 내용을 최종 확인합니다.

    • 서버 이미지, 서버, 인증키, 네트워크, ACG가 정상적으로 설정되었는지 확인합니다.
    • 최종 확인 후에는 서버 생성 버튼을 클릭합니다.
      • 서버가 생성되기까지는 수 분이 소요됩니다.

    생성한 서버를 리스트에서 확인합니다. 생성한 서버가 목록에 표시됩니다.

    접속 환경 설정하기

    SSL VPN 접속

    Financial Cloud의 서비스를 사용하기 위해서는 필수적으로 SSL VPN을 접속해야만 합니다. SSL VPN을 사용하기 위해서는 아래와 같이 수행해야합니다. 자세한 사항은 네이버 클라우드 플랫폼의 SSL VPN 가이드를 참고 부탁 드립니다.

    1. 콘솔에 접속하여, Services > Security > SSL VPN 메뉴로 이동합니다.

    2. SSL VPN 생성 버튼을 클릭합니다.

    3. 스펙 및 인증 방식을 선택합니다.

    4. 인증 방식에 따라 사용자를 설정합니다.

    서버 접속하기

    서버 관리자 비밀번호 확인하기

    • 서버 목록에서 접속하려는 서버를 선택하고, 서버 관리 및 설정 변경관리자 비밀번호 확인을 클릭합니다.
    • 마우스로 파일을 끌고 오거나 여기를 클릭하세요. 버튼을 통해 서버 생성 시에 등록한 인증키 파일을 첨부합니다.
    • 서버 생성 시에 다운로드한 인증키 파일은 안전한 위치에 보관하시기 바랍니다.
    • [비밀번호 확인] 버튼을 클릭하면 첨부된 파일에서 비밀번호 가져오기를 실행합니다.
    • 서버 이름, 관리자, 비밀번호를 확인하고 [확인] 버튼을 클릭합니다.

    터미널을 통한 서버 접속

    터미널을 이용하여 서버에 네이버 클라우드 플랫폼 PostgreSQL에 접속이 가능합니다.

    서버 이미지 생성 이후

    • 서버 생성 이후 바로 사용하지 않을 경우 보안 위험을 예방하기 위해 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)도 동일하게 설정하는 것을 권장합니다.

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

    • 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  #포트 번호 변경
    
    • 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  
      
    • 변경된 Listen 포트 번호 확인

     shell> netstat -tunlp | grep post
    

    로컬에서 PostgreSQL DB 접속 방법

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

    원격 서버(웹 서버 또는 다른 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 변경 방법

    • 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
      
    • 신규 디렉토리 생성

     mkdir -p /var/lib/pgsql/NEW_PGDATA
    
    • 디렉토리 오너 및 권한 변경(700 필수)
     chown -R postgres:postgres /var/lib/pgsql/NEW_PGDATA
     chmod 700 -R /var/lib/pgsql/NEW_PGDATA
    
    • postgres 유저의 .bash_profile 환경 변수 변경
     vi /var/lib/pgsql/.bash_profile
     변경 전 : PGDATA=/var/lib/pgsql/9.4/data
     변경 후 : PGDATA=/var/lib/pgsql/NEW_PGDATA
    
    • 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
      
    • 새로운 Postgres datadir로 데이터 이전
      설치하신 version에 맞게 아래 내용 중 ${version} 부분을 9.4, 13, 14 중 하나로 치환합니다.

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

     rm /var/lib/pgsql/NEW_PGDATA/data/postmaster.opts
    
    • 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이 생성된 서버 반납 시 아래와 같은 절차 이후 반납하는 것을 권장합니다.

    • PostgreSQL에서 저장한 데이터를 백업하여 다운로드 후 별도 보관
     Shell> sudo su - postgres
     Shell> pg_dumpall > '저장될 dump file명'
    
    • PostgreSQL 서버 정지
    • PostgreSQL이 저장된 데이터 디렉터리 삭제
      • 예: rm -rf /var/lib/pgsql
    • 네이버 클라우드 플랫폼 콘솔에서 정지 -> 반납 순서로 반납 진행.

    연관 정보 바로가기

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


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

    What's Next
    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.