数据库备份有很多种方法,最常用的一般是数据库自动定时备份了,下面我来介绍在linux中利用shell脚本进行MySQL数据库定时备份方法.
具体方法,代码如下:
- #!/bin/bash
- #ShellCommandForBackupMySQLDatabaseEverydayAutomaticallyByCrontab
- #Author:CarlosWong
- #Date:2010-08-24
配置参数,代码如下:
- USER=root#数据库用户名">用户名
- PASSWORD=×××××#数据库用户密码
- DATABASE=TIENIUZAI#数据库名称
- WEBMASTER=tieniuzai@qq.com#管理员邮箱地址,用以发送备份失败消息提醒
- BACKUP_DIR=/var/www/Data_Backup/topons/#备份文件存储路径
- LOGFILE=/var/www/Data_Backup/topons/data_backup.log#日记文件路径
- DATE=`date‘+%Y%m%d-%H%M’`#日期格式(作为文件名)
- DUMPFILE=$DATE.sql#备份文件名
- ARCHIVE=$DATE.sql.tgz#压缩文件名
- OPTIONS=”-u$USER-p$PASSWORD–opt–extended-insert=false–triggers=false-R–hex-blob–flush-logs–delete-master-logs-B$DATABASE”#mysqldump参数详情见帮助mysqldump-help
判断备份文件存储目录是否存在,否则创建该目录,代码如下:
- if[!-d$BACKUP_DIR];
- then
- mkdir-p“$BACKUP_DIR”
- fi
开始备份之前,将备份信息头写入日记文件,代码如下:
- echo””>>$LOGFILE
- echo””>>$LOGFILE
- echo“———————————————–”>>$LOGFILE
- echo“BACKUPDATE:”$(date+”%y-%m-%d%H:%M:%S”)>>$LOGFILE
- echo“———————————————–”>>$LOGFILE
切换至备份目录,代码如下:
cd $BACKUP_DIR
使用mysqldump 命令备份制定数据库,并以格式化的时间戳命名备份文件,代码如下:
mysqldump $OPTIONS > $DUMPFILE
判断数据库备份是否成功,代码如下:if [[ $? == 0 ]]; then
创建备份文件的压缩包,代码如下:
tar czvf $ARCHIVE $DUMPFILE >> $LOGFILE 2>&1
输入备份成功的消息到日记文件,代码如下:
echo “[$ARCHIVE] Backup Successful!” >> $LOGFILE
删除原始备份文件,只需保 留数据库备份文件的压缩包即可,代码如下:
- rm-f$DUMPFILE
- else
- echo“DatabaseBackupFail!”>>$LOGFILE
备份失败后向网站管理者发送邮件提醒,需要mailutils或者类似终端下发送邮件工具的支持,代码如下:
#mail -s “Database:$DATABASE Daily Backup Fail” $WEBMASTER