首页 > 数据库 > MySQL > 正文

linxu中每天自动备份mysql两段脚本

2024-07-24 12:37:46
字体:
来源:转载
供稿:网友

mysql自动备份要借助于linux中的crontab任务计划,我们把.sh文件写好之后需要加入到linux中crontab中,然后设置备份数据库的执行时间,下面我来介绍介绍.

定时执行脚本,执行如下代码:

crontab -e 00 00 * * * /bin/bash yourpath/mysqlbak.sh

打开自动执行文件,代码如下:

vi /etc/crontab

在etc中加入如下内容,让其自动执行任务,代码如下:

00 00 * * * root /mysqlbak.sh

以上两个 00    00    *    *    *  为每天的凌晨自动执行脚本.

  1. 分 时 日 月 周 命令 
  2. M: 分钟(0-59)。每分钟用*或者 */1表示 
  3. H:小时(0-23)。(0表示0点) 
  4. D:天(1-31)。 
  5. m: 月(1-12)。 
  6. d: 一星期内的天(0~6,0为星期天)。 
  7. 每五分钟执行    */5 * * * *  
  8. 每小时执行      0 * * * *  
  9. 每天执行        0 0 * * *  
  10. 每周执行        0 0 * * 0  
  11. 每月执行        0 0 1 * *  
  12. 每年执行        0 0 1 1 * 

重启cron,代码如下:

  1. /etc/rc.d/init.d/crond restart 
  2. or 
  3. service crond restart 

实例一,mysqlback.sh,代码如下:

  1. #!/bin/bash  
  2. #功能说明:本功能用于备份数据库  
  3. #编写日期:2010/12/06  
  4.    
  5. PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:/usr/local/mysql/bin 
  6. export PATH  
  7. #数据库用户名  
  8. dbuser='root' 
  9. #数据库密码  
  10. dbpasswd='123456' 
  11. #数据库名,可以定义多个数据库,中间以空格隔开,如:test test1 test2  
  12. dbname='test1 test2' 
  13. #备份时间  
  14. backtime=`date +%Y%m%d%H%M%S`  
  15. #日志备份路径  
  16. logpath='/second/backup' 
  17. #数据备份路径  
  18. datapath='/second/backup' 
  19. #日志记录头部  
  20. echo ‘"备份时间为${backtime},备份数据库表 ${dbname} 开始" >> ${logpath}/mysqllog.log  
  21. #正式备份数据库  
  22. for table in $dbnamedo 
  23. source=`mysqldump -u ${dbuser} -p${dbpasswd} ${table}> ${logpath}/${backtime}.sql` 2>> ${logpath}/mysqllog.log;  
  24. #备份成功以下操作  
  25. if [ "$?" == 0 ];then 
  26. cd $datapath  
  27. #为节约硬盘空间,将数据库压缩  
  28. tar jcf ${table}${backtime}.tar.bz2 ${backtime}.sql > /dev/null 
  29. #删除原始文件,只留压缩后文件  
  30. rm -f ${datapath}/${backtime}.sql  
  31. echo "数据库表 ${dbname} 备份成功!!" >> ${logpath}/mysqllog.log  
  32. else 
  33. #备份失败则进行以下操作  
  34. echo "数据库表 ${dbname} 备份失败!!" >> ${logpath}/mysqllog.log  
  35. fi 
  36. done 

实例2,每天凌晨执行一次,自动备份这个脚本每天最多只执行一次,而且只保留最近五天的备份在服务器上,代码如下:

  1. #!/bin/bash  
  2. #This is a ShellScript For Auto DB Backup  
  3. #Powered by aspbiz  
  4. #2004-09 
  5. #Setting  
  6. #设置数据库名,数据库登录名,密码,备份路径,日志路径,数据文件位置, 
  7. #以及备份方式  
  8. #默认情况下备份方式是tar,还可以是mysqldump,mysqldotcopy  
  9. #默认情况下,用root(空)登录mysql数据库,备份至/root/dbxxxxx.tgz  
  10. DBName=mysql  
  11. DBUser=root  
  12. DBPasswd=  
  13. BackupPath=/root/  
  14. LogFile=/root/db.log  
  15. DBPath=/var/lib/mysql/  
  16. #BackupMethod=mysqldump  
  17. #BackupMethod=mysqlhotcopy  
  18. #BackupMethod=tar  
  19. #Setting End 
  20.  
  21. NewFile="$BackupPath"db$(date +%y%m%d).tgz  
  22. DumpFile="$BackupPath"db$(date +%y%m%d)  
  23. OldFile="$BackupPath"db$(date +%y%m%d --date='5 days ago').tgz 
  24. echo "-------------------------------------------" >> $LogFile  
  25. echo $(date +"%y-%m-%d %H:%M:%S") >> $LogFile  
  26. echo "--------------------------" >> $LogFile  
  27. #Delete Old File  
  28. if [ -f $OldFile ]  
  29. then  
  30.    rm -f $OldFile >> $LogFile 2>&1  
  31.    echo "[$OldFile]Delete Old File Success!" >> $LogFile  
  32. else  
  33.    echo "[$OldFile]No Old Backup File!" >> $LogFile  
  34. fi 
  35. if [ -f $NewFile ]  
  36. then  
  37.    echo "[$NewFile]The Backup File is exists,Can't Backup!" >> $LogFile  
  38. else  
  39.    case $BackupMethod in  
  40.    mysqldump)  
  41.       if [ -z $DBPasswd ]  
  42.       then  
  43.          mysqldump -u $DBUser --opt $DBName > $DumpFile  
  44.       else  
  45.          mysqldump -u $DBUser -p$DBPasswd --opt $DBName > $DumpFile  
  46.       fi  
  47.       tar czvf $NewFile $DumpFile >> $LogFile 2>&1  
  48.       echo "[$NewFile]Backup Success!" >> $LogFile  
  49.       rm -rf $DumpFile  
  50.       ;;  
  51.    mysqlhotcopy)  
  52.       rm -rf $DumpFile  
  53.       mkdir $DumpFile  
  54.       if [ -z $DBPasswd ]  
  55.       then  
  56.          mysqlhotcopy -u $DBUser $DBName $DumpFile >> $LogFile 2>&1  
  57.       else  
  58.          mysqlhotcopy -u $DBUser -p $DBPasswd $DBName $DumpFile >>$LogFile 2>&1  
  59.       fi  
  60.       tar czvf $NewFile $DumpFile >> $LogFile 2>&1  
  61.       echo "[$NewFile]Backup Success!" >> $LogFile  
  62.       rm -rf $DumpFile  
  63.       ;;  
  64.    *)  
  65.       /etc/init.d/mysqld stop >/dev/null 2>&1  
  66.       tar czvf $NewFile $DBPath$DBName >> $LogFile 2>&1  
  67.       /etc/init.d/mysqld start >/dev/null 2>&1  
  68.       echo "[$NewFile]Backup Success!" >> $LogFile  
  69.       ;;   --Vevb.com 
  70.    esac  
  71. fi 
  72. echo "-------------------------------------------" >> $LogFile

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表