• 使用shell定时自动备份mysql数据库


    因为云主机上数据库比较多,所以需要用shell脚本来实现自动定时备份,代码如下:

    #!/bin/bash
    
    id="root" #用户名
    pwd="123456" #密码
    dbs="blog.ewsd.cn dangjian.ewsd.cn idc.ewsd.cn shangfa.ewsd.cn" #数据库名字的列表,多个数据库用空格分开
    backuppath="/home/mysqlbackup" #保存备份的位置
    day=30   #保留最近几天的备份
    [ ! -d $backuppath ] &&mkdir -p $backuppath  #判断备份目录是否存在,不存时新建目录。
    cd $backuppath   #转到备份目录,这句话可以省略。可以直接将路径到命令的也行。
    
    backupname=mysql_$(date +%Y-%m-%d)  #生成备份文件的名字的前缀,不带后缀。
    for db in $dbs;   #dbs是一个数据名字的集合。遍历所有的数据。
    do
       mysqldump -u$id -p$pwd -S /tmp/mysql.sock $db >$backupname_$db.sql  #备份单个数据为.sql文件。放到当前位置
       if [ "$?" == "0" ]  #$? 得到上一个shell命令的执行的返回值。0表示执行成功。其他表示错误。并将将结果写入到日志中。
       then
           echo $(date +%Y-%m-%d)" $db  mysqldump sucess">>mysql.log
       else
          echo $(date +%Y-%m-%d)"  $db mysql dump failed">>mysql.log
          exit 0
       fi
    done
    tar -czf $backupname.tar.gz *.sql #压缩所有sql文件
    if [ "$?" == "0" ]
    then
       echo $(date +%Y-%m-%d)" tar sucess">>mysql.log
    else
       echo $(date +%Y-%m-%d)" tar failed">>mysql.log
       exit 0
    fi
    rm -f *.sql  #删除所有的sql文件
    delname=mysql_$(date -d "$day day ago" +%Y-%m-%d).tar.gz  #得到要删除的太旧的备份的名字。
    rm -f $delname  #删除文件。

    将以上脚本加入定时计划crontab中即可,注意脚本的执行权限设置。

  • 相关阅读:
    【2019/3/23】周进度报告
    第十周总结
    程序员修炼之道-从小工到专家阅读笔记01
    第九周总结
    用户模板和用户场景
    一维数组最大子数组续
    程序员的自我修养阅读笔记03
    第八周总结
    NABCD项目分析
    第七周总结
  • 原文地址:https://www.cnblogs.com/yhdsir/p/5026383.html
Copyright © 2020-2023  润新知