mysql自动备份脚本
#! /bin/bash
# 自动备份mysql 数据库 脚本
# 数据库 用户 密码 数据库名
mysql_user=user
mysql_pwd=password
tagretIp=targetIP
port=port
# 获取全部数据库名
mysql_db=$(mysql -h $tagretIp -P $port -u$mysql_user -p$mysql_pwd -e "show databases" | grep -Ev "Database|sys|information_schema|performance_schema|mysql")
# mysql 备份脚本命令
mysql_backup_script=/usr/local/mysql/bin/mysqldump
b_path=/www/mysqldata/
backup_path=$b_path`date +%Y%m%d`
echo "-- "`date +%Y%m%d\ %H:%M:%S`" -- 开始备份数据库 "
#判断是为root 用户
if [ $UID -ne 0 ];then
echo "请使用 root 用户执行此脚本!!"
exit
fi
#判断备份路径是否存在
if [ ! -d $backup_path ];then
echo "备份目录不存在,创建默认备份目录"
mkdir -p $backup_path
else
echo "备份目录已存在!"
fi
# 变量数据库集合
for db in $mysql_db
do
# 备份 mysql 数据库
$mysql_backup_script -h $tagretIp -P $port -u$mysql_user -p$mysql_pwd --default-character-set=utf8mb4 --lock-all-tables --flush-logs $db > $backup_path/$db.sql
if [ $? -eq 0 ];then
echo -e "\033[32m $db 备份到 $backup_path 成功! \033[0m"
else
echo "$db 备份到 $backup_path 失败!"
fi
done
# 打包文件 并压缩
echo "打包文件 并压缩 $backup_path"
tar -zcPf $backup_path'.tar.gz' $backup_path'/'
if [ $? -eq 0 ];then
echo -e "\033[32m 打包文件并压缩 成功! \033[0m"
else
echo "打包文件并压缩 失败!"
fi
# 删除临时目录
rm -rf $backup_path
# 删除 30天 以前的备份数据
echo "删除 30天 以前的备份数据"
find $b_path -mtime +30 -name "*.gz" -exec rm -rf {} \;
echo "-- "`date +%Y%m%d\ %H:%M:%S`" -- 结束备份数据库 "