本篇文章主要讲如何使用shell实现MysqL全量,增量备份。增量备份在周一-周六凌晨3点,会复制MysqL-bin.00000*到指定目录;而全量备份则使用MysqLdump将所有的数据库导出,每周日凌晨3点执,并会删除上周留下的mysq-bin.00000*。然后对MysqL的备份操作会保留在bak.log文件中。如下图:

开始:2013年05月02日 15:10:57 结束:2013年05月02日 15:12:16 20130502.sql.tgz succ是由DBFullyBak.sh产生的,每周备份一次;MysqL-bin.000001 copying;MysqL-bin.000002 skip!;2013年05月02日 16:53:15 Bakup succ!则是由DBDailyBak.sh产生的,每天一次。

实现:

1.编写全量备份脚本

# vim /root/DBFullyBak.sh //添加以下内容

#!/bin/bash

# Program

#    use MysqLdump to Fully backup MysqL data per week!

# History

#    2013-04-27 guo     first

# Path

#    ....

BakDir=/home/MysqL/backup

LogFile=/home/MysqL/backup/bak.log

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

Begin=`date +"%Y年%m月%d日 %H:%M:%S"`

cd $BakDir

DumpFile=$Date.sql

GZDumpFile=$Date.sql.tgz

/usr/local/MysqL/bin/MysqLdump -uroot -p123456 --quick --all-databases --flush-logs --delete-master-logs --single-transaction > $DumpFile

/bin/tar czvf $GZDumpFile $DumpFile

/bin/rm $DumpFile

Last=`date +"%Y年%m月%d日 %H:%M:%S"`

echo 开始:$Begin 结束:$Last $GZDumpFile succ >> $LogFile

cd $BakDir/daily

rm -f *

2.编写增量备份脚本

# cat /root/DBDailyBak.sh //内容为下

#!/bin/bash

# Program

#    use cp to backup MysqL data everyday!

# History

#    2013-05-02 guo     first

# Path

#    ....

BakDir=/home/MysqL/backup/daily

BinDir=/home/MysqL/data

LogFile=/home/MysqL/backup/bak.log

BinFile=/home/MysqL/data/MysqL-bin.index

/usr/local/MysqL/bin/MysqLadmin -uroot -p123456 flush-logs

#这个是用于产生新的MysqL-bin.00000*文件

Counter=`wc -l $BinFile |awk '{print $1}'`

NextNum=0

#这个for循环用于比对$Counter,$NextNum这两个值来确定文件是不是存在或最新的。

for file in  `cat $BinFile`

do

base=`basename $file`

#basename用于截取MysqL-bin.00000*文件名,去掉./MysqL-bin.000005前面的./

NextNum=`expr $NextNum + 1`

if [ $NextNum -eq $Counter ]

then

echo $base skip!  >> $LogFile

else

dest=$BakDir/$base

if(test -e $dest)

#test -e用于检测目标文件是否存在,存在就写exist!到$LogFile去。

then

echo  $base exist! >> $LogFile

else

cp $BinDir/$base $BakDir

echo $base copying >> $LogFile

fi

fi

done

echo `date +"%Y年%m月%d日 %H:%M:%S"` $Next Bakup succ! >> $LogFile

3.设置crontab任务,每天执行备份脚本

# crontab -l //内容为下

#每个星期日凌晨3:00执行完全备份脚本

0 3 * * 0 /root/DBFullyBak.sh >/dev/null 2>&1

#周一到周六凌晨3:00做增量备份

0 3 * * 1-6 /root/DBDailyBak.sh >/dev/null 2>&1

附录:

sh -n /root/DBFullyBak.sh可以用于检测shell语法是否正确

总结

如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。

如您喜欢交流学习经验,点击链接加入交流1群:1065694478(已满)交流2群:163560250

