1 #!/bin/bash 2 #set -x 3 ######################### 4 # 功能:自动备份整个mysql数据库 5 # 作者:时光博客 6 # 发布时间:2018/06/04 7 # 最后修改时间: 8 # 版本:v1.0 9 ########################10 ############################参数定义########################11 #用户名12 user="root"13 #密码14 pass="root"15 # 设置备份目录,必须以/结尾 16 back_dir=/data/backup/17 #设置保存多少天18 day=1519 #定义文件名20 file_name=`date +%Y%m%d%H%M`21 #定义排除的数据库名称22 exclude=("Database" "performance_schema" "information_schema" "mysql")23 #############################代码逻辑########################24 #定义命令25 MYSQL=`which mysql`26 MYSQLDUMP=`which mysqldump`27 #创建一个临时文件,装载数据库28 tmp_file=/tmp/databases_$RANDOM29 touch $tmp_file30 #登陆mysql,获取所有的数据库名称31 $MYSQL -u$user -p$pass <<EOF >$tmp_file32 show databases;33 EOF34 #定义数据库名称数组35 database_list=()36 #定义自增变量37 len=038 #获取真实有用的数据库名称39 while read line40 do41 if [[ "${exclude[@]}" != *$line* ]]42 then43 let "len++"44 database_list[$len]=$line45 fi46 done < $tmp_file47 #输出结果,导出数据库48 echo "数据库总共:${#database_list[*]}"49 #开始备份50 echo "开始备份..."51 rd=$RANDOM52 for name in ${database_list[@]}53 do54 file_path="${back_dir}`date +%Y%m%d`"/55 if [ ! -e $file_path ]56 then57 mkdir -p $file_path58 fi59 file="${file_path}${name}-$file_name-$rd.gz"60 $MYSQLDUMP --opt $name -u $user -p${pass} | gzip > $file61 done62 #保留多少天的数据63 find $basedir -mtime +$day -name "*.gz" -exec rm -rf {} \;64 #删除临时文件65 if [ -e $tmp_file ]66 then67 rm -rf $tmp_file68 fi69 echo "备份结束."
转自 时光博客