TokeyTyrant (TT Server) ULog 管理,数据清空以及结构优化

        TT Server 做为比较方便的KV系统,他提供了Memcache协议进行数据操作,但是没有提供API来作为对其的一个管理机制,他只提供了Shell的方式管理,并且文档相对来说比较少,所以我自己写了一个TTServer的 Ulog 清理和数据库自动清空的脚本来做自动管理,希望有类似需求的同学可以从这个我这个脚本中裁剪出自己需要的脚本,自动运行可以采取Crontab来完成。

 

        #!/bin/bash #请正确设置下面的三个关键变量,目录的话不要用/结尾 TT_INSTALL_HOME="/usr/local/bin" #TTServer 安装文件目录 DIR_ULOG="/home/remon/DevelopKit/server/TT/tokyotyrant/tokyotyrant-1.1.41/ulog" #ulog所在目录 TT_SERVICE_PORT="8080" #以上三个变量请务必设置正确 if [ -z $1 -a -d $DIR_ULOG ] then echo "Please input ulog dir" exit fi cd $DIR_ULOG ULOG_FILE_COUNT=`find $DIR_ULOG -name '*.ulog' | wc -l` #获取ULOG文件数量 JUMP_FILE_COUNT=0 #ULOG文件不删除文件计数 STR_CURTIME=`date +"%Y-%m-%d %H:%M:%S"` #当前的系统时间 DATA_CURTIME=`date -d "$STR_CURTIME" +%s` #转换成秒 PROCESS_RES_FILE="$DIR_ULOG/res.txt" #处理日志输出文件 echo "ulog dir : " $DIR_ULOG echo System time is $STR_CURTIME echo "Ulog file count : " $ULOG_FILE_COUNT echo "******** Start empty tt's data! ********" >> $PROCESS_RES_FILE $TT_INSTALL_HOME/tcrmgr vanish -port $TT_SERVICE_PORT localhost $TT_INSTALL_HOME/tcrmgr optimize -port $TT_SERVICE_PORT localhost echo "******** TT is cleared up! ********" >> $PROCESS_RES_FILE echo "******** Start clear ulog file! ********" >> $PROCESS_RES_FILE DELAY_TIME=$($TT_INSTALL_HOME/tcrmgr inform -port $TT_SERVICE_PORT -st localhost | awk '$1=="delay"''{print $2}') if [ -z $DELAY_TIME ] then DELAY_TIME=60 #如果无法查询得到复制延迟,那么设定延迟时间为60秒 fi DELAY_TIME=$(printf %.0f $DELAY_TIME) #将时差四舍五入为整数 for ULOG_FILE in `ls -t $DIR_ULOG | awk '{print $1}'` do FILE_SUFFIX=${ULOG_FILE##*.} #获取文件后缀名 STR_LASTTIME=$(ls -lt $ULOG_FILE | awk '{print $6,$7}') #获取文件的最后时间 DATA_LASTTIME=`date -d "$STR_LASTTIME" +%s` #转换成秒 INTERVAL_TIME=`expr $DATA_CURTIME - $DATA_LASTTIME` #计算2个时间的差 if [ $INTERVAL_TIME -gt $DELAY_TIME -a $FILE_SUFFIX = "ulog" ] then if [ $JUMP_FILE_COUNT -lt 2 ] #最后保留两个最新的ULOG文件,即使这个ULOG最后修改时间和当前时间的差大于同步时差。 then ((JUMP_FILE_COUNT=$JUMP_FILE_COUNT + 1)) continue fi echo file will be deleted: $ULOG_FILE $INTERVAL_TIME S >> $DIR_ULOG/res.txt #rm -rf $ULOG_FILE fi done echo "******** ULog file cleared up! ********" >> $PROCESS_RES_FILE echo -e "Task over!" `date` "/n/n" >> $PROCESS_RES_FILE  

 

脚本写的不太漂亮,但功能完成,希望大家拍砖。

 

你可能感兴趣的:(NOSQL技术)