PostgresQL #.1 설치 및 구동

개요

PostgreSQL은 확장 가능성 및 표준 준수를 강조하는 객체-관계형 데이터베이스 관리 시스템(ORDBMS)의 하나이다. BSD 허가권으로 배포되며 오픈소스 개발자 및 관련 회사들이 개발에 참여하고 있다. 데이터베이스 서버로서 주요 기능은 데이터를 안전하게 저장하고 다른 응용 소프트웨어로부터의 요청에 응답할 때 데이터를 반환하는 것이이다. 소규모의 단일 머신 애플리케이션에서부터 수많은 동시 접속 사용자가 있는 대형의 인터넷 애플리케이션(또는 데이터 웨어하우스용)에 이르기까지 여러 부하를 관리할 수 있으며 macOS 서버의 경우 PostgreSQL은 기본 데이터베이스이다. 마이크로소프트 윈도우, 리눅스(대부분의 배포판에서 제공됨)용으로도 이용 가능하다. PostgresQL의 전신은 Ingres DB로 실제 프로젝트의 공식 명칭은 “post-Ingres” 데이터베이스이다.

설치

Postgresql 사이트에서 yum 리포지터리 RPM을 다운로드 받을 수 있다.

이렇게 제공된다. 아래 텍스트를 복사-붙여넣기 하여 설치하면 된다.
 # repository RPM 설치
 # 설치하면 postgresql repo 파일이 /etc/yum.repos.d 아래 생성된다.
[root@centos7:/root/]# yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
 # PostgresQL 설치
[root@centos7:/root/]# yum install -y postgresql12-server
 
 # 이렇게 설치 해도 된다.
[root@centos7:/root/]# yum install -y postgresql12-*

초기화
initdb를 이용해 데이터 디렉토리 생성 및 지정이 필요하다.
postgresql 서버를 설치하면 postgres 계정이 자동으로 생성되고 DBMS의 최고 권한은 이 postgres 계정이 가지게 된다. 서버 프로세스의 구동부터 모든 작업이 postgres 계정으로 진행되어야 하므로 디렉토리 생성등을 할 경우 postgres 계정에 모든 권한을 부여해야 한다.

 # DB 초기화 등 작업

 # 초기화 :  /var/lib/pgsql/12/data 가 데이터 디렉토리로 '자동'지정된다.
[postgres@centos7:/home/]$ /usr/pgsql-12/bin/initdb 
이 데이터베이스 시스템에서 만들어지는 파일들은 그 소유주가 "postgres" id로
지정될 것입니다. 또한 이 사용자는 서버 프로세스의 소유주가 됩니다.

데이터베이스 클러스터는 "ko_KR.UTF-8" 로케일으로 초기화될 것입니다.
기본 데이터베이스 인코딩은 "UTF8" 인코딩으로 설정되었습니다.
initdb: "ko_KR.UTF-8" 로케일에 알맞은 전문검색 설정을 찾을 수 없음
기본 텍스트 검색 구성이 "simple"(으)로 설정됩니다.

자료 페이지 체크섬 기능 사용 하지 않음

이미 있는 /var/lib/pgsql/12/data 디렉터리의 액세스 권한을 고치는 중 ...완료
하위 디렉터리 만드는 중 ...완료
사용할 동적 공유 메모리 관리방식을 선택하는 중 ... posix
max_connections 초기값을 선택하는 중 ...100
기본 shared_buffers를 선택하는 중... 128MB
기본 지역 시간대를 선택 중 ... Asia/Seoul
환경설정 파일을 만드는 중 ...완료
부트스트랩 스크립트 실행 중 ... 완료
부트스트랩 다음 초기화 작업 중 ... 완료
자료를 디스크에 동기화 하는 중 ... 완료

initdb: 경고: 로컬 접속용 "trust" 인증을 설정 함
이 값을 바꾸려면, pg_hba.conf 파일을 수정하든지,
다음번 initdb 명령을 사용할 때, -A 옵션 또는 --auth-local,
--auth-host 옵션을 사용해서 인증 방법을 지정할 수 있습니다.

작업완료. 이제 다음 명령을 이용해서 서버를 가동 할 수 있습니다:

    ./pg_ctl -D /var/lib/pgsql/12/data -l 로그파일 start
# 초기화 : -pgdata= 로 지정한 디렉토리가 지정된다. 
 # 이경우 지정한 디렉토리의 소유자는 postgres이어야 하고 모든 권한을 가져야 한다.
[root@centos7:/home/]# mkdir /home/postgres
[root@centos7:/home/]# chown -R postgres /home/postgres
 # 쉘에 주의하자 여기까지는 root 이다.
[postgres@centos7:/home/]$ mkdir /home/postgres/data
[postgres@centos7:/home/]$ /usr/pgsql-12/bin/initdb  --pgdata=/home/postgres/data

/usr/pgsql-12/bin/postgresql-12-setup initdb
systemctl enable postgresql-12
systemctl start postgresql-12

구동
initdb 작업 결과의 명령대로 구동하면 된다.

[postgres@centos7:/home/]$ /usr/pgsql-12/bin//pg_ctl -D /var/lib/pgsql/12/data -l /var/lib/pgsql/12/data/pgsql.log start
서버를 시작하기 위해 기다리는 중.... 완료
서버 시작됨

확인

[root@host0 bin]# netstat -nltp |grep postgres
tcp        0      0 127.0.0.1:5432          0.0.0.0:*               LISTEN      96383/postgres

YUM 기본 패키지

