mysql基于mysqldump脚本的逻辑备份
程序员文章站
2022-12-21 08:43:14
#!/bin/bash#自动备份脚本# you can use like this:./backupShell.sh -u mysql -p dongvsql -d vhr -f /media/dongv/_dde_data/mysql/backup -l /media/dongv/_dde_data/mysql/backuplog/myql_backup.log# https://github.com/toolzone/mysql_web_backup/blob/master/Mysql_back....
#!/bin/bash
#自动备份脚本
# you can use like this:./backupShell.sh -u mysql -p dongvsql -d vhr -f /media/dongv/_dde_data/mysql/backup -l /media/dongv/_dde_data/mysql/backuplog/myql_backup.log
# https://github.com/toolzone/mysql_web_backup/blob/master/Mysql_backup.sh
# 当前问题:1.mysqldump在读取的时候会将表的写操作锁住
# -u 用户名
# -p 密码
# -d 数据库
# -f 输出路径
# -l 日志路径
#定义所需变量
BAKE_PATH="/media/dongv/_dde_data/mysql/backup" #备份后存放目录
LOG_PATH="/media/dongv/_dde_data/mysql/backuplog/myql_backup.log" #备份日志存放目录及日志名称
filename="" #备份存放文件名称
username="" #用户名
password="" #密码
database="" #数据库名称
table="" #表名称
# 参数化定制 -p是sql文件路径,-l是日志文件路径,-n是文件名称(包含压缩过后以及导出为sql文件的名称)
while [ -n "$1" ]
do
case "$1" in
-u)username="$2"
echo "the username is :${username}"
;;
-p)password="$2"
echo "the password is:${password}"
;;
-d)database="$2"
echo "the database is:${database}"
;;
-t)table="$2"
echo "the table is:${table}"
;;
-f)BAKE_PATH="$2"
echo "the backPath is:${BAKE_PATH}"
;;
-l)LOG_PATH="$2"
echo "the logPath is:${LOG_PATH}"
;;
# esac是作为case的结尾
esac
# shift在这里是调转下一个入参
shift
done
filename="`date '+%Y-%m-%d%H:%M:%S'`_${database}.tar.gz" #压缩包文件
sqlfile="`date '+%Y-%m-%d%H:%M:%S'`_${database}.sql" #导出的sql文件
to_file="${BAKE_PATH}/${filename}"
#备份失败退出
ERR_QUIT=1
#自动删除删除超期文件
#保留30多少天前的文件
OVERTIME=30
#删除超期文件
find $BAKE_PATH -ctime +$OVERTIME -a -name "*${database}.tar.gz" -exec rm -f {} \;
if [ $? -eq 0 ];then
echo -e "`date '+%Y-%m-%d%H:%M:%S'`\t删除过期文件成功">>$LOG_PATH
#调试时输出日志信息
# tail -1 $LOG_PATH
fi
#进行备份操作
echo "the backPath is: ${BAKE_PATH}"
echo "the sqlfile is :${sqlfile},username:${username},password:${password},database:${database}"
mysqldump -u $username -p$password $database > "${BAKE_PATH}/${sqlfile}"
#将生成的SQL文件压缩
echo "tarfile:${to_file}"
echo "sqlfile:${BAKE_PATH}/${sqlfile}"
tar zcf $to_file "${BAKE_PATH}/${sqlfile}" &> /dev/null
#echo $?
#判断是否备份成功
if [ $? -eq 0 ]; then
echo -e "`date '+%Y-%m-%d%H:%M:%S'`\t备份成功">>$LOG_PATH
#备份成功删除生成的SQL文件,保留压缩包
rm -rf $sqlfile
else
echo -e "`date '+%Y-%m-%d%H:%M:%S'`\t备份失败">>$LOG_PATH
exit $ERR_QUIT
fi
#空间占用百分比
echo "log:${LOG_PATH}"
percent=$(df $BAKE_PATH |awk '/dev/{print $5}')
echo -e "当前空间的占用百分比:$percent">>$LOG_PATH
#输出日志信息
echo "logfile:${LOG_PATH}"
tail -2 $LOG_PATH
本文地址:https://blog.csdn.net/weixin_43321343/article/details/107338943
下一篇: 世界上最小的牛在哪里?牛的体型有多小?
推荐阅读
-
Windows下实现MySQL自动备份的批处理(复制目录或mysqldump备份)
-
MySQL数据备份之mysqldump的使用详解
-
mysql数据库备份及恢复命令 mysqldump,source的用法
-
浅谈mysqldump使用方法(MySQL数据库的备份与恢复)
-
MySQL数据备份之mysqldump的使用详解
-
mysql数据库备份及恢复命令 mysqldump,source的用法
-
浅谈mysqldump使用方法(MySQL数据库的备份与恢复)
-
MySQL数据库的shell脚本自动备份
-
Windows下简单的Mysql备份BAT脚本分享
-
推荐没有虚拟主机的小巧的Mysql数据库备份脚本(PHP)