개요
rpm 같은 패키지를 이용하여 설치를 할 경우 각종 기본 값, 행동에 해당하는 것들을 알기 어렵기 때문에 소스로 설치하여
작동 환경 등을 알아 본다. 운영에서 소스를 컴파일하여 설치하지는 않음
패키지 설치는 일반계정의 홈 하위 디렉터리에 설치를 한다. 문제되면 한방에 지우기 편하기 때문.
삽질하기가 용이해짐
설치
소스다운로드
wget https://ftp.postgresql.org/pub/source/v12.3/postgresql-12.3.tar.gz
tar xvfz postgresql-12.3.tar.gz
컴파일 및 설치
컴파일을 할때는 configure 를 통해 사용자가 기본설정을 바꾸거나 추가할 수 있다. 여기서는 다음을 추가 한다.
- prefix
- with-python
(https://www.postgresql.org/docs/12/install-procedure.html)
# --with-python 을 위해 python-dev 설치
$ sudo apt install python-dev
# configure
$ ./configure --prefix=/home/chlee/workspace/postgresql-12.3 --with-python
$ make
$ make install
초기 데이터베이스 생성
# postgresql 소유자가 기본값은 postgres 이며 따라서 계정을 생서해야 하지만
# 여기서는 chlee 라는 계정으로 생성할 것이기 때문에 -U chlee 옵션을 사용한다.
$ initdb -E UTF-8 -D /home/chlee/workspace/postgresql-12.3/data -U chlee
The files belonging to this database system will be owned by user "chlee".
This user must also own the server process.
The database cluster will be initialized with locale "ko_KR.UTF-8".
initdb: could not find suitable text search configuration for locale "ko_KR.UTF-8"
The default text search configuration will be set to "simple".
Data page checksums are disabled.
fixing permissions on existing directory /home/chlee/workspace/postgresql-12.3/data ... ok
creating subdirectories ... ok
selecting dynamic shared memory implementation ... posix
selecting default max_connections ... 100
selecting default shared_buffers ... 128MB
selecting default time zone ... Asia/Seoul
creating configuration files ... ok
running bootstrap script ... ok
performing post-bootstrap initialization ... ok
syncing data to disk ... ok
initdb: warning: enabling "trust" authentication for local connections
You can change this by editing pg_hba.conf or using the option -A, or
--auth-local and --auth-host, the next time you run initdb.
Success. You can now start the database server using:
pg_ctl -D /home/chlee/workspace/postgresql-12.3/data -l logfile start
rotate 로그 설정하기
# vi $POSTGRES_HOME/data/postgresql.conf
log_destination = 'stderr'
logging_collector = on
log_directory = '/home/chlee/workspace/postgresql-12.3/log'
log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log'
log_file_mode = 0600
log_truncate_on_rotation = on
log_rotation_age = 1d
log_rotation_size = 10MB
외부 접속 및 인증 방법 설정
# vi $POSTGRES_HOME/data/pg_hba.conf
# local DATABASE USER METHOD [OPTIONS]
# host DATABASE USER ADDRESS METHOD [OPTIONS]
# hostssl DATABASE USER ADDRESS METHOD [OPTIONS]
# hostnossl DATABASE USER ADDRESS METHOD [OPTIONS]
# unix socket
local all all md5
# IPv4 local connections:
host all all 0.0.0.0/0 md5
# vi $POSTGRES_HOME/data/postgresql.conf
# 외부 ip 접속 가능 설정
listen_addresses='*'
시스템 설정
limits.conf 설정
# sudo vi /etc/security/limits.conf
chlee soft nofile 65535
chlee hard nofile 65535
$ ulimit -n 65535 ( .bashrc 등에 등록해서 사용 )
kernel 파라미터 설정
# vi /etc/sysctl.conf
fs.file-max = 65535
# 물리적 메모리를 넘을 수 없음, byte 단위로 기록
kernel.shmmax=1677216
# shared memory 한 block 사이즈
kernel.shmmni=4096
# shmmax / shmmni = shmall
kernel.shmall= 409
$ sudo sysctl -p /etc/sysctl.conf
'Database > Postgresql' 카테고리의 다른 글
postgresql database 관리 (0) | 2020.07.13 |
---|