1 | #!/usr/bin/perl
|
---|
2 | #-------------------------------------------------------------------------#
|
---|
3 | # Author: Simon Bailey, <simon.bailey@uibk.ac.at> #
|
---|
4 | # #
|
---|
5 | # table rotation script for shifting data from the main table to keep #
|
---|
6 | # yule/samhain/beltane happy and fast. #
|
---|
7 | # the main reason for this is that we had 62568 log entries after #
|
---|
8 | # less than a week of real work with yule/samhain/beltane #
|
---|
9 | # this script takes all data which is older than a day and acknowledged #
|
---|
10 | # and inserts it into a backup table, also in the main database. #
|
---|
11 | #-------------------------------------------------------------------------#
|
---|
12 |
|
---|
13 | use DBI;
|
---|
14 |
|
---|
15 | # Configuration Variables
|
---|
16 | $SAMHAIN_DB='samhain';
|
---|
17 | $SAMHAIN_SRV='localhost';
|
---|
18 | $SAMHAIN_PRT='3306';
|
---|
19 | $SAMHAIN_USR='samhain';
|
---|
20 | $SAMHAIN_PWD='*******';
|
---|
21 |
|
---|
22 | # GMT Offset -- change this to your GMT Offset.
|
---|
23 | # CET = +1
|
---|
24 | $GMT_OFFSET = 1;
|
---|
25 |
|
---|
26 | # get the current date in GMT time, then convert it to yesterday
|
---|
27 | ($sec,$min,$hr,$day,$mon,$year,$wday,$ytag,$isdst) = gmtime(time);
|
---|
28 |
|
---|
29 | # year is returned as real year - 1900...
|
---|
30 | $realYear = ($year-100+2000);
|
---|
31 | $realMonth = ($mon+1); # month is a zero base array
|
---|
32 | $realHour = ($hr+$GMT_OFFSET);
|
---|
33 | $yesterday = ($day-1);
|
---|
34 |
|
---|
35 | $dbh = DBI->connect("DBI:mysql:database=$SAMHAIN_DB;host=$SAMHAIN_SRV;port=$SAMHAIN_PRT",$SAMHAIN_USR,$SAMHAIN_PWD);
|
---|
36 |
|
---|
37 | $sth = $dbh->prepare("INSERT INTO log_backup SELECT * FROM log WHERE ((log_ref IS NULL AND entry_status!=\'NEW\') OR (log_ref IS NOT NULL)) AND log_time < \'$realYear-$realMonth-$yesterday $realHour:00:00\';");
|
---|
38 | $sth->execute;
|
---|
39 |
|
---|
40 | # print "insert done";
|
---|
41 |
|
---|
42 | $sth = $dbh->prepare("DELETE FROM log WHERE ((log_ref IS NULL AND entry_status!=\'NEW\') OR (log_ref IS NOT NULL)) AND log_time < \'$realYear-$realMonth-$yesterday $realHour:00:00\';");
|
---|
43 | $sth->execute;
|
---|
44 |
|
---|
45 | # print "delete done";
|
---|