自动备份Mysql数据库脚本

#!/bin/bash

#mysql用户名
mysql_user="root"


#mysql密码
mysql_pwd="123456"


#mysql服务器地址
mysql_host="localhost"


#目标服务器ip
target_host="root@100.200.100.100"


#目标服务器端口
target_port="22"


#目标服务器备份目录
target_path="/opt/backup_mysql"


#生成日志的文件路径
logpath="/opt/backup_logs"
if [ ! -d "$logpath" ]; then
mkdir -p "$logpath"
fi


#当天的日志文件
logs="$logpath/mysql_log_$dates.log"
#如果日志文件路径不存在,则创建
if [ ! -d "$logs" ]; then
touch "$logs"
fi


#本机标识
local_name="test"


#本机备份的路径
dump_path="/opt/$local_name"
#如果备份的路径不存在,则创建
if [ ! -d "$dump_path" ]; then
mkdir -p "$dump_path"
fi


#输出开始执行时间
echo "START  ==>"`date +'%Y%m%d %H%M%S'` >> $logs


#将所有的database放入arr_database变量中   去除不需要的database 如:sys performance_schema 还有*号
arr_database=`mysql -h$mysql_host -u$mysql_user -p$mysql_pwd -e'show databases\G' | sed '/\*\*\*/d' | sed 's/Database: //g'| sed '/mysql/d'|sed '/information_schema/d' | sed '/performance_schema/d' | sed '/sys/d'`


#输出一下需要备份的数据库
echo $arr_database  >>$logs


#循环备份所有的database
for cur_database in ${arr_database[*]}; do
echo "备份$cur_database" >>$logs
mysqldump -h$mysql_host -u$mysql_user -p$mysql_pwd --opt $cur_database | gzip > $dump_path/$cur_database.sql.gz 
done




dates=`date +%Y%m%d`




#备份到服务器的目录地址(目标服务器地址目录)
target_backup_file="$target_path/$dates/$local_name"


logs="$logpath/rsync_log_$dates.log"


#判断今天的是否已经进行过备份
ssh -p$target_port $target_host  "[ -e $target_backup_file ]";
if [ $? == 0 ]; then
echo "已经备份过了";
exit 0;
else 
echo "没有备份过";
fi


echo "START  ==>"`date +'%Y%m%d %H%M%S'` >> $logs
#是否存在目录,不存在则创建
ssh -p$target_port $target_host " [[ -d $target_backup_file ]] || mkdir -p $target_backup_file"
#-e可以自定义端口号 --delete可以保持源服务器删除后目标服务器也删除
rsync -e'ssh -p60000' -avz --progress $dump_path $target_host:$target_path/$dates >> $logs
#删除三天前的备份
#ssh -p$target_port $target_host " find $target_path/ -name '*' -mtime +3     | xargs rm -rf {}\;"


# 显示完成
echo "END  ==>"`date +'%Y%m%d %H%M%S'` >> $logs


find $logpath -name "*.log" -mtime +3 -exec rm -rf {} \;


rm -rf $dump_path











评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值