[PostgreSQL] PostgreSQL pgAgent 설치 방법
- Database(데이터베이스)
- 2022. 6. 17. 23:59
참고
- https://www.pgadmin.org/docs/pgadmin4/6.10/pgagent_jobs.html
- https://karatejb.blogspot.com/2020/04/postgresql-pgagent-scheduling-agent.html
목적
- PostgreSQL 에서 pgAgent 를 설치하게 되면, pgAgent Job 항목이 생겨서 Job 을 등록 후, 스케줄러를 등록할 수 있다고 합니다.
- PostgreSQL 에서 pgAgent 설치하는 방법에 대해서 정리 진행하였습니다.
PostgreSQL docker-compose.yml 파일
- PostgreSQL 은 로컬에서 설치 하지 않고,
docker-compose.yml
파일로 작성하여 컨테이너로 실행하였습니다. docker-compose.yml
파일 내용은 다음과 같습니다.
version: '3.4'
services:
postgres:
image: postgres
container_name: postgres
environment:
- POSTGRES_USER=test
- POSTGRES_PASSWORD=system
- POSTGRES_DB=abc
ports:
- '5432:5432'
volumes:
- D:/postgresql/data/:/var/lib/postgresql/data
참고로, 저 같은 경우에는
D:/postgresql/data/
디렉터리를 생성하여 볼륨 마운트 진행하였습니다.
- 위
docker-compose.yml
파일이 있는 경로에서 다음과 같이docker-compose up
명령어를 통해 PostgreSQL 컨테이너를 실행할 수 있습니다.
> docker-compose up
볼륨 마운트 확인
- 실제로 PostgreSQL DB 정보가
D:/postgresql/data
디렉터리에 정상적으로 마운트 되었는지 확인 결과, 데이터 파일들이 생성된 것을 확인할 수 있습니다.
pgAdmin 접속 연결 확인
- 앞서, PostgreSQL 은 Docker Container 로 실행하였습니다.
- pgAdmin 을 통해 실제 Database 로 접속 진행합니다.
- 접속이 정상적으로 되는 것을 확인할 수 있습니다.
pgAgent 설치
- 이제 pgAgent 설치하기 위한 선행 작업은 모두 완료하였습니다.
- pgAgent 를 설치하기 위해서는 PostgreSQL 컨테이너 bash 로 접속해야 합니다.
- 윈도우 터미널 혹은 CMD 를 실행 후, 아래 명령어를 입력합니다.
> docker exec --user="root" -it postgres bash
- 위 명령어를 입력 하게 되면,
postgres
컨테이너 이름을 가진 도커 컨테이너 bash 로 접속된 것입니다. - postgreSQL bash 로 접속 하였다면, 다음 명령어를 통해 pgAgent 를 직접 설치 할 수 있습니다.
apt-get update && apt-get install pgagent
해당 명령어를 입력하게 되면 pgAgent 가 설치 진행됩니다.
> root@e039ca149ac8:/# apt-get update && apt-get install pgagent
- pgAgent 설치가 완료 되면,
psql
명령어를 통해 PostgreSQL Database 에 접근하여 Extension 을 설치 진행해야 합니다.
> root@fe74a8d9373f:/# psql -h localhost -p 5432 -U test -d postgres
참고로 postgres 데이터베이스에 접속하여 pgAgent Extension 을 설치 해야 합니다. 다른 데이터베이스에 접속하여 pgAgent Extension 을 설치하게 되면
pgAgent Job
메뉴가 활성화 되지 않습니다.
- psql 명령어를 통해 postgres 데이터베이스에 접근 하였다면, 아래 2개의 명령어를 입력하여 pgAgent Extension 을 생성합니다.
- pgagent, plpsql 2개의 Extension 이 설치가 되어야 정상 설치가 된 것입니다.
CREATE EXTENSION pgagent IF NOT EXISTS;
CREATE LANGUAGE plpgsql IF NOT EXISTS;
pgAgent Jobs 활성화 확인
- pgAgent Extension 까지 모두 정상적으로 설치 및 생성이 완료 되었다면, pgAdmin 을 통해 다음과 같이 pgAgent Jobs 아이콘이 생성된 것을 확인할 수 있습니다.
- 만약, pgAgent Jobs 아이콘이 생성되지 않았다면, postgres 데이터베이스가 아닌 다른 데이터베이스에서 pgAgent 가 설치되었을 확률이 있으므로 해당 부분 체크하시면 됩니다.
권한 부여
- pgAgent 사용을 위해서는 새 역할을 생성하는 것이 좋습니다.
- 아래 명령어를 통해 권한을 부여할 수 있습니다.
GRANT USAGE ON SCHEMA pgagent TO pgagent_user;
GRANT ALL ON SCHEMA pgagent TO pgagent_user;
GRANT ALL ON all tables IN SCHEMA pgagent to pgagent_user;
GRANT ALL ON ALL SEQUENCES IN SCHEMA pgagent TO pgagent_user;
GRANT ALL ON ALL FUNCTIONS IN SCHEMA pgagent TO pgagent_user;
GRANT CONNECT ON DATABASE postgres TO pgagent_user;
pgAgent 시작하기
- 권한 까지 부여 했다면, 다시 컨테이너 bash 로 돌아와 다음 명령어를 입력하여 pgAgent 를 시작해 줍니다.
> cd /usr/bin
> pgagent hostaddr=127.0.0.1 dbname=postgres user=test -s pgagent_log.log
- 위와 같이 pgAgent 시작을 완료 하였다면, 다시 psql 명령어를 통해 DB 에 접속하여 다음 명령어를 입력합니다.
SELECT * FROM pgagent.pga_jobagent;
- 실행 결과, pgAgent Job 하나가 조회되는 것을 확인할 수 있습니다.
- 현재 제가 job 을 등록을 미리 해 놓아서 조회가 되는 것이고, job 이 등록되지 않으면 조회되지 않습니다.
root@79a2de910c0e:/# psql -h localhost -p 5432 -U test -d postgres
psql (14.3 (Debian 14.3-1.pgdg110+1))
Type "help" for help.
postgres=# SELECT * FROM pgagent.pga_jobagent;
jagpid | jaglogintime | jagstation
--------+-------------------------------+--------------
469 | 2022-06-16 02:09:23.749692+00 | 79a2de910c0e
(1 row)
728x90
'Database(데이터베이스)' 카테고리의 다른 글
[PostgreSQL] Autovacuum 최적화 (0) | 2022.06.23 |
---|---|
[PostgreSQL] VACUUM 작업 (0) | 2022.06.22 |
[PostgreSQL] pgAgent Job 등록 생성 및 등록 방법 (0) | 2022.06.22 |
[PostgreSQL] Vacuum 이란? (0) | 2022.06.19 |
[PostgreSQL] PostgreSQL Data Directory 구조 (0) | 2022.06.18 |
이 글을 공유하기