1
1
#! /bin/bash
2
2
# ######################################################
3
- # $Name: mysql_backup .sh
3
+ # $Name: mysql_auto_backup .sh
4
4
# $Version: v1.0
5
5
# $Function: Backup MySQL Databases Script
6
6
# $Author: ShaoBo Wan (Tinywan)
7
7
# $organization: https://github.com/Tinywan
8
- # $Create Date: 2017-06-29
9
- # $Description: Mysql 自动备份脚本安全加锁机制
8
+ # $Create Date: 2017-06-27
9
+ # $Description: 定期备份MySQL数据库
10
+ # $crontab: 55 23 * * * bash $PATH/mysql_auto_backup.sh backup >/dev/null 2>&1
10
11
# ######################################################
11
-
12
+
12
13
# Shell Env
13
- SHELL_NAME=" mysql_backup.sh"
14
- SHELL_TIME=$( date " +%Y-%m-%d" )
15
- SHELL_DIR=" /home/www/database_back"
16
- SHELL_LOG=" ${SHELL_DIR} /${SHELL_NAME} -${SHELL_TIME} .log"
14
+ SHELL_NAME=" mysql_auto_backup.sh"
15
+ SHELL_TIME=$( date ' +%Y-%m-%d-%H:%M:%S' )
16
+ SHELL_DAY=$( date ' +%Y-%m-%d' )
17
+ SHELL_DIR=" /home/www/data-backup"
18
+ SHELL_LOG=" ${SHELL_DIR} /logs/${SHELL_NAME} -${SHELL_DAY} .log"
17
19
LOCK_FILE=" /tmp/${SHELL_NAME} .lock"
18
20
MYSQL_DUMP=" /usr/bin/mysqldump"
19
- MYSQL_BACKUP_DB_NAME=" tinywan_mysql "
21
+ MYSQL_BACKUP_DB_NAME=" resty "
20
22
BACKUP_NAME=${MYSQL_BACKUP_DB_NAME} " -${SHELL_TIME} .sql"
21
-
23
+
22
24
# Write Log
23
25
loglevel=0 # debug:0; info:1; warn:2; error:3
24
26
TIME=` date ' +%Y-%m-%d %H:%M:%S' `
25
27
shell_log (){
26
28
local log_type=$1
27
29
local LOG_CONTENT=$2
30
+ # 这里的写入日志时间修改掉,经过一段时间的测试${TIME} 每次都是一个固定的时间,所以在这里修改为每次写入是自动获取当前时间写入日志
28
31
logformat=" ` date ' +%Y-%m-%d %H:%M:%S' ` \t[${log_type} ]\t [${SHELL_NAME} ] Function: ${FUNCNAME[@]} \t[line:` caller 0 | awk ' {print$1}' ` ]\t [log_info: ${LOG_CONTENT} ]"
29
32
{
30
33
case $log_type in
@@ -39,28 +42,28 @@ shell_log(){
39
42
esac
40
43
} | tee -a $SHELL_LOG
41
44
}
42
-
43
-
45
+
46
+ # Shell Usage shell_usage函数,用来告诉用户,这个脚本的使用方法
44
47
shell_usage (){
45
48
echo $" Usage: $0 {backup}"
46
49
}
47
-
50
+
48
51
shell_lock (){
49
52
touch ${LOCK_FILE}
50
53
}
51
-
54
+
52
55
shell_unlock (){
53
56
rm -f ${LOCK_FILE}
54
57
}
55
-
58
+
56
59
mysql_zip (){
57
60
cd $SHELL_DIR
58
61
/bin/bzip2 $BACKUP_NAME
59
- find ./ -mindepth 1 -maxdepth 3 -type f -name ' *.bz2' -mmin +43200 | xargs rm -rf # 进行查找资料,多文件的查找的时候需要增加单引号
60
- find ./ -mindepth 1 -maxdepth 3 -type f -name * .sql -mmin +1440 | xargs rm -rf
61
- find ./ -mindepth 1 -maxdepth 3 -type f -name * .log -mmin +1440 | xargs rm -rf
62
+ find ./ -mindepth 1 -maxdepth 3 -type f -name ' *.bz2' -mmin +43200 | xargs rm -rf
63
+ find ./ -mindepth 1 -maxdepth 3 -type f -name * .sql -mmin +10080 | xargs rm -rf
64
+ find ./ -mindepth 1 -maxdepth 3 -type f -name * .log -mmin +10080 | xargs rm -rf
62
65
}
63
-
66
+
64
67
# Backup MySQL weblive Database with mysqldump or innobackupex
65
68
mysql_backup (){
66
69
if [ -f " $LOCK_FILE " ]; then
@@ -70,6 +73,7 @@ mysql_backup(){
70
73
shell_log info " mysql backup start"
71
74
shell_lock
72
75
# sleep 10
76
+ # $qMYSQL_DUMP $MYSQL_BACKUP_DB_NAME > $SHELL_DIR/$BACKUP_NAME
73
77
BACKUP_RES=$( $MYSQL_DUMP $MYSQL_BACKUP_DB_NAME > $SHELL_DIR /$BACKUP_NAME && echo " success" || echo " fail" )
74
78
if [ " ${BACKUP_RES} " == " fail" ]; then
75
79
shell_log error " MYSQL_BACKUP_DB error : ${BACKUP_RES} "
@@ -80,7 +84,7 @@ mysql_backup(){
80
84
shell_log info " mysql backup stop"
81
85
shell_unlock
82
86
}
83
-
87
+
84
88
# Main Function
85
89
main (){
86
90
case $1 in
@@ -90,6 +94,6 @@ main(){
90
94
;;
91
95
esac
92
96
}
93
-
97
+
94
98
# Exec
95
- main $1
99
+ main $1
0 commit comments