zoukankan      html  css  js  c++  java
  • CentOS下使用crontab+mysqldump实现定时自动备份数据库

    一 : 为什么要进行数据库的备份? 

    最主要的原因:尽可能地减少损失,包括时间上、精神上和金钱上的损失。很多人都不注意备份数据,以致在发生问题后丢失大量的重要数据。要知道,在地球上网是很危险的,即使做好安全预防措施,也难免会发生不可预想的问题。因此,数据备份是日常必不可少的操作。数据库的备份用mysqldump

    二 : 定时自动备份数据库

    由于数据库如此重要,以至于我们要经常备份数据库,但是,由于白天的时候,数据库处于活跃的状态,这时候备份数据库可能会漏存数据,更有可能会导致出错,因此一般会选择在凌晨备份数据库。问题来了,难道要一个数据库管理员凌晨两点起床备份数据库?这时候LINUX的CRONTAB定时任务排上用场了!有关CRONTAB的内容请参考我的另一篇博客 CRONTAB定时任务(window系统可以使用 ‘任务计划’)

    三 : 编写一个shell脚本,执行备份

    我们可以在根目录下编写这么一个脚本 : /serverBack/mysqlBack.sh

    脚本内容如下:

    方法一:

    ##使用mysqldump备份数据库test
    mysqldump -uroot -ppasswd test >> /serverBack/dbBack/test_$(date+”%Y_%m_%d”).sql

    ##找到/serverBack/dbBack/下文件名称以test_开头,以 .sql 结尾的文件,并且是7天前系统修改过的文件,将其删除
    find /serverBack/dbBack/ -mtime +7 -name “test_*.sql” -exec rm -rf {} ;

    方法二:

    mysqldump -uroot -ppwd dbname > dir/db_date +%F.sql

    保留近一周的备份文件,更早的删除

    find /dir -mtime +7 -name”db_*.sql” -exec rm -rf {} ;

    方法三:

    filename=’date +%y%m%d’

    mysqldump -uroot-proot test >>/serverBack/dbBack/$filename.sql

    比较齐全,常用的shell脚本内容如下:

    ## 记录日志
    echo "---------------------------------------------------" >> /serverBack/dbBack/dbBackLog.log
    echo $(date +"%Y-%m-%d %H:%M:%S") "test Database backup start"  >> /serverBack/dbBack/dbBackLog.log
    ## 开始备份
    mysqldump -uroot -ppwd test >> /serverBack/dbBack/test_$(date +"%Y-%m-%d").sql
    ## $? 判断上一次操作是否成功,备份成功返回0
    if [ 0 -eq $? ];then
    
        if [ -f "/serverBack/dbBack/test_$(date +"%Y-%m-%d").sql" ];then
            echo $(date +"%Y-%m-%d %H:%M:%S") "test Database backup success!" >> /serverBack/dbBack/dbBackLog.log
        else
            echo $(date +"%Y-%m-%d %H:%M:%S") "test Database backup fail!" >> /serverBack/dbBack/dbBackLog.log
        fi
    
    else
        echo $(date +"%Y-%m-%d %H:%M:%S") "test Database backup error!" >> /serverBack/dbBack/dbBackLog.log
    
    fi
    
    echo "---------------------------------------------------" >> /serverBack/dbBack/dbBackLog.log
    ## 删除七天前的数据,防止数据冗余
    find /serverBack/dbBack/ -mtime +7 -name "test_*.sql" -exec rm -rf {} ;
    ## find后面的';'不能省略

     

     

    此时,我们在命令行模式下执行该脚本: sh /serverBack/mysqlBack.sh
    此时我们就可以备份数据库了,但是我们还没有实现定时自动备份。赶紧测试一下你能不能备份成功吧!

    四 : 实现定时自动备份数据库

    有关CRONTAB的内容请参考我的另一篇博客 crontab定时任务

    crontab –e ##编辑定时任务

    添加定时任务内容:

    ##每天定时15:00:00 执行脚本 /serverBack/mysqlBack.sh
    00 15 * * * sh /serverBack/mysqlBack.sh

    命令:

    crontab –e ##编辑定时任务
    crontab –r 删除所有定时任务
    crontab –l 列出所有定时任务

     

    转:https://blog.csdn.net/baidu_30000217/article/details/51106192

  • 相关阅读:
    MVP模式
    开源代码SlidingMenu的使用
    常用命令(Linux、Android、adb)
    一文搞清楚Minor GC、Major GC 、Full GC 之间的关系
    阿里最新38道Java面试题解析(MyBatis+消息队列+Redis)
    从5个方面让你真正了解Java内存模型
    深入理解JVM:元空间大小详细解析
    面试必问:JVM类加载机制详细解析
    5个点彻底搞清楚SpringBoot注解
    8种创建Java线程的方式,你知道几个?
  • 原文地址:https://www.cnblogs.com/huchong/p/9323517.html
Copyright © 2011-2022 走看看