forked from aliaskov/bashscripts
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathbackup_binlogs.sh
executable file
·62 lines (50 loc) · 1.14 KB
/
backup_binlogs.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
#!/usr/bin/bash
# 0,15,30,45 * * * * /opt/mysql/backup_binlogs.sh > /var/backup/mysql/logs/binlog_$(date +\%d-\%m-\%Y_\%H\%M).log 2>&1
BINLOGS=`ls -rt /var/lib/mysql/s42ldb03-bin.??????`
ACTIVE=`ls -rt /var/lib/mysql/s42ldb03-bin.??????|tail -1`
BINLOGDIR=/var/backup/mysql/binlogs
LOGDIR=/var/backup/mysql/logs
LOCK=/tmp/binlog.lck
DELTA=7
LOGDELTA=7
function set_lock {
if [ ! -f $LOCK ]; then
touch $LOCK
echo "SETTING LOCKFILE"
else
echo "LOCKFILE EXITS"
exit 1
fi
}
function rm_lock {
if [ -f $LOCK ]; then
rm $LOCK
echo "REMOVING LOCKFILE"
else
echo "LOCK NOT FOUND"
exit 1
fi
}
function copy_logs {
FLUSH=`/bin/mysqladmin -uroot -pPASSWORD flush-logs`
for l in $BINLOGS
do
if [ "${l}" != "$ACTIVE" ] && [ "$ACTIVE" != "" ]; then
BASENAME=`basename $l`
echo "COPYING: " $BASENAME
/bin/rsync -a $l $BINLOGDIR/$BASENAME
fi
done
}
function cleanup {
/bin/find $LOGDIR -mtime +$LOGDELTA -name binlog\*.log -exec rm -f {} \;
/bin/find $BINLOGDIR -mtime +$DELTA -exec rm -f {} \;
}
### MAIN ###
echo "START" `date +%d%m%Y_%H%M`
set_lock
copy_logs
cleanup
rm_lock
echo "STOP" `date +%d%m%Y_%H%M`
exit 0