• [转]Mysql自动备份并保存近15天记录脚本


    本脚本主要现实在CentOS中实现对MySQL数据库的备份和保留最近十五天的备份文件。避免太多无用陈旧的备份占用空间。

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

    只要在 /etc/crontab中添加一行,就可以在指定时间,自动备份了

    注:

    id='root' #用户名
    pwd='123123' #密码   双引号出问题了  改成单引号就好了  

    解压.tar.gz文件:

    tar -zxvf web.tar.gz

    tar不支付解压文件到指定的目录!

    注意:使用 mysqldump 备份数据库时避免锁表

    对一个正在运行的数据库进行备份请慎重!! 如果一定要 在服务运行期间备份,请添加 --skip-opt选项,否则备份记录不全

    类似执行: mysqldump --skip-opt -u root --password=123456 dbname >mySQL.SQL

  • 相关阅读:
    前端常见算法面试题之
    前端常见算法面试题之
    解决Windows7 Update无法检查更新
    linux停止tomcat为什么要kill其掉进程 而不是直接shutdown.sh
    ASP.NET Core 1.0 使用 MySQL for EF Core 1.0 (.NET Core 1.0)
    ASP.NET Core 1.0 部署 HTTPS (.NET Core 1.0)
    11款免费好用的源代码管理桌面应用【转】
    陈灯WGF双缓冲绘图框架
    关于面试别人那点事儿
    数据类型
  • 原文地址:https://www.cnblogs.com/wuling129/p/4816563.html
Copyright © 2020-2023  润新知