linux定时备份数据库

2016-06-02 16:49:13 查看 1424 回复 0

#!/bin/bash
# Name:bakmysql.sh
# This is a ShellScript For Auto DB Backup and Delete old Backup
#备份地址
backupdir=/home/mysqlbackup
#备份文件后缀时间
time=_` date +%Y_%m_%d_%H_%M_%S `
#需要备份的数据库名称
db_name=test
#mysql 用户名
db_user=root
#mysql 密码
db_pass=123456
mysqldump -u $db_user -p$db_pass $db_name | gzip > $backupdir/$db_name$time.sql.gz
#删除一分钟之前的备份文件
find $backupdir -name $db_name"*.sql.gz" -type f -mmin +1 -exec rm -rf {} \; > /dev/null 2>&1
保存退出

代码中 time=` date +%Y%m%d%H `也可以写为time=”$(date +”%Y%m%d$H”)”其中`符号是TAB键上面的符号,不是ENTER左边的’符号,还有date后要有一个空格。
db_name:数据库名;db_user:数据库用户名;
db_pass:用户密码;-type f    表示查找普通类型的文件,f表示普通文件。
-mtime +7   按照文件的更改时间来查找文件,+7表示文件更改时间距现在7天以前;如果是 -mmin +7 表示文件更改时间距现在7分钟以前。

-exec rm {} ;   表示执行一段shell命令,exec选项后面跟随着所要执行的命令或脚本,然后是一对儿{},一个空格和一个,最后是一个分号。/dev/null 2>&1  把标准出错重定向到标准输出,然后扔到/DEV/NULL下面去。通俗的说,就是把所有标准输出和标准出错都扔到垃圾桶里面;其中的&表示让该命令在后台执行。


检查有没安装crond,如果没有,先安装 yum -y install vixie-cron yum -y install crontabs 启动服务 :service crond start 在CentOS系统中加入开机自动启动: chkconfig --level 345 crond on

crontab -e 加入内容:00 03 * * * source /root/autobackupmysql.sh  每天凌晨3点运行此文件,对数据库进行备份

 service crond restart

完成


操作命令如下:

  /sbin/service crond start 启动

  /sbin/service crond restart 重启

  /sbin/service crond stop 停止

  /sbin/service crond status 查询状态

查看服务是否已经运行用 

ps -ax | grep cron

查看调度任务crontab -l //列出当前的所有调度任务crontab -r   //删除所有任务调度工作

参考地址:

http://www.blogjava.net/freeman1984/archive/2010/09/23/332715.html

https://my.oschina.net/u/1866821/blog/374525

*任务文件地址 /var/spool/cron/执行的用户名