首页 > 数据库 >mysql增量备份脚本

mysql增量备份脚本

时间:2023-02-25 10:34:43浏览次数:30  
标签:tmp log mysql 备份 增量 mnt time data

2、增量备份

2.1、添加备份脚本

[root@localhost]# vim /mnt/data/backup/mysql/mysql_m_bak_diff.sh
#!/bin/bash
#mysql 增量备份
time=`date +%Y%m%d`
now=`date +%F' '%T`
etime=`date -d '-7 day' +%Y%m%d`
#备份文件路径
mkdir -p /mnt/data/backup/mysql/diff_back/$time
mkdir -p /mnt/data/backup/mysql/diff_back/$time/log
backupdir="/mnt/data/backup/mysql/diff_back/$time"
log_dir="/mnt/data/backup/mysql/diff_back/$time/log"
#bin-log日志文件路径
BinFile="/mnt/data/mysql/logs/"
user=root
passwd=123456echo "$now 重新生成binlog日志" >> $log_dir/$time.log
/mnt/data/mysql/bin/mysqladmin -P3308 -u$user -p$passwd --socket=/mnt/data/mysql/mysql.sock flush-logs
if [ $? -eq 0 ];then
    echo "$now binlog日志重新生成成功" >> $log_dir/$time.log
    echo "$now Begin backup mysql database" >> $log_dir/$time.log
    #查找binlog日志
    new_blog=`/mnt/data/mysql/bin/mysql -P3308 -u$user -p$passwd --socket=/mnt/data/mysql/mysql.sock -e "show master status\G" |grep 'File'|awk '{print $2}'`
    num=`/mnt/data/mysql/bin/mysql -P3308 -u$user -p$passwd --socket=/mnt/data/mysql/mysql.sock -e "show master status\G" |grep 'File'|awk '{print $2}'|awk -F '.' '{print $2}'`
    next_num=`expr $num - 1`
    old_blog=`find $BinFile -name "mysql-bin.*$next_num"`
    #备份文件
    \cp  $old_blog $backupdir/
    old_blog_n=`find $backupdir -name "mysql-bin.*$next_num"`
    mv $old_blog_n $backupdir/master_bak_$time.sql
        if [ $? -eq 0 ];then
            echo "$now mysql copy successfully " >> $log_dir/$time.log
            echo "$now 开始执行压缩......" >> $log_dir/$time.log
            tar -zcvf $backupdir/master_bak_$time.tar.gz -C  $backupdir master_bak_$time.sql
            if [ $? -eq 0 ];then
                echo  "$now 文件压缩成功......" >> $log_dir/$time.log
                rm -rf $backupdir/master_bak_$time.sql
                size=`du -sh $backupdir/master_bak_$time.tar.gz |awk '{print $1}'`
                echo "$now backup mysql database successfully completed" >> $log_dir/$time.log
                echo "$now deploy-主数据库数据备份成功——增量备份,文件大小为:$size\n 二进制文件为: $old_blog_n" > /tmp/tmp.log
                rm -rf /tmp/tmp.log
            else
                echo  "$now 文件压缩失败......" >> $log_dir/$time.log
                echo "$now deploy-主数据库数据备份成功__增量备份,但文件压缩失败,\n 二进制文件为: $old_blog_n " > /tmp/tmp.log
                rm -rf /tmp/tmp.log
            fi
        else
            echo "$now backup mysql database faild" >> $log_dir/$time.log
            echo "$now deploy-主数据库数据备份失败——增量备份,请检查mysql是否正常" > /tmp/tmp.log
            rm -rf /tmp/tmp.log
        fi
​
else
    echo "$now binlog日志重新生成失败" >> $log_dir/$time.log
    echo "$now deploy-主数据库数据备份失败__差量备份,刷新binlog日志失败" > /tmp/tmp.log
    rm -rf /tmp/tmp.log
fi

2.2、添加执行权限

[root@localhost ~]# chmod +x /mnt/data/backup/mysql/mysql_m_bak_diff.sh

2.3、添加计划任务

[root@localhost ~]# crontab -e   #添加内容,每天2点执行
0 2 * * * sh /mnt/data/backup/mysql/mysql_m_bak_diff.sh

#wq保存退出

2.4、手动备份

