展开全部
你贴上来的代码有以下几个问题:
1、一些地方该换行的没有换行,引号变成了中文的,网上复制的代码通32313133353236313431303231363533e59b9ee7ad9431333332623330常都有此问题。
2、日期时间格式化的用法不正确
3、长参数前缀应该是两个-号,而不是一个
4、--delete-master-logs 选项如果只有一个主库,则什么都备份不到。我移除了。
以下是我修改的文件,经过测试已经可以执行。# encoding: utf-8
#配置参数
USER=root #数据库用户名
PASSWORD=root #数据库用户密码
DATABASE=EmailSystemDB #数据库名称
WEBMASTER="123456789@qq.com" #管理员邮箱地址,用以发送备份失败消息提醒
BACKUP_DIR=backup #备份文件存储路径
LOGFILE=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 -B $DATABASE"
#mysqldump 参数 详情见帮助 mysqldump -help
#判断备份文件存储目录是否存在,否则创建该目录
if [ ! -d $BACKUP_DIR ]; then
mkdir -p "$BACKUP_DIR"
fi
#开始备份之前,将备份信息头写入日记文件
echo " " >> $LOGFILE echo " " >> $LOGFILE
echo "———————————————–" >> $LOGFILE
echo "BACKUP DATE:" $(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 "Database Backup Fail!" >> $LOGFILE
#备份失败后向网站管理者发送邮件提醒,需要mailutils或者类似终端下发送邮件工具的支持
#如果需要发邮件,且mail配置好了,就去掉下面的注释
#mail -s “Database DATABASE Daily Backup Fail” $WEBMASTER
fi
#输出备份过程结束的提醒消息
echo "Backup Process Done"
希望能给个采纳。