你的位置:首页 > 数据库

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


#!/bin/bashid="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  fidonetar -czf $backupname.tar.gz *.sql #压缩所有sql文件if [ "$?" == "0" ]then  echo $(date +%Y-%m-%d)" tar sucess">>mysql.logelse  echo $(date +%Y-%m-%d)" tar failed">>mysql.log  exit 0firm -f *.sql #删除所有的sql文件delname=mysql_$(date -d "$day day ago" +%Y-%m-%d).tar.gz #得到要删除的太旧的备份的名字。rm -f $delname #删除文件。

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