본문 바로가기

Server

postgresql batch job shell script

반응형


데이터베이스에서 오래된 데이터를 주기적으로 삭제 하기 위해 스크립트를 만듬

postgresql,mariadb , oracle 같은 경우  scheduler 기능을 제공함

scheduler 도 좋지만 스크립트를 사용해보기위해 아래와 같이 적용함


해당 스크립트를 cron  에 등록하여 사용하면 됨.


#!/bin/bash
# chkconfig 2345 20 80

readonly LOG_SAVE_PATH="/root/postgresql_log" #로그 파일 저장 경로
readonly LOG_FILE_NAME="log.log" #로그
readonly LOG_FILE="${LOG_SAVE_PATH}/${LOG_FILE_NAME}"
readonly DB="postgres"

#삭제 시간
executeTime=$(date '+%Y-%m-%d %H:%M:%S')
#90일전 시간
checkTime=`date +%Y-%m-%d -d '-90days'` #90일전 데이터 삭제를 위해 90일전 날짜 계산
#log writer (실행 시간, 삭제 건수를 로그파일에 기록 한다.)
function main() {
#디렉터리 생성
mkdir -p ${LOG_SAVE_PATH} #디렉터리가 존재하지 않을 경우를 대비하여 추가함. 있으면 생성하지 않음

local result=`sudo -i -u postgres psql -d ${DB} -c "delete from 테이블명 where 컬럼이름<'$checkTime'"`
echo "[${executeTime}] -> $result]" >> "${LOG_FILE}"

}

main




반응형

'Server' 카테고리의 다른 글

mongo db docker-compose  (0) 2020.08.20
파일 비교 하여 다른 부분만 출력  (0) 2017.12.20
find 와 xargs 사용  (0) 2017.09.13
Kt ucloud server 파티션 방법  (0) 2017.05.19
make 파일  (0) 2013.02.20