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  (表示零晨二点十分执行备份脚本)



  • 相关阅读:
    NGINX学习(二)--nginx配置文件详解
    NGINX学习(一)--nginx的安装与启动
    Linux服务器参数查看命令
    记录工作中遇到的那些坑(一)--NGINX配置worker_connections
    Mysql视图触发器函数事务
    pymsql
    装饰器模型
    多进程属性和方法
    mysql
    FTP简单的大文件传输
  • 原文地址:https://www.cnblogs.com/wang123/p/1747158.html
Copyright © 2011-2022 走看看