概要†apacheのmod_log_sqlを使用して、MySQLサーバーでログを管理している場合に、テーブルを一週間に一度リネームするシェルスクリプトです。 DATE03と04の-6monthの箇所を変更することで、期間を変更できます。 内容†下記をcrontabへ登録。時間は変更しても問題無し。またシェルスクリプトの場所は任意の場所で。 10 0 3,8,15,22,29 * * /root/delapachelog.sh #!/bin/bash ##### Weekly var DATE00=`date +%d` #DATE00=8 case ${DATE00} in [0][1-7]|[1-7] ) DATE01=_01 ;; [0][8-9]|[8]|[9]|[1][0-4] ) DATE01=_02 ;; [1][5-9]|[2][0-1] ) DATE01=_03 ;; [2][2-8] ) DATE01=_04 ;; [2][9]|[3][0-1] ) DATE01=_05 ;; esac ###### Date Var DATE02=`date +%Y%m | cut -c3-`${DATE01} DATE03=`date +%Y%m --date '-6 month' | cut -c3-`${DATE01} DATE04=`date +%Y%m --date '-6 month' | cut -c3-` ##### DataBase Var #DB01="test01 test02 test03" DB01="データベース01 データベース02 データベース03" SQL01="rename table access_log to access_log_${DATE02};" SQL02="drop table access_log_${DATE03};" SQL03="drop table access_log_${DATE04};" ###### Rename table & drop table 6 month ago for ARG01 in ${DB01} do mysql -u root -pパスワード ${ARG01} -e "${SQL01}" mysql -u root -pパスワード ${ARG01} -e "${SQL02}" mysql -u root -pパスワード ${ARG01} -e "${SQL03}" done |