linux crontab 备份,mysql定时备份,定时删除N天前的老备份数据

发布时间:2018-04-30作者:laosun阅读(946)

linux

    linux定时备份mysql,并且定时删除N天前的老备份数据。下面来看制作备份的方法

    首先,我们找个目录创建sh可执行文件。博主是在root下创建的备份文件

    [root@iZ255gji7lwZ ~]# cd /root/
    [root@iZ255gji7lwZ ~]# vim mysql_backup.sh #创建新sh文件
    [root@iZ255gji7lwZ ~]# chmod 774 mysql_backup.sh #增加可执行权限

    mysql_backup.sh 内容为:

    #执行备份操作
    username=xxxxxxx
    password=xxxxxxx
    date=`date +%Y%m%d`
    dbname=d_sunjs
    /usr/local/mysql/bin/mysqldump -u $username -p$password $dbname > /mnt/work/databases/d_sunjs_$date.sql
    
    #删除2天前的备份,+2表示2天前的数据
    rm -rf $(find /mnt/work/databases/ -mtime +2 -name "*.sql")

    我们来运行一下

    [root@iZ255gji7lwZ ~]# ./mysql_backup.sh

    去/mnt/work/databases目录下看有没有,如果有则备份成功。

    下边我们来测试删除的成功与否,为了方便测试,这里我们需要修改一下文件的创建的日期

    [root@iZ255gji7lwZ databases]# ll
    总用量 747020
    -rw-r--r-- 1 root root 4月  27 20:43 d_sunjs_20180427.sql
    -rw-r--r-- 1 root root 4月  28 20:43 d_sunjs_20180428.sql
    -rw-r--r-- 1 root root 4月  30 20:43 d_sunjs_20180430.sql

    我已经修改了27和28这两个文件的创建日期以及名字(为了方便识别)。

    [root@iZ255gji7lwZ databases]# mv d_sunjs_20180430.sql d_sunjs_20180429.sql  #修改文件名
    [root@iZ255gji7lwZ databases]# touch  -d "1 days ago" d_sunjs_20180429.sql  #修改文件的创建日期
    [root@iZ255gji7lwZ databases]# ll
    总用量 747020
    -rw-r--r-- 1 root root 4月  27 20:43 d_sunjs_20180427.sql
    -rw-r--r-- 1 root root 4月  28 20:43 d_sunjs_20180428.sql
    -rw-r--r-- 1 root root 4月  29 20:53 d_sunjs_20180429.sql

    下边我们再来执行一遍备份

    [root@iZ255gji7lwZ databases]# . /root/mysql_backup.sh
    Warning: Using a password on the command line interface can be insecure.
    [root@iZ255gji7lwZ databases]# ll
    总用量 747020
    -rw-r--r-- 1 root root 4月  28 20:43 d_sunjs_20180428.sql
    -rw-r--r-- 1 root root 4月  29 20:53 d_sunjs_20180429.sql
    -rw-r--r-- 1 root root 4月  30 20:55 d_sunjs_20180430.sql

    看上边是已经把27号的备份给删除了,并且新增加了备份30.sql,测试成功!!!

    增加定时器

    [root@iZ255gji7lwZ databases]# vim /etc/crontab 
    [root@iZ255gji7lwZ databases]# . /root/mysql_backup.sh
    Warning: Using a password on the command line interface can be insecure.
    SHELL=/bin/bash
    PATH=/sbin:/bin:/usr/sbin:/usr/bin
    MAILTO=root
    HOME=/
    
    # For details see man 4 crontabs
    
    # Example of job definition:
    # .---------------- minute (0 - 59)
    # |  .------------- hour (0 - 23)
    # |  |  .---------- day of month (1 - 31)
    # |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
    # |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,ff
    ri,sat
    # |  |  |  |  |
    # *  *  *  *  * user-name command to be executed
    #上边是默认的文件内容
    #我们来增加我们自己的定时器
    * 1 * * * root /root/mysql_backup.sh  #新增每天凌晨1点进行备份。保存退出

    重启一下crontab

    [root@iZ255gji7lwZ databases]# /etc/rc.d/init.d/crond restart
    停止 crond:                                               [确定]
    正在启动 crond:                                           [确定]

    或者使用systemct1来重新加载

    systemctl命令是系统服务管理器指令,它实际上将 service 和 chkconfig 这两个命令组合到一起。

    [root@laosun ~]# systemctl restart crond


2 +1

版权声明

 数据库  linux  mysql

 请文明留言

0 条评论