mysql dump 增量_mysql mysqldump数据备份和增量备份相关推荐

  1. mysql dump hbase_导出mysqldump数据

    mysql备份,备份数据,数据库,表结构 mysql  mysqldump 这里我的数据库先叫做xmen; 备份数据库 代码如下: #mysqldump 数据库名 >数据库备份名 #mysqld ...

  2. mysql 自动热备份_mysql(mariadb)定时自动热备份+增量+远程备份脚本

    优点:热备份,不影响业务,增量备份,远程备份. 目的:自动打包备份到远程10.0.0.111备份服务器 前提: 1.安装xtrabackup yum install http://www.percon ...

  3. mysql删除员工_MySQL误删数据救命指南:开发人员必收藏

    首先看下mysql误删数据排名最前的几种是: 1.误删文件 2.误删库.表 3.错误全表删除 / 更新 4.升级操作失误 都来看看你***过几个,hoho. 简单说下我亲手造的一个大事故吧. 那大概是 ...

  4. java mysql 清空表_MySQL 删除数据表

    MySQL 删除数据表 MySQL中删除数据表是非常容易操作的, 但是你再进行删除表操作时要非常小心,因为执行删除命令后所有数据都会消失. 语法 以下为删除MySQL数据表的通用语法: DROP TA ...

  5. linux mysql load_file语句_mysql导入数据load data infile用法

    我的文章一般浅显易懂,不会搞那么深入让大家很难理解.(其实我水平也不咋样) LOAD DATA INFILE 一直被认为是MySQL很强大的一个数据导入工具,因为他速度非常的快. 不过有几个问题一定要 ...

  6. mysql dump 数据库_MySQL使用mysqldump备份数据库

    在本教程中,您将学习如何使用mysqldump工具备份MySQL数据库. MySQL GUI工具(如phpMyAdmin,SQLyog等)通常为备份MySQL数据库提供了方便的功能. 但是,如果您的数 ...

  7. mysql dump还原_mysql dump备份和恢复

    --------------------------------------------- 1.准备工作 --------------------------------------------- - ...

  8. mysql -e 导出_mysql 导出数据导入数据

    导出数据 mysqldump常用命令 1.只导出表结构,不导出数据 mysqldump -uroot -p123456 -d database > database.sql 2.只导出表数据,不 ...

  9. mysql 导入 分隔符_MySQL 导入数据

    MySQL 导入数据 MySQL中可以使用两种简单的方式来导入MySQL导出的数据. 使用 LOAD DATA 导入数据 MySQL 中提供了LOAD DATA INFILE语句来插入数据. 以下实例 ...

最新文章

  1. Oracle Connect to an idle instance
  2. R语言ggplot2可视化在X轴上可视化时间标签实战:可视化时间标签、对时间标签进行旋转
  3. python统计excel出现次数_Python读取Excel一列并计算所有对象出现次数的方法
  4. C语言课程设计选哪个,C语言课程设计选题及要求.docx
  5. Intellij IDEA 那些隐藏好用的小技巧
  6. redis的入门/原理/实战大总结
  7. RabbitMQ的5种队列_路由模式_入门试炼_第8篇
  8. java super.start,java – 在字节码中确定哪里是super()方法调用所有构造函数必须在JVM上执行...
  9. 红盟云卡v1.6.2源码
  10. Swift 语言概览 -自己在Xcode6 动手写1
  11. 【BZOJ2456】mode,卡内存
  12. 【python】直方图均衡化和自适应均衡化图像
  13. 【Chrome】如何对Chrome浏览器内容进行长截图
  14. 电子系统中的品质因数
  15. Android 前置摄像头强制关闭镜像预览
  16. 多波束测深系统工作原理及组成,多波束在无人船上的应用
  17. 【汇智学堂】-div+css布局十二(商品列表图文展示)
  18. Apollo决策技术分享20190328
  19. n维椭球体积公式_洛氏硬度、布氏硬度、维氏硬度区别与对照
  20. 浏览器性能和兼容性测试

热门文章

  1. 2021全年“遇冷”后,“电商节”该何去何从?
  2. 从Tronbull引狂欢,看APENFT与波场带来的新可能
  3. linux时间同修改,linux 系统时间修改同步
  4. pandas如何保存在excel里面_【精选】Pandas一站式教程!
  5. larvel 中的api.php_Laravel API 系列教程(一): 基于 Laravel 5.5 构建 测试 RESTful API...
  6. java类的两个基本成分_Java类文件的基本结构
  7. ajax 同步异步true,async: false 实现AJAX同步请求 ( $.ajax同步/异步(async:false/true) )(示例代码)...
  8. C#程序设计--入门到精通 学习记录(一) C# 与 .net平台
  9. python常用的十进制、16进制之间的转换
  10. python中的类和对象