zoukankan      html  css  js  c++  java
  • linux 定时备份数据库

    #可以将这个脚本放进/etc/crontab,01 0 * * * mysqlbackup.sh  
    #好了,每周天凌晨 00:01 系统就会自动运行 backup.sh 文件备份 MySQL 数据库了。
    #自动备份这个脚本每天最多只执行一次,而且只保留最近五天的备份在服务器上。  
    #代码:

    #!/bin/bash  
    #Setting  
    #设置数据库名,数据库登录名,密码,备份路径,日志路径,数据文件位置,以及备份方式  
    #默认情况下备份方式是mysqldump,还可以是mysqldump,mysqldotcopy,如果注释掉第
    #18行,则默认以tag的方式备份
    #默认情况下,用root(空)登录mysql数据库,备份至/root/dbxxxxx.tgz  
    DBName=mysql
    DBUser=root
    DBPasswd=123456
    BackupPath=/home/wang/www/backup/mysql/mysqlbackup
    LogFile=/home/wang/www/backup/mysql/db.log
    DBPath=/var/lib/mysql/
    #BackupMethod=mysqldump
    #BackupMethod=mysqlhotcopy
    #BackupMethod=tar
    #Setting End

    NewFile="$BackupPath"db$(date +%y%m%d).tgz  
    DumpFile="$BackupPath"db$(date +%y%m%d)  
    OldFile="$BackupPath"db$(date +%y%m%d --date='5 days ago').tgz  
    echo "-------------------------------------------" >> $LogFile  
    echo $(date +"%y-%m-%d %H:%M:%S") >> $LogFile  
    echo "--------------------------" >> $LogFile  
    #Delete Old File
    if [ -f $OldFile ]  
    then  
       rm -f $OldFile >> $LogFile 2>&1  
       echo "[$OldFile]Delete Old File Success!" >> $LogFile  
    else  
       echo "[$OldFile]No Old Backup File!" >> $LogFile  
    fi  
    if [ -f $NewFile ]  
    then  
       echo "[$NewFile]The Backup File is exists,Can’t Backup!" >> $LogFile  
    else  
       case $BackupMethod in  
       mysqldump*)
          if [ -z $DBPasswd ]
          then  
             mysqldump -u $DBUser --opt $DBName > $DumpFile  
          else  
             mysqldump -u $DBUser -p$DBPasswd --opt $DBName > $DumpFile  
          fi  
          tar czvf $NewFile $DumpFile >> $LogFile 2>&1  
          echo "[$NewFile]Backup Success!" >> $LogFile  
          rm -rf $DumpFile  
          ;;  
       mysqlhotcopy*)  
          rm -rf $DumpFile  
          mkdir $DumpFile  
          if [ -z $DBPasswd ]  
          then  
             mysqlhotcopy -u $DBUser $DBName $DumpFile >> $LogFile 2>&1  
          else  
             mysqlhotcopy -u $DBUser -p $DBPasswd $DBName $DumpFile >>$LogFile 2>&1  
          fi  
          tar czvf $NewFile $DumpFile >> $LogFile 2>&1  
          echo "[$NewFile]Backup Success!" >> $LogFile  
          rm -rf $DumpFile  
          ;;  
       *)  
          /etc/init.d/mysqld stop >/dev/null 2>&1  
          tar czvf $NewFile $DBPath >> $LogFile 2>&1  
          /etc/init.d/mysqld start >/dev/null 2>&1  
          echo "[$NewFile]Backup Success!" >> $LogFile  
          ;;  
       esac
    fi
    echo "-------------------------------------------"
    echo

    #lftp -f lftp.sh 如果有FTP可同时上传ftp中。


     再利用crontab命令生成/var/spool/cron/root 文件

    crontab –e   (就会打开一个编辑窗口,第一行会有内容格式的提示,在此输入命令)

     m h  dom mon dow   command  (具体意义表示:分钟 小时 日期 月份 星期 命令,在某月(mon)的某天(dom)或者星期几(dow)的几点(h,24小时制)几分(m)执行某个命令(command))

    如: 10 02 * * * /home/backup/autobackupmysql.sh  (表示零晨二点十分执行备份脚本)

  • 相关阅读:
    bzoj2733 永无乡 平衡树按秩合并
    bzoj2752 高速公路 线段树
    bzoj1052 覆盖问题 二分答案 dfs
    bzoj1584 打扫卫生 dp
    bzoj1854 游戏 二分图
    bzoj3316 JC loves Mkk 二分答案 单调队列
    bzoj3643 Phi的反函数 数学 搜索
    有一种恐怖,叫大爆搜
    BZOJ3566 概率充电器 概率dp
    一些奇奇怪怪的过题思路
  • 原文地址:https://www.cnblogs.com/myphoebe/p/2230108.html
Copyright © 2011-2022 走看看