티스토리 뷰

데이터베이스/PostgreSQL

[pg_cron] PostgreSQL 스케줄러

메모하는습관 2022. 10. 21. 14:57

pg_cron은 데이터베이스 내부에서 확장으로 실행되는 PostgreSQL(10이상)용 cron 기반의 스케줄러이다.

linux의 crontab과 동일한 구문을 사용하며 데이터베이스에서 직접 query 실행을 예약할 수 있다.


설치

# 사용하고 있는 postgresql 버전에 맞게 설치하자.
# 아래는 postgresql13 용 pg_cron을 설치하는 예시이다.

# Red Hat, CentOS, Fedora, Amazon Linux
$ sudo yum install -y pg_cron_13

# Debian, Ubuntu
$ sudo apt-get -y install postgresql-13-cron

postgresql.conf 설정

#postgresql.conf 파일에 아래의 설정을 추가 하자.

# postgresql 시작 시 pg_cron background worker를 로드한다.
shared_preload_libraries = 'pg_cron'

# pg_cron background worker가 실행되어야 하는 데이터베이스를 지정한다. (기본값: postgres)
cron.database_name = 'postgres'

# ----------------------------------------------------------------------------------------

# 아래 설정은 필수 요소는 아닌 듯 하니 필요에 따라 설정 한다.

# localhost 연결 대신 background worker를 통해 작업 예약
cron.use_background_workers = on

# 실행 가능한 background worker 수를 환경에 맞게 늘려준다. (기본값: 8)
max_worker_processes = 20

# 설정을 적용하기 위해서는 postgresql 재시작이 필요하다.

pg_cron 함수 및 메타데이터 테이블 생성

-- superuser로 실행
CREATE EXTENSION pg_cron;

-- 일반 사용자 사용 권한 부여 (선택사항)
GRANT USAGE ON SCHEMA cron TO marco;

자세한 설치 방법 및 사용 방법은 여기에서 확인할 수 있다.

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday