PostgreSQL 모듈 설치하기
PostgreSQL에 모듈을 설치해 보고 기본 모듈을 EXTENSION 하여 활성화 시켜보자.
PostgreSQL은 다양한 모듈이 있고 직접 모듈을 만들어 사용할 수도 있다. 그래서 PostgreSQL 사용목적, 용도에 맞게 모듈을 만들거나 외부에 있는 모듈을 다운받아 사용할 수 있다.
설치해볼 모듈
해당 글에서는 아래와 같은 모듈을 설치해 볼것이다.
- pg_stat_statements
- pg_cron
- pg_stat_monitor
'pg_stat_monitor` , 'pg_cron' 모듈은 외부 모듈이다.
설치해볼 모듈에 대한 간략한 설명(번역본)
pg_stat_monitor
해당 모듈은 Percona에서 만든 PostgreSQL용 쿼리 성능 모니터링 도구이다. pg_stat_monitor성능 통계를 소집하고 단일 보기 및 히스토그램의 그래픽으로 쿼리 성능 통찰력을 제공해 준다고 한다.
- 아래 공식문서에 더 자세한 내용이 담겨 있다.
pg_cron
pg_cron은 데이터베이스 내에서 확장으로 실행되는 PostgreSQL(10 이상)용 간단한 cron 기반 작업 스케줄러이다. 일반 cron과 동일한 구문을 사용하지만 데이터베이스에서 직접 PostgreSQL 명령을 예약할 수 있다.
- 아래 공식문서에 더 자세한 내용이 담겨 있다.
pg_stat_statements
pg_stat_statements 모듈은 서버에서 실행 되었던 쿼리들에 대한 실행 통계 정보를 보여준다.
이 모듈은 추가적인 공유 메모리를 사용하기 때문에, 이렇게 서버 환경 설정도 바꾸어야 하며, 이것이 적용 하기 위해서는 서버도 다시 실행 해야한다. 물론 이 모듈을 더 이상 사용하지 않아 추가적인 공유 메모리 사용을 하지 않으려고 할 때도 마찮가지다.
- 아래 공식문서에 더 자세한 내용이 담겨 있다.
https://www.postgresql.kr/docs/9.4/pgstatstatements.html
pg_cron 설치
도커 설치일 경우 postgreSQL 컨테이너 내부에서 실행한다.
sudo apt-get update
sudo apt-get install postgresql-contrib
sudo apt-get -y install postgresql-15-cron
pg_stat_monitor 설치
이역시 마찬가지로 도커 설치일 경우 postgreSQL 컨테이너 내부에서 실행한다.
#데비안
sudo apt-get update
sudo apt-get install curl
curl -O https://repo.percona.com/apt/percona-release_latest.generic_all.deb
sudo apt-get install gnupg2 lsb-release ./percona-release_latest.generic_all.deb
sudo percona-release setup ppg15 #ppg<PG 버전>
sudo apt-get install percona-pg-stat-monitor15
#Centos
sudo yum install postgresql-contrib
sudo yum install -y pg_cron_15
sudo yum install -y https://repo.percona.com/yum/percona-release-latest.noarch.rpm
sudo percona-release setup <PRODUCT>
`ppg15` 는 postgreSQL 버전이 15버전대인경우에는 수정할 필요가 없지만 그 이상, 이하 버전일 경우 숫자 부분을 버전에 맞게 바꿔준다.
pg_cron , pg_stat_monitor 일괄설치
데비안 기준
apt-get update && apt-get install -y postgresql-contrib && apt-get install -y postgresql-15-cron && apt-get install -y vim && apt install -y curl && curl -O https://repo.percona.com/apt/percona-release_latest.generic_all.deb && apt install -y gnupg2 lsb-release ./percona-release_latest.generic_all.deb && percona-release setup ppg15 && apt-get install -y percona-pg-stat-monitor15
그냥 위 명령어를 합쳐줬다.
PostgreSQL 모듈 적용하기
설치가 끝났으면 모듈을 적용시켜준다.
나는 Docker 에서 PostgreSQL 환경에서 적용을 시켜줬는데 적용 과정에서 conf파일을 잘못 적용하여 몇번 날려먹은 적이 있다.
그 이유는 단일 모듈에 대한 적용법은 웹에 많지만 복수개의 모듈을 적용할 땐 어떻게 해야 적용하는지 찾기 어려웠다.
- shared_preload_libraries = 'pg_stat_statements','pg_cron','pg_stat_monitor' 이렇게 해줘야 하는건지
- shared_preload_libraries = 'pg_stat_statements'shared_preload_libraries = 'pg_cron'shared_preload_libraries = 'pg_stat_monitor' 이렇게 여러줄로 해줘야 하는건지
- shared_preload_libraries = 'pg_stat_statements,pg_cron,pg_stat_monitor' 이렇게 해야 하는건지 햇갈렸기 때문이다.
운이 안좋게도 정상적인 방법을 가장 마지막에 알게 되었다.
단일 모듈을 적용시킬 때는
shared_preload_libraries = '모듈명'
이고, 여러 모듈을 적용시킬 때는
shared_preload_libraries = '모듈명,모듈명1,모듈명2'
이렇게 해줘야 된다.
적용 방법
Docker 환경일 경우
Docker 환경일 경우에는 아래 명령어로 `postgresql.conf` 에서 수정해주고
vi /var/lib/postgresql/data/postgresql.conf
Linux 환경일 경우
일반 Linux환경일 경우에는 아래 명령어로 `postgresql.conf` 에서 수정해 준다.
vi /etc/postgresql/<version>/main/postgresql.conf
postgresql.conf
그렇게 postgresql.conf 을 편집하는 환경에 진입 한 경우 conf에 있는 내용을 아래 구문처럼 바꿔준다.
shared_preload_libraries = 'pg_stat_statements,pg_cron,pg_stat_monitor'
#shared_preload_libraries 에 주석을 제거하고 수정
cron.database_name = 'postgres'
#해당 설정을 안해줄 경우 기본적으로 'postgres 데이터베이스'에 메타데이터 테이블이 생성될 것임
:wq
Docker 환경일 경우
Docker 환경일 경우에는 아래 명령어로 postgreSQL을 재부팅 시켜주고
exit
docker restart
만약 restart 후 다시 start되지 않으면 아래 링크를 참고하여 해결해본다.
Linux 환경일 경우
일반 Linux환경일 경우에는 아래 명령어로 postgreSQL을 재부팅 시켜준다.
sudo service postgresql restart # Ubuntu/Debian
sudo systemctl restart postgresql # CentOS/RHEL
psql 에서 모듈 EXTENSION
이제 부팅 시 라이브러리 참조 작업을 끝냈으니 EXTENSION 시켜준다.
아래 명령어를 통해 모듈들을 EXTENSION 시켜준다.
psql -U postgres -d <dbname>
CREATE EXTENSION pg_stat_statements;
CREATE EXTENSION pg_cron;
CREATE EXTENSION pg_stat_monitor;
`<dbname>` 에는 해당 모듈을 사용 할 데이터베이스를 입력해준다.
이렇게 모듈을 설치/적용 하는 방법에 대해 알아보았다.
'RDBMS > PostgreSQL' 카테고리의 다른 글
[Docker] PostgreSQL 설치하기 (0) | 2023.05.25 |
---|