일일, 월 파티션을 자동으로 하고 싶을경우 아래와 같이 규칙을 정하고 스크립트로 일 배치 수행

 

1. 테이블에 파티션명을 동일하게 구성

2. MySQL 메타 데이터를 조회하여 파티션 추가 대상 확인

3. 일 배치 수행

   미래 29일 지난 시점에 일 파티션 추가 배치 

=================== 일 배치 스크립트 ==========================

#!/bin/sh

 

USER=

PASS=

HOME=/home/mysql/batch

TABLES=${HOME}/tables.lst

DATABASE=test

 

DT=$(date -d '+29 day' "+%Y%m%d")    # 포맷 : 20200630

NT=$(date -d '+30 day' "+%Y%m%d")    # 포맷 : 20200701

CT=$(date "+%Y%m%d")                     # 오늘날짜 : 20200601

LOG=${HOME}/log/part_daily.log

 

mysql -u $USER -p$PASS << EOF | grep TB_ > $TABLES

select distinct(TABLE_NAME)

from information_schema.partitions where table_schema = '${DATABASE}' and partition_name is not null;

EOF

 

if [ -f $TALBLES ]; then

   for tb in `cat $TABLES`                        # for문으로 table list 읽기

   do

       mysql -u $USER -p$PASS << EOF 2>> $LOG

       use $DATABASE;

       alter table $tb add partition (partition p${DT} values less than (to_days('${NT}')));

EOF

   done

fi

'RDB > MySQL' 카테고리의 다른 글

MySQL csv 파일 load  (0) 2020.06.11
Mariadb maxscale 구성  (0) 2020.06.02
MySQL Delete join 구문  (0) 2020.06.01
mysql procedure 삭제 작업  (0) 2020.05.04
MySQL 파티션  (0) 2020.04.27

+ Recent posts