[PostgreSQL] PostgreSQL pgAgent 설치 방법

참고


목적

  • 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

이 글을 공유하기

댓글

Designed by JB FACTORY