自动备份项目中的MySQL数据库
指定备份路径,自动搜索所有数据库,可以添加到Linux定时任务中
#!/bin/bash
# 备份MySQL数据库的脚本
# 2019年3月13日
backup_folder="mysqlbackup"$(date +%Y-%m-%d)
backup_path="/root/django-web/StarMeow/project_bak/${backup_folder}" # 文件保存路径
# 判断文件夹是否存在,如果不存在则创建
if test -d $backup_path
then
echo "文件夹 $backup_folder 存在"
else
echo "文件夹 $backup_folder 不存在,创建中"
mkdir $backup_path
fi
mysql_user="root"
mysql_pswd="test"
function check_exist(){
if [ ! -e $1 ] # 如果sql文件不存在,进行备份
then
echo "$(date +"%Y-%m-%d %H:%M:%S") 正在备份 $1 数据库" >> $backup_path/backup_log.log
else
echo "$(date +"%Y-%m-%d %H:%M:%S") 删除 $1 数据库备份后重新备份" >> $backup_path/backup_log.log
rm $1
fi
}
function backup_mysql(){
echo "备份 $1 数据库中..."
# 备份数据库
database_dump="${backup_path}/database_$1.sql"
# 命令执行备份
if test -z $2 # 第二个参数为空也就是不用压缩
then
check_exist $database_dump
mysqldump -u$mysql_user -p$mysql_pswd $1 > $database_dump
elif test $2 = "gzip"
then
check_exist $database_dump.gz
# 压缩数据库备份
mysqldump -u$mysql_user -p$mysql_pswd $1 | gzip > $database_dump.gz
else
echo "命令、参数错误"
fi
if [ $? == 0 ]
then
echo -e "$(date +"%Y-%m-%d %H:%M:%S") 数据库 $1 备份成功$2\n" >> $backup_path/backup_log.log
else
echo -e "$(date +"%Y-%m-%d %H:%M:%S") 数据库 $1 备份出错$2\n" >> $backup_path/backup_log.log
fi
}
# 判断,mysql是否安装
mysql_version=$(mysql -V)
if [ $? == 127 ]; then
echo mysql命令没找到,可能没安装
else
echo "当前mysql版本:$mysql_version" >> $backup_path/backup_log.log
echo "$(date +"%Y-%m-%d %H:%M:%S") 自动备份mysql数据库到 $backup_path 目录" >> $backup_path/backup_log.log
# 备份指定名字数据库
# backup_mysql "djangostarmeow"
# backup_mysql "flaskmovie"
# 压缩备份指定名字数据库
# backup_mysql "djangostarmeow" "gzip"
# 压缩备份所有数据库
backup_mysql "--all-databases" "gzip"
# 获取mysql所有数据库
all_databases=$(mysql -u$mysql_user -p$mysql_pswd -e "show databases;")
# 得到的结果为:Database djangostarmeow flaskmovie information_schema mysql performance_schema
# 按照空格分隔字符串,放在数组内
arr=(${all_databases})
for name in ${arr[*]}
do
# 虚幻备份
if test $name != "Database"
then
backup_mysql $name
fi
done
fi
网友评论