• 数据库备份脚本


      当数据库服务器建立好以后,我们首先要做的不是考虑要在这个支持数据库的服务器运行哪些受MySQL提携的程序,而是当数据库遭到破坏后,怎样安然恢复到最后一次正常的状态,使得数据的损失达到最小。 

      或者说,仅仅是数据库服务器的建立,只能说明它能做些什么,并不代表它能稳定的做些什么。灾难恢复的效率及全面性,也是系统的稳定性的一个准因素,尤其对于一个服务器系统。 

      这一节,介绍数据库自动备份以及数据库被破坏后的恢复的方法。在这里,我们使用mysqlhotcopy,并且定义一段Shell脚本来实现数据库的自动备份,并且,让整个数据自动备份与数据恢复过程都基于Shell。

    建立数据库备份所需条件

     [1] 建立自动备份脚本 

      在这里,为了使数据库备份和恢复的符合我们的实际要求,用一段符合要求的Shell脚本来实现整个备份过程的自动化。

    #!/bin/bash 
    # This is a ShellScript For DB Backup  
    # author : mjorcen
    # date : 2014-10-4
    # version : 1.0
    #
    # properties setting
    # 
    #
    DB_name=mysql
    DB_user=root
    DB_passwd=123123
    DB_backPath=/alidata/www/db/bak_data/
    DB_logFile=/alidata/www/db/bak.log
    DB_path=/var/lib/mysql/
    
    backupMethod=mysqldump 
    
    #backupMethod=mysqlhotcopy 
    #backupMethod=tar 
    #Setting End 
    #
    newFile="$DB_backPath"db_$(date +%y%m%d).tar.gz
    dumpFile="$DB_backPath"db_$(date +%y%m%d)
    oldFile="$DB_backPath"db_$(date +%y%m%d --date='7 days ago').tar.gz
    cat >> $DB_logFile << END
    ###########################################################################################################
    ###         date    : $(date +"%y-%m-%d %H:%M:%S")                                       ###
    ###         newFile    : $newFile                          ###
    ###         dumpFile: $dumpFile                               ###
    ###         oldFile : $oldFile                               ###
    ###########################################################################################################
    END
    
    
    #do delete 
    if [ -f $oldFile ]
        then
            rm -f $oldFile >> $DB_logFile 2>&1
            echo "[$oldFile] deleted successfully " >> $DB_logFile
        else
            echo "[$oldFile] does not exists " >> $DB_logFile
    fi
    
    # verify newFile 
    if [ -f $newFile ]
        then
            echo "[$newFile] was exists " & exit 1
    fi
    
    # doBak 
    case $backupMethod in
    
        mysqldump)
    
            if [ -f $dumpFile ]
                then
    #                mkdir -p $dumpFile
                    rm -f $dumpFile
            fi
        
            if [ -z $DB_passwd ]
                then
                    mysqldump -u$DB_user --opt $DB_name > $dumpFile
                else
                    mysqldump -u$DB_user -p$DB_passwd --opt $DB_name > $dumpFile
            fi
            tar -cvzf  $newFile  $dumpFile >> $DB_logFile 2>&1
            rm -f $dumpFile
        ;;
        mysqlhotcopy)
            if [ -f $dumpFile ]
                then
                    rm -Rf $dumpFile >> $DB_logFile 2>&1
            fi
            mkdir -p $dumpFile >> $DB_logFile 2>&1
            
            if [ -z $DB_passwd ]
                then
                    mysqlhotcopy -u$DB_user $DB_name $dumpFile >> $DB_logFile 2>&1
                else
                    mysqlhotcopy -u$DB_user -p$DB_passwd $dumpFile >> $DB_logFile 2>&1
            fi
        
            tar -cvzf  $newFile  $dumpFile >> $DB_logFile 2>&1
            echo "mysqlhotcopy [$newFile] has successfully" >> $DB_logFile 
            rm -Rf $dumpFile  >> $DB_logFile 2>&1
        ;;
        *)
            /etc/init.d/mysqld stop >> $DB_logFile 2>&1
            tar -cvzf  $newFile  $DB_path$DB_name >> $DB_logFile 2>&1
            /ect/init.d/mysqld start >> $DB_logFile 2>&1
            echo "tar [$newFile] backup successfully" >> $DB_logFile 2>&1
        ;;
    
    esac
    
    
    
    echo  ... end ... >> $DB_logFile 2>&1


    [2] 运行数据库自动备份脚本

    [root@CentOS ~]# chmod 700 mysql-backup.sh  改变脚本属性,让其只能让root用户执行  
    [root@CentOS ~]# ./mysql-backup.sh   运行脚本  
    [root@CentOS ~]# ll bak_data/
    total 168
    -rw-r--r-- 1 root root 170529 Oct  4 15:03 db_141004.tar.gz

      已成功备份到/backup/mysql目录中 

    [3] 让数据库备份脚本每天自动运行 

    [root@sample ~]# crontab -e  ← 编辑自动运行规则(然后会出现编辑窗口,操作同vi)  
    00 03 * * * /root/mysql-backup.sh   添加这一行到文件中,让数据库备份每天凌晨3点进行

      测试自动备份正常运转与否(备份恢复的方法) 
      这里,以通过实际操作的过程来介绍问题出现后的恢复方法。 

    其他资料:  http://wenku.baidu.com/view/46bb56cea1c7aa00b52acbc0.html

  • 相关阅读:
    关于__attribute__[转]
    Boost Posix Time
    c++ explicit构造函数[转]
    C++11 多线程:数据保护[转]
    C++ int,char,string,CString类型转换(整理总结)
    C和C++如何来编写时间的程序[转]
    设置CentOS防火墙开放端口
    SSH框架
    20060518: Alert!
    yum命令时出现Error: xz compression not available问题。
  • 原文地址:https://www.cnblogs.com/mjorcen/p/4006010.html
Copyright © 2020-2023  润新知