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") 展开
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") 展开
1个回答
展开全部
你贴上来的代码有以下几个问题:
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 广告
2024-08-23 广告
数据库备份是确保数据安全与业务连续性的关键环节。我们上海今至电子科技有限公司高度重视数据保护,定期执行全面的数据库备份策略。这包括使用先进工具和技术,对关键业务数据进行自动化备份,并存储在安全可靠的外部存储介质或云端。通过定期验证备份的完整...
点击进入详情页
本回答由今至电子科技有限公司提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询