‘필수’ 의미의 기본이 아니라 이래저래 많이 사용되는 패키지들이다.
필요할 때마다 하나씩 선택해서 설치해도 되고, 귀찮음을 줄이기 위해 일단 설치 해도 되는 패키지들이다.

sudo yum -y install  wget vim setup gdb setuptool nfs-utils autofs rdate gcc iotop ntp curl traceroute unzip lsof tree net-tools nmap it compat-libcap1 gcc-C++ glibc glibc-devel ksh libaio compat-libstdc++-33 libaio-devel libgcc libstdc++ libstdc++-devel libXi libXi libXtst libXtst make sysstat xorg-x11-apps xrdp epel-release maven telnet bind-utils nmap htop tmux

YUM (Yellow-dog Updater Modified)

1. 개요
Yum은 Yellow dog Updater, Modified의 약자로 RPM 기반의 시스템을 위한 자동 업데이터 겸 패키지 설치/제거 도구이다. 듀크 대학교의 Linux@DUKE 프로젝트의 일부분으로 개발되었다. yumex 같은 GUI 기반 확장 도구도 있다.
Yum 이전에 있었던 Yellowdog Updater (YUP) 도구를 대체하며, 듀크 대학교 물리학부에서 사용되었던 레드햇 리눅스 시스템 관리를 위해서 등장하였다. 그 이후로 페도라, CentOS 등 많은 RPM 기반 리눅스 배포판에서 사용되었다. 레드햇의 패키지 관리자 up2date에서도 Yum 저장소에 접근할 수 있다.
현재 GNU 일반 공중 사용 허가서 버전 2 이상으로 사용 가능하다.
Yum은 페도라 22 버전 이후부터 DNF로 전환되고 있다. 그러나 여전히 Yum의 전신인 rpm, 그리고 후신인 DNF와 같이 사용 가능하다.

rpm 패키지들에 대해 검색, 다운로드, 설치 기능을 편리하게 해 주는 것이 가장 큰 역할이지만, 가장 큰 장점은 의존성 1‘A’라는 패키지 설치를 위해 ‘가’ 라는 패키지가 필요할 경우 ‘A’에 대한 설치 명령만 수행해도 ‘가’ 패키지를 함께 다운로드하고 설치 해 준다. 문제를 자동으로 해결 해준다는 점이다.

2. Repository 파일
/etc/yum.repo.d/ 아래에 존재한다.
※ CentOS Base repository 예

[CentOS-repo]
name=CentOS-7- Base
 # 리포지터리 이름 (단지 이름이다.) 
baseurl=http://mirrorlist.centos.org
 # 패키지를 다운로드할 수 있는 미러 목록이 포함된 URL 또는 저장소 자체 지정
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os&infra=$infra
 # 리포지터리 주소
enabled=1
 # 활성화 여부
gpgcheck=0
 # gpg key 검증 여부
 # 리포지터리에 있는 패키지 파일이 정상적인 파일인지확인한다. (변조 여부 등)
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
 #gpg key 위치 

3. 사용법 : 검색 관련

[HOSTNAME:/root]# yum clean all
 # Yum cache 삭제

[HOSTNAME:/root]# rm -rf /var/cache/yum
 # yum clean all 명령의 에러 발생 등의 경우

[HOSTNAME:/root]# yum repolist
 # /etc/yum.repo.d/ 아래의 모든 리포지터리 정보를 갱신한다.

[HOSTNAME:/root]# yum search PACKAGE_NAME
 # PACKAGE_NAME 이라는 이름을 포함한 패키지를 검색한다.

[HOSTNAME:/root]# yum provides LIBRARY_NAME
 # LIBRARY_NAME 이라는 라이브러리를 포함한 패키지를 검색한다.

[HOSTNAME:/root]# yum list 
 # 패키지 리스트를 출력한다.

 [HOSTNAME:/root]#  yum list installed 
 # 현재 설치된 패키지 리스트를 출력한다.

[HOSTNAME:/root]#  yum list PACKAGE_FULL_NAME --show duplicate
 # PACKAGE_FULL_NAME 패키지의 중복 여부 정보를 출력한다.

[HOSTNAME:/root]# yum list PACKAGE-VERSION
  # PACKAGE 란 이름의 패키지 중 VERSION 에 해당하는 버전의 목록을 출력한다. 

4. 사용법 : 패키지 설치

[HOSTNAME:/root]# yum install PACKAGE_NAME
 # PACKAGE_NAME 패키지를 설치한다.

[HOSTNAME:/root]# yum install PACKAGE_NAME*
 # PACKAGE_NAME으로 시작하는 이름의 패키지들을 설치한다.

[HOSTNAME:/root]# yum install PACKAGE_1 PACKAGE_2 PACKAGE_3
 # PACKAGE_1, PACKAGE_2, PACKAGE_3 세개의 패키지를 설치한다.

[HOSTNAME:/root]# yum -y install PACKAGE_NAME
 #  명령어 수행 시 사용자의 확인이 필요한 경우('진짜로 설치 하시겠습니까? 등 ')자동으로 y 가 입력되는 것과 같다

5. 사용법 : RPM 패키지 설치

 [HOSTNAME:/root]# yum install /tmp/PACKAGE_1.rpm
 # /tmp/PACKAGE_1.rpm 을 설치한다. 의존성 패키지가 필요한경우 리포지터리에서 자동으로 다운로드 하고 함께 설치 된다.

 [HOSTNAME:/root]# yum install /tmp/*
 # /tmp 디렉토리 내에 모든 rpm 을 설치한다.

※ yum 명령은 관리자 권한(root)으로 수행 해야 한다.