1、备份脚本的简介
脚本分为两个部分,主控脚本与备份子脚本。
1.1、备份子脚本
-完成mysql基本的备份功能
-自动日期时间命名备份文件(不产生重复名称的备份)
-提供压缩(节省大量的空间)
1.2、主控脚本
-调用备份子脚本(代码复用)
-清理mysql旧的备份文档(可定义多少天内的保留)
2、生成备份脚本
2.1、创建脚本目录
1
|
mkdir
~
/script/
|
2.2、备份子脚本代码
vim编辑~/script/dbBack.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
|
#!/bin/bash
user=$1
passwd
=$2
dbName=$3
bkDir=$4
dt=$(
date
+
"%Y-%m-%d_%H%M%S"
)
dbBkName=$dbName-$dt.sql
if
[ $dbName ==
'--all-databases'
];
then
dbBkName=
"all-databases-"
$dt.sql
fi
#echo $user
#echo $passwd
#echo $dbBkName
if
[ $dbName ==
'--all-databases'
];
then
mysqldump -u$user -p$
passwd
--all-databases > $bkDir$dbBkName
else
mysqldump -u$user -p$
passwd
$dbName > $bkDir$dbBkName
fi
tar
-zcvf $bkDir$dbBkName.
tar
.gz $bkDir$dbBkName
rm
-rf $bkDir$dbBkName
|
2.3、主控脚本代码
2.3.1 单库备份
vim编辑~/script/dbMan.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
#!/bin/bash
bkDir=
/var/lib/backup/
wkDir=~
/script/
user=mysql_user
#数据库的用户名
passwd
=mysql_password
#数据库的密码
saveTime=7
#多少天之内的保留,7天之外的删除
if
[ ! -d $bkDir ];
then
mkdir
-p $bkDir
fi
cd
$wkDir
sh dbBack.sh $user $
passwd
db1 $bkDir
sh dbBack.sh $user $
passwd
db2 $bkDir
cd
$bkDir
#find -name "*.gz" -ctime +$saveTime -exec ls {} \;
find
-name
"*.gz"
-ctime +$saveTime -
exec
rm
-rf {} \;
|
注:修改13-14行备份数据库db1、db2
2.3.2 备份所有的库
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
#!/bin/bash
bkDir=
/var/lib/backup/
wkDir=~
/script/
user=mysql_user
#数据库的用户名
passwd
=mysql_password
#数据库的密码
saveTime=7
#多少天之内的保留,7天之外的删除
if
[ ! -d $bkDir ];
then
mkdir
-p $bkDir
fi
cd
$wkDir
sh dbBack.sh $user $
passwd
--all-databases $bkDir
cd
$bkDir
#find -name "*.gz" -ctime +$saveTime -exec ls {} \;
find
-name
"*.gz"
-ctime +$saveTime -
exec
rm
-rf {} \;
|
注:13行备份所有的数据库
3、使用脚本
编辑计划任务:
1
|
crontab
-e
|
加入如下内容:
1
|
0 *
/1
* * * sh ~
/script/dbMan
.sh
|
以上1个小时产生一个备份
本文转自 tanzhenchao 51CTO博客,原文链接:http://blog.51cto.com/cmdschool/1713247,如需转载请自行联系原作者