Rack 在公司架了一台 Log Server,並使用 LogAnalyzer 進行分析整理並寄發 Warning 及 Error的 Log Report,懶惰的 Rack 只要每日查看 Report 就好,不用到每一台 Server 上逐條查看了。
但,Rack 也遇到一個狀況就是,資料太多了,服務打開,沒多久就塞了1萬多筆 Log 進來,本來 Rack 想說就放著吧,不過這幾天爬網時,剛好看到有大大的經驗分享,該大大設定每日晚上排程清空資料表,以保證效能不減,並且大方的提供了他的 script,嗯...前人種樹,後人乘涼,Rack 就很高興的搬來用啦!!
資料來源:
http://wpjh.tc.edu.tw/joomla/index.php/2012-04-25-23-06-11/2012-04-30-07-56-38/2013-03-25-13-04-19/343-20130308
/etc/crontab 內容
10 0 * * * root /usr/sbin/ntpdate time.stdtime.gov.tw; /usr/sbin/hwclock -w
40 5 * * * root yum -y update && yum clean packages
58 23 * * * root /root/backup.sh
1 0 * * * root php /root/truncatetable.php
/root/backup.sh內容
backup_dir="/home/xxxx/xxxxx"
sub_dir="20"`date '+%y%m%d'`
cd $backup_dir
mkdir $sub_dir
chown xxxx:xxxx $sub_dir
databasename="Syslog"
rootpassword="xxxxxxxx"
sqlfilename="log-sql-20"`date '+%y-%m-%d'`.sql
mysqldump $databasename > $backup_dir/$sub_dir/$sqlfilename -uroot -p$rootpassword
zip $backup_dir/$sub_dir/$sqlfilename.zip $backup_dir/$sub_dir/$sqlfilename
rm -rf $backup_dir/$sub_dir/$sqlfilename
/root/truncatetable.php內容 (為避免被濾掉,<跟?php中間多加一個空白)
< ?php
$db_host = "localhost";
$db_user = "root";
$db_pass = "xxxxxxxxx";
$db_name = "Syslog";
$connect = @mysql_connect($db_host,$db_user,$db_pass);
@mysql_select_db($db_name);
// Empty table
$query = "TRUNCATE TABLE SystemEvents";
mysql_query($query);
?>