[root@localhost ~]# sh /mnt/data/backup/mysql/mysql_m_bak_diff.sh
mysqladmin: [Warning] Using a password on the command line interface can be insecure.
mysql: [Warning] Using a password on the command line interface can be insecure.
mysql: [Warning] Using a password on the command line interface can be insecure.
master_bak_20230223.sql

2.5、查看备份文件

[root@localhost ~]# ll -h /mnt/data/backup/mysql/diff_back/20230223/
总用量 120K
drwxr-xr-x. 2 root root   26 2月 23 14:22 log
-rw-r--r--. 1 root root 119K 2月 23 14:40 master_bak_20230223.tar.gz
[root@ops deploy]# cat /mnt/data/backup/mysql/diff_back/20230223/log/20230223.log
2023-02-23 14:40:07 重新生成binlog日志
2023-02-23 14:40:07 binlog日志重新生成成功
2023-02-23 14:40:07 Begin backup mysql database
2023-02-23 14:40:07 mysql copy successfully
2023-02-23 14:40:07 开始执行压缩......
2023-02-23 14:40:07 文件压缩成功......
2023-02-23 14:40:07 backup mysql database successfully completed

2.6、增量数据恢复

[root@localhost ~]# mysqlbinlog --no-defaults --start-datetime="2022-10-31 17:53:00" --stop-datetime="2022-11-01 16:18:00" --database=dbname   mysql-bin.000073 | mysql -uroot -p123456     #指定时间段,指定库进行恢复

标签:tmp,log,mysql,备份,增量,mnt,time,data
From: https://www.cnblogs.com/xgsh/p/17153883.html

相关文章

  • pika全量备份
    1、添加备份脚本[root@localhost~]#vim/mnt/data/pika/pika_backup.sh#!/bin/bash#创建备份目录mkdir-p/mnt/data/backup/pika#拷贝pika数据到指定备份目录cp......
  • Mysql
    底层架构   存储引擎1、InnoDB存储引擎InnoDB是MySQL的默认事务型引擎,它被设计用来处理大量的短期(short-lived)事务。除非有非常特别的原因需要使用其他的存储引......
  • Mysql数据库的表结构
    【INFORMATION_SCHEMA数据库】 是MySQL自带的,它提供了访问数据库 元数据 的方式,元数据:数据库名或表名,列的数据类型,或访问权限等。在MySQL中,把【INFORMATION_SCHEMA】......
  • docker部署mysql
    搜索mysql镜像dockersearchmysql拉取mysql镜像dockerpullmysql:5.7创建容器,设置端口映射、目录映射mkdir~/mysqlcd~/mysqldockerrun-id\-p330......
  • MYSQL的存储引擎以及系统数据库
    今天分享的是mysql的存储引擎,以及mysql数据库中相关配置状态和相关的变量存储引擎MyISAM存储引擎MyISAM引擎特点不支持事务表级锁定读写相互阻塞,写入不能读,读时不能写只缓......
  • Mysql、(一)Linux下Mysql 基础操作
    @目录一、Linux下安装Mysql二、启动Mysql服务三、登录Mysql四、用户权限五、Mysql的配置文件一、Linux下安装Mysql百度二、启动Mysql服务servicemysqlstartservic......
  • Mysql、(八) 主从复制
    @目录一、MySQL主从复制步骤二、主从复制的配置主机的配置从机的配置其它操作一、MySQL主从复制步骤Master将改变记录到二进制日志(binarylog)。这些记录过程叫做二......
  • Mysql、(六) Show Profile
    @目录一、ShowProfile简介二、分析步骤1.开启功能2.ShowProfile查看执行情况3.诊断具体的SQL语句三、日常开发需要注意的结论一、ShowProfile简介ShowProfile是......
  • Mysql、(七) 锁机制
    @目录一、锁的概念锁的分类二、读锁案例(MyISAM引擎)三、写锁案例(MyISAM引擎)四、MyISAM引擎锁总结五、如何分析表锁定六、行锁理论1.行锁演示2.行锁失效变为表锁3.间......
  • Mysql、(三) 体系结构与存储引擎
    @目录一、Mysql体系结构概览二、存储引擎概述三、各种存储引擎特性1.Innodb存储引擎的存储方式2.MyISAM存储引擎的特性3.存储引擎的选择一、Mysql体系结构概览整个M......