mysqldump结合脚本的备份方案

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,如需转载请自行联系原作者

上一篇:使用Londiste3 增量同步 线下PostgreSQL 到 阿里云RDS PG


下一篇:如何在Linux中启用Shell脚本的调试模式