Mysql全量备份脚本

#!/bin/bash
# Mysql 全量备份脚本
# Make at:2017.6.22
# Writer:AKA
# 可以对Mysql数据库进行全量备份,并进行打包
# website:www.akiraka.net

#数据库账号
USER="root"
#数据库密码
PASSWD="password"
#数据备份保存天数
SAVE_DAYS=10
#Mysql数据文件夹路径
MY_BIN_DIR=/data/mysql
#数据备份文件夹
MY_BAK_DIR=/data/mysqlbackup
#备份消息日志文件夹
MY_LOG_DIR=/usr/local/mysql/logs
#mysqldump位置
MY_CMD=/usr/local/mysql/bin/mysqldump
#时间
DATE=`date +%Y-%m-%d`
#这个为了数据库打包减去1天也就是昨天的时间,不是当前时间
DATE_1D=`date +%Y-%m-%d -d "-1 days"`

#判断Mysql 备份文件夹是否存在,不存在创建一个
test -d ${MY_BAK_DIR} || mkdir ${MY_BAK_DIR}
#判断Mysql 日志文件夹是否存在,不存在创建一个
test -d ${MY_LOG_DIR} || mkdir ${MY_LOG_DIR}

#进入备份数据备份文件夹
cd $MY_BAK_DIR
#删除Mysql数据文件夹中的mysql-bin-xxxx文件,进行全量备份时候会生成新的文件从1开始
find $MY_BIN_DIR -type f -name "mysql-bin.[0-9]*" -exec rm -f {} \;
##删除设置过期的数据备份
find $MY_BAK_DIR -mtime +$SAVE_DAYS -name "*full.tar.gz" -exec rm -f {} \;

#导出全量备份数据文件
$MY_CMD -u$USER -p$PASSWD --all-databases --flush-logs --single-transaction --master-data=2 --opt > $DATE-full.sql
#输出是否导出成功的消息
if [[ $? = 0 ]];then
  echo -e "\033[36m $DATE 数据库全量备份成功 \033[0m"
  echo  "数据库全量备份成功 时间点: $DATE " >> $LOGS/logs
else
  echo -e "\033[31m $DATE 数据库全量备份失败 \033[0m"
  echo "数据库全量备份失败 时间点: $DATE" >> $LOGS/logs
fi

#将导出的SQL文件打包,以昨天的时间命名,因为是第二天凌晨执行的任务,数据是昨天的不是今天的
tar zcvf $DATE_1D-full.tar.gz $DATE-full.sql
#输出是否打包成功的消息
if [[ $? = 0 ]];then
  echo -e "\033[36m $DATE 昨天数据库备份打包成功 \033[0m"
  echo "昨天数据库备份打包成功 时间点:$DATE" >> $MY_LOG_DIR/logs
else
  echo "\033[31m 昨天数据库备份打包失败 \033[0m"
  echo "昨天数据库备份打包失败 时间点:$DATE" >> $MY_LOG_DIR/logs
fi

#全量备份已经打包好,这里就删除昨天的导出的全量备份出来的SQL文件,而不删除刚才导出的SQL文件确保安全
find $MY_BAK_DIR -mtime +1 -name "*-full.sql" -exec rm -f {} \;

#下面这个是使用增量备份使用的,如果不使用增量备份也可以不管它,不需要可以删除或注释掉
#进入Mysql数据文件夹
cd $MY_BIN_DIR
#查询Mysql数据文件夹中的mysql-bin-xxxx文件
COPY=`find $MY_BIN_DIR -type f  -name "mysql-bin.[0-9]*"`
#因为删除了昨天的mysql-bin.00000x文件,生成了新的mysql-bin.000001文件,把新文件复制到数据备份文件夹,否则是老的数据
yes | cp -rf $COPY $MY_BAK_DIR 1>/dev/null 2>&1

版权声明:
作者:Akiraka
链接:https://www.akiraka.net/linux/158.html
来源:Akiraka
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
海报
Mysql全量备份脚本
#!/bin/bash # Mysql 全量备份脚本 # Make at:2017.6.22 # Writer:AKA # 可以对Mysql数据库进行全量备份,并进行打包 # website:www.akiraka.net #数据库账号 ……
<<上一篇
下一篇>>
文章目录
关闭
目 录