pgAgent 는 작업을 실행하고 관리하는 스케줄링 에이전트입니다.
각 작업은 하나 이상의 단계와 일정으로 구성됩니다.
두 개 이상의 작업이 동시에 실행되도록 예약된 경우 pg_agent 는 작업을 병렬로 실행합니다.
수행 내용은 SQL 문 또는 운영 체제 배치 또는 쉘 스크립트일 수 있습니다.
Install
1. PostgreSQL v14.2 설치
2.pgAgent 패키지 설치
yum -y install pgagent_14
3. PostgreSQL 서버 기동
pg_ctl start
4. pgAgent Extension 생성
postgres=# CREATE EXTENSION pgagent;
CREATE EXTENSION
5. pgAgent 테스트 롤 생성
CREATE USER “pgagent_user” WITH
LOGIN
SUPERUSER
INHERIT
NOCREATEDB
NOCREATEROLE
NOREPLICATION
encrypted password ‘pgagent’;GRANT USAGE ON SCHEMA pgagent TO pgagent_user;
GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA pgagent TO pgagent_user;
GRANT ALL PRIVILEGES ON ALL SEQUENCES IN SCHEMA pgagent TO pgagent_user;
6. pgAdmin 접속
접속은 pgAdmin 을 참고
작업 추가 예시
1.pgAgent Jobs 하위 폴더 확인

2.pgAgent Jobs 우클릭 → Create → pgAgent Job …

3.General Tab

- NAME : 작업 이름을 입력합니다.
- Enabled : 스위치를 YES / NO 로 이동 하여 작업을 활성화 및 비활성화 합니다.
- Job Class : 작업 분류용 클래스를 선택합니다.
- Host Agent : 필드를 사용하여 pgAgent를 실행하는 시스템의 이름을 지정하여 해당 시스템만 작업을 실행할 수 있음을 나타냅니다. 모든 서버가 작업을 수행할 수 있도록 지정하려면 필드를 비워 둡니다.
4.Steps Tab (General)
작업이 수행할 단계를 정의하고 관리합니다.

- NAME : Step 의 이름을 입력합니다.
- Enabled : 스위치를 이동 하여 작업을 실행할 때 Step 을 포함하거나 미포함 합니다.
- Kind : 스위치를 이동 하여 작업을 실행할 때 SQL 코드 또는 배치 스크립트 호출 여부를 나타냅니다.
- SQL 을 선택하는 경우 Code Tab 을 사용하여 각 Step 에 대한 SQL 코드 작성
- Batch 를 선택하는 경우 Code Tab 을 사용하여 각 Step 에 실행될 배치 스크립트 작성
- Connection Type : 스위치를 사용 하여 단계가 Local 서버 또는 Remote 호스트에서 수행되는지 여부를 나타냅니다.
- Step 에 Remote 연결을 사용하도록 지정하면 Connection string 필드가 활성화되고 libpq 형식 커넥션 정보를 작성해야 합니다.
- Database : Step 이 수행될 데이터베이스를 선택합니다.
- Connection string : 필드를 사용 하여 단계가 수행될 원격 서버에 대한 libpq libpq 형식 커넥션 정보를 지정합니다.
- On Error : Step 을 실행하는 동안 오류가 발생하는 경우 pgAgent의 동작을 지정합니다.
- Fail : 해당 Step 을 수행하는 동안 오류가 발생하면 작업을 중지합니다.
- Success : Step 을 성공적으로 완료한 것으로 표시합니다.
- Ignore : 오류를 무시하고 계속합니다.
5.Steps Tab ( Code )

Steps( Code ) 탭을 사용하여 상황에 맞는 필드를 사용하여 Step 중에 실행될 SQL 코드 또는 배치 스크립트를 작성해야 합니다.
- Step 에서 SQL 코드를 호출하는 경우 SQL 쿼리 필드에 하나 이상의 SQL 문을 작성합니다.
- Step 에서 배치 스크립트를 수행하는 경우 필드에 스크립트를 작성합니다.
Windows 서버에서 실행 중인 경우 표준 배치 파일 구문을 사용해야 합니다. Linux 서버에서 실행할 때 적절한 인터프리터가 첫 번째 줄(예: #!/bin/sh )에 지정되어 있으면 모든 셸 스크립트를 사용할 수 있습니다.
6.Schedules ( General )

- NAME : 필드에 스케줄 이름을 입력합니다.
- Enabled : 스위치를 사용 하여 pgAgent가 스케줄을 활성하거나 비활성화 함을 나타냅니다.
- Start : 달력을 선택하여 스케줄의 시작 날짜와 시간을 지정합니다.
- End : 달력을 선택하여 스케줄의 종료 날짜와 시간을 지정합니다.
7.Schedules ( Repeat )
Repeat Tab 을 적용하여 cron 형식으로 스케쥴에 대한 수행 규칙을 지정합니다.

8.Schedules ( Exceptions )
Exceptions Tab 을 작성하여 스케줄 동작 시간 중 작업을 실행하지 않을 요일과 시간을 지정합니다.

9.SQL Tab
앞서 적용한 옵션들의 결과 SQL 을 보여줍니다.

지금까지 ‘PostgreSQL의 pg_Agent’에 관해 알아보았습니다
‘PostgreSQL의 pgAdmin4’을 바로 이어서 확인해보세요!