zoukankan      html  css  js  c++  java
  • shell实现自动备份整个数据库,一个库备份一个文件

    自动实现备份整个数据库

    • 实现一个库备份一个文件
    • 实现排除不需要备份的库
    • 实现备份成压缩文件
    • 实现定义保留多少天的备份文件

    核心代码

     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=15
    19 #定义文件名
    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_$RANDOM
    29 touch $tmp_file
    30 #登陆mysql,获取所有的数据库名称
    31 $MYSQL -u$user -p$pass <<EOF >$tmp_file
    32 show databases;
    33 EOF
    34 #定义数据库名称数组
    35 database_list=()
    36 #定义自增变量
    37 len=0
    38 #获取真实有用的数据库名称
    39 while read line
    40 do
    41         if [[ "${exclude[@]}" != *$line* ]]
    42         then
    43                 let "len++"
    44                 database_list[$len]=$line
    45         fi
    46 done < $tmp_file
    47 #输出结果,导出数据库
    48 echo "数据库总共:${#database_list[*]}"
    49 #开始备份
    50 echo "开始备份..."
    51 rd=$RANDOM
    52 for name in ${database_list[@]}
    53 do
    54         file_path="${back_dir}`date +%Y%m%d`"/
    55         if [ ! -e $file_path ]
    56         then
    57                 mkdir -p $file_path
    58         fi
    59         file="${file_path}${name}-$file_name-$rd.gz"
    60         $MYSQLDUMP --opt $name -u $user -p${pass} | gzip > $file
    61 done
    62 #保留多少天的数据
    63 find $basedir -mtime +$day -name "*.gz" -exec rm -rf {} ;
    64 #删除临时文件
    65 if [ -e $tmp_file ]
    66 then
    67         rm -rf $tmp_file
    68 fi
    69 echo "备份结束."

    转自 时光博客

  • 相关阅读:
    PHP——语句和时间函数
    数据库——环境初建改端口和密码(转)
    PHP——初学,基础
    数据库——常用函数
    数据库——触发器(转)
    数据库——浅谈数据库中的存储过程(转)
    JavaScrip——简单练习(抓错误信息,for循环,日期)
    数据库——练习题答案
    django 创建APP 后找不到 templates文件夹下的Html文件。
    POSTGRESQL 9.1 FATAL: password authentication failed for user "postgres"
  • 原文地址:https://www.cnblogs.com/300js/p/9133352.html
Copyright © 2011-2022 走看看