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`" -- 结束备份数据库 "
Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