Linux下mysql数据库的自动备份批处理文件,哪位高人帮我看看

#配置参数USER=root#数据库用户名PASSWORD=dfsf9erf#数据库用户密码DATABASE=****#数据库名称WEBMASTER=********@q... #配置参数
USER=root #数据库用户名
PASSWORD=dfsf9erf #数据库用户密码
DATABASE=**** #数据库名称
WEBMASTER=********@qq.com #管理员邮箱地址,用以发送备份失败消息提醒 BACKUP_DIR=/alidata/dbbackup #备份文件存储路径 LOGFILE=/alidata/dbbackup/data_backup.log #日记文件路径
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 “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 -s “Database DATABASE Daily Backup Fail”
$WEBMASTER fi
#输出备份过程结束的提醒消息 echo “Backup Process Done”

以上代码从网络上找的,然后运营后提示错误:
/usr/bin/mysqlscript.sh: 9: /usr/bin/mysqlscript.sh: -p9e78092fab: not found
/usr/bin/mysqlscript.sh: 31: /usr/bin/mysqlscript.sh: Syntax error: end of file unexpected (expecting "fi")
展开
 我来答
nbyh2012
推荐于2016-09-19 · TA获得超过3278个赞
知道小有建树答主
回答量:483
采纳率:100%
帮助的人:794万
展开全部

你贴上来的代码有以下几个问题:

1、一些地方该换行的没有换行,引号变成了中文的,网上复制的代码通常都有此问题。

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"

 

希望能给个采纳。

更多追问追答
追问
试着执行,然后还有个问题:mysqlscript.sh: 33: /usr/bin/mysqlscript.sh: [[: not found;
我一开始觉得是多了个[,但去除后还是有问题。
试着执行,然后还有个问题:mysqlscript.sh: 33: /usr/bin/mysqlscript.sh: [[: not found;
我一开始觉得是多了个[,但去除后还是有问题。
今至电子科技有限公司
2024-08-23 广告
数据库备份是确保数据安全与业务连续性的关键环节。我们上海今至电子科技有限公司高度重视数据保护,定期执行全面的数据库备份策略。这包括使用先进工具和技术,对关键业务数据进行自动化备份,并存储在安全可靠的外部存储介质或云端。通过定期验证备份的完整... 点击进入详情页
本回答由今至电子科技有限公司提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式