Akiraka Akiraka
  • Home
  • Linux
    • ELK
    • PHP
    • Shell
    • Nginx
    • Docker
      • Docker Compose
    • Centos
    • Ubuntu
    • Jenkins
  • Python
  • Mac OS
  • Windows
  • Big Data
    • Hadoop
    • CDH
    • Hive
    • Spark
    • ZooKeeper
  • K8S
    • Kubernetes
    • Helm
  • Other
  • Quark
  • Contribute
  • Home
  • Linux
    • ELK
    • PHP
    • Shell
    • Nginx
    • Docker
      • Docker Compose
    • Centos
    • Ubuntu
    • Jenkins
  • Python
  • Mac OS
  • Windows
  • Big Data
    • Hadoop
    • CDH
    • Hive
    • Spark
    • ZooKeeper
  • K8S
    • Kubernetes
    • Helm
  • Other
  • Quark
  • Contribute
首页 Linux Mysql全量备份脚本

Mysql全量备份脚本

Akiraka 2年前
#!/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
#linux#mysql#shell
1
猜你喜欢
  • Jenkins 升级失败
  • Deepin与UOS多屏显示输出问题
  • SonarQube 集成 GitLab 单点登录
  • Linux Centos/Ubuntu/Debain配置账户登录失败锁定策略
  • Linux systemd-resolve占用53端口的解决方法
Akiraka
站长
本人擅长 Ai、Au、Fl、Ae、Pr、Ps 等软件的安装与卸载,精通 CSS、JavaScript、PHP、Python、Shell、Go 等单词的拼写,熟悉 Windows、Linux、Mac、Android、IOS 等系统的开关机!
160
文章
24
评论
73
获赞
Popular Articles
TOP1
Kubernetes(k8s)Helm 部署 EFK 集群
2年前
TOP2
Kubernetes(k8s)helm 搭建 prometheus + Grafana 监控
2年前
TOP3
Container 命令ctr、crictl 命令使用说明
11月前
TOP4
Kubernetes(k8s)Helm 部署 Jenkins 持续化集成部署
2年前
TOP5
Helm 部署 Loki 日志聚合
2年前
Related Articles
Kubernetes(k8s)kubectl 命令补全
2年前
搭建 Redis 主从搭建配置
2年前
xtrabackup 备份脚本
12月前
ubuntu 虚拟机初始化设置
2年前
Kubernetes(k8s)删除节点与添加节点
2年前
Copyright © 2019-2022 Akiraka. 沪18036911号