使用linux的shell脚本来批量备份数据库,但是数据库并不一定是存在的。而执行会导致报错:
mysqldump -u$DbUser -p$DbPwd --master-data $dbname | gzip > $filepath if [ $? -eq 0 ] then echo "[$dbname] $filepath success!" >> $LogFile else echo "[$dbname] $filepath Error Failed" >> $LogFile rm -rf $filepath fi
当数据库是不存在的时候,使用$?
捕获到的还是0
导致备份提示成功。
这里是如何判断数据库 mysqldump 是否有报错提示?
可以在mysqldump命令中添加一个错误输出重定向到文件,如
mysqldump xx oo 2>err.log|gzip >...
然后在if语句里判断err.log是否为空
[ -s err.log ]
,为空则表示成功,不为空则为失败。我一般会写一个简单的 php 或 python 脚本检查数据库,exit 不同的值。