本文共 1853 字,大约阅读时间需要 6 分钟。
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个小时产生一个备份