写了个shell/ target=_blank class=infotextkey>shell脚本,用于每天凌晨2点30分备份项目中的一个库。
1、先确定软件包和crond服务运行情况:
查看是否安装vixie-crom-4.1-44.EL4软件包
查看crond服务的运行状态:
2、编写shell脚本:
#!/bin/sh
USER="root" #DB用户名
PASSWORD="pwd" #DB密码
DATABASE="test" #DB数据库名
WEBMASTER=yangfei_luck@163.com #错误发送邮箱
BACKUP_DIR="/export/home/wwwroot/webapps/testScripting/Data_backup" #备份文件存放目录
LOGFILE="/export/home/wwwroot/webapps/testScripting/Data_backup/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 --routines --hex-blob $DATABASE" #备份操作
#判断备份目录是否存在,如果不存在则创建一个
if [ ! -d $BACKUP_DIR ] ;
then
mkdir -p "$BACKUP_DIR"
fi
echo ----------------------------------------- >> $LOGFILE
echo BACKUP DATE: `date +%Y-%m-%d-%H:%M:%S` >> $LOGFILE
echo Backup Process Begin >> $LOGFILE
#更换目录
cd $BACKUP_DIR
#执行备份操作
mysqldump $OPTIONS > $DUMPFILE
#判断备份是否成功
if [[ $? == 0 ]]; then
#创建备份文件压缩包
tar czvf $ARCHIVE $DUMPFILE >> $LOGFILE 2>&1
echo [$ARCHIVE] Backup Successful! >> $LOGFILE
#删除原备份文件,只留压缩包
rm -f $DUMPFILE
#备份失败,发送错误消息到邮箱(需要mailutils或者类似终端下发送邮件工具的支持)
else
echo “Database Backup Fail!” >> $LOGFILE
#mail -s “Database:$DATABASE Daily Backup Fail” $WEBMASTER
fi
echo Backup Process End >> $LOGFILE
echo “Backup Process Done”
echo ----------------------------------------- >> $LOGFILE
3、配置定时器:
crontab中每一行代表一个任务,格式如下:
minute hour day month dayofweek command
Shell脚本是写不同类型命令的一种脚本,这些命令在这一个文件中就可以执行。(www.jb200.com 脚本学堂)
也可以逐一敲入命令手动执行。如果要使用shell脚本就必须在一开始把这些命令写到一个文本文件中,以后就可以随意反复运行这些命令了。
这里假定你已知道shell scripting、 mysqldump和crontab。
不明白的同学,看这里:
适用操作系统:任何linux或UNIX。
主脚本(用于备份mysql数据库):
该Shell脚本可以自动备份数据库。只要复制粘贴本脚本到文本编辑器中,输入数据库用户名、密码以及数据库名即可。我备份数据库使用的是mysqlump 命令。后面会对每行脚本命令进行说明。
1. 分别建立目录“backup”和“oldbackup”
2. 现在使用你喜欢的编辑软件创建并编辑“backup.sh”
这里我用的是 vi
# vi /backup/backup.sh
现在把以下几行命令输入到 backup.sh 文件中:
脚本说明:
在第8行命令中,在mysqldump命令后要输入自己的数据库用户名、密码及数据库名。
执行该脚本,首先会进入 /backup 目录,然后该脚本会把原有的旧数据库备份移动到 /oldbackup 文件夹中,接着根据系统的日期及时间生成一个文件名,在最后 mysqldump 命令会生成一个“.sql”格式的数据库备份文件。
3. 设置 backup.sh 脚本文件的可执行许可
4、执行脚本
#./backup.sh
脚本运行结束后会得到以下输入。
注:首次执行该脚本会有一个“no such file”的提示信息,这是由于旧备份文件还不存在。只要再次执行该脚本就没有问题了,这个问题已经不存在了。
5、使用cron制订备份计划
使用Cron可以定时执行该脚本,备份会自动完成。使用 crontab 命令编辑cron 执行的计划任务。
#crontab –e
只要在编辑器上加入下面这一行代码保存即可。
0 13 * * * * /backup/backup.sh
本任务表示的是在每天下午1点钟把数据库备份到指定的文件夹。有关cron任务设置的详细内容可以查阅crontab手册。
有关cron任务设置的详细内容可以查阅crontab手册,或参考如下文章:
以上就是有关定时自动备份mysql的shell脚本的实例详解,希望对大家有所帮助。