#Mysql 定时备份计划


一、需求

1、每周全备份整个数据库,压缩备份sql文件
2、压缩备份sql文件
3、定时清理一个月以前的sql文件

二、设计思路

1、编写shell脚本完成 数据库备份 及压缩命令
2、利用crontab服务,添加用户定时服务

三、实现步骤

1、创建备份文件夹

   #cd /var
    #mkdir /var/backup/mysql

2、编写shell脚本

#!/bin/bash
# Name:bakmysql.sh
# This is a ShellScript For Auto DB Backup and Delete old Backup
#
## put your mysql username and passpord and the database you would backup
username='root'
passwprd='123456'
database=dpmappuser
backupdir=/var/backup/mysql
DATE=$(date +%Y%m%d%H%M)
echo ${date}
DPM_FILE_NAME=${database}_${DATE};
echo ${DPM_FILE_NAME}

#backup 
cd ${backupdir}
mysqldump -u${username} -p${password} ${database} > ${DPM_FILE_NAME}.sql 
#########compress sql file##################

tar -zcvf ${DPM_FILE_NAME}.sql.tar.gz ${DPM_FILE_NAME}.sql
rm -rf ${DPM_FILE_NAME}.sql
find $backupdir -name ${database}"_*.sql.tar.gz" -type f -mtime +30 -exec rm {} \; > /dev
/null 2>&1

3、代码解释:

dataname:数据库名; user:数据库用户名; password:用户密码; name:自定义备份文件前缀标识。
-type f 表示查找普通类型的文件,f表示普通文件。
-mtime +5 按照文件的更改时间来查找文件,+5表示文件更改时间距现在5天以前;如果是 -mmin +5 表示文件更改时间距现在5分钟以前。
-exec rm {} \; 表示执行一段shell命令,exec选项后面跟随着所要执行的命令或脚本,然后是一对儿{ },一个空格和一个\,最后是一个分号。 /dev/null 2>&1
把标准出错重定向到标准输出,然后扔到/DEV/NULL下面去。通俗的说,就是把所有标准输出和标准出错都扔到垃圾桶里面;其中的&
表示让该命令在后台执行。

4、为脚本添加执行权限

# chmod +x /usr/sbin/bakmysql.sh

5、修改/etc/crontab(在centOS5中测试可行)

#vi /etc/crontab  
在最后一行中加入:  
0 23 * * 6  root /var/backup/mysql/bakmysql.sh
表示每天230分执行备份

或者

#crontab -e  
在最后一行中加入:  
0 23 * * 6 root /var/backup/mysql/bakmysql.sh
表示每周六的230分执行备份

你可能感兴趣的:(sql)