http://blog.csdn.net/mchdba/article/details/51527081

MySQL版本是5.7.10-log社区版本,需要进行备份,但是备份时间长了后,磁盘不够用,所以需要对指定旧的备份集合进行清理工作。

1,mysqldump备份脚本

备份脚本为,里面有几个需要注意的参数:

(1)--master-data=2 :这个参数可以在搭建从库的时候,记录当前备份的复制点信息。

(2)--extended-insert=false:这个在形成sql语句的时候,一条记录一个insert语句

(3)--single-transaction:来保证备份的一致性,实际上它的工作原理是设定本次会话的隔离级别为:REPEATABLE READ,以确保本次会话(dump)时,不会看到其他会话已经提交了的数据。

备份脚本为:backup_full.sh

date=`date "+%Y%m%d%H%M%S"`

back_path=/data/mysql/backup/data

mysqldump=/usr/local/mysql/bin/mysqldump

cd ${back_path}

${mysqldump} -uroot --password="xs_pys@7y895b"  -R -E -h localhost --socket=/usr/local/mysql/mysql.sock --skip-opt --single-transaction --flush-logs --master-data=2 --add-drop-table --create-option --quic

k --extended-insert=false --set-charset --disable-keys --databases user_db  |gzip > user_db.${date}.sql.gz

${mysqldump} -uroot --password=" xs_pys@7y895b "  -R -E -h localhost --socket=/usr/local/mysql/mysql.sock --skip-opt --single-transaction --flush-logs --master-data=2 --add-drop-table --create-option --quic

k --extended-insert=false --set-charset --disable-keys --databases plocc_system  |gzip > plocc_system.${date}.sql.gz

2,清理多余备份的脚本

清除旧的备份脚本为:clear_old_backup.sh,大概思路为:

(1)      一年前,保存每个月的1号和16号的备份集合,其它的删除掉(# 1 for one years ago, save 1/16 on every month, else clear )。

(2)      六个月前,保存1号和11号和21号的备份集合,其它的删除掉(# 2 for 6 months ago, save 1/11/21 in a month)

(3)      一个月前,每天保存6点钟的备份集合,其它的删除掉(# 3 for a month ago,save *063001.sq.gz on a day)

(4)      三天前,保存6点钟和18点钟的备份集合,其它的删除掉(# 4 for 3 days ago, save 063001.sql.gz  and 183001.sql.gz)

脚本clear_old_backup.sh为:

d3=`date '+%Y-%m-%d %H:%M:%S'`

d2=`date '+%Y-%m-%d'`

logfile=/data/mysql/backup/scripts/clear_old_backup.log

old_backupfile=/data/mysql/backup/scripts/old_backupfile_$d2.csv

cd /data/mysql/backup/data

echo "" >> $logfile

echo "-- $d3 begin... --" >>  $logfile

# 1 for one years ago, save 1/16 on every month, else clear ,

find . -mtime +360 -name "*.sql.gz" |grep -v "01063001.sql.gz" >> $old_backupfile;

# 2 for 6 months ago, save 1/11/21 in a month

find . -mtime +180 -name "*.sql.gz" |grep -v "1063001.sql.gz"   >> $old_backupfile;

# 3 for a month ago,save *063001.sq.gz on a day

find . -mtime +30 -name "*.sql.gz" |grep -v "063001.sql.gz"   >> $old_backupfile;

# 4 for 3 days ago, save 063001.sql.gz  and 183001.sql.gz

find . -mtime +3 -name "*.sql.gz" |grep -v "063001.sql.gz" |grep -v "183001.sql.gz"  >> $old_backupfile;

# 5 begin clear

find /mnt/resource -mtime +5 -name "*.sql.gz" -exec rm -rf {}  \;

#6 save the clear sql.gz to a temp directory

for i in `cat $old_backupfile`; do

echo "-- $i -- is cleared."

mv $i /mnt/resource/

done

d4=`date '+%Y-%m-%d %H:%M:%S'`

echo "-- $d4 end... --" >>  $logfile

echo "" >> $logfile

PS:本来这里是准备采用find . -mtime +180 -name "*.sql.gz" |grep -v "1063001.sql.gz"-exec  rm -rf {}  \;检索完后直接rm删除掉的,但是由于find后使用grep报错不识别{},所以折衷采用了一个方案,将检索到的文件保存在一个临时文件old_backupfile_$d2.csv里面,然后遍历old_backupfile_$d2.csv文件去mv或者rm操作等,find grep exec报错如下:

[root@db1 ~]# find . -mtime +180 -name "*.sql.gz" |grep -v "1063001.sql.gz" -exec  rm -rf {}  \;

grep: {}: No such file or directory

[root@db1 ~]#

3,crontab定时任务

使用crontab 建立定时任务,每天进行备份和清理工作,让db服务器自动进行。

[root@db_master_2 ~]# crontab -l

20 1 * * * sh /data/mysql/backup/scripts/clear_old_backup.sh

30 */6 * * * sh /data/mysql/backup/scripts/backup_full.sh

[root@db_master_2 ~]#

4,后续扩展问题

简单的备份做好了,简单的旧备份集合清理也搞定了,但是后续还可以再多做些事情,更加完善一些:

(1)      email通知,备份成功或者失败后,邮件通知

(2)      将备份集合copy一份到文件服务器

(3)      自动检查数据库备份的有效性

 
 

MySQL 5.7.10 自动备份、自动清理旧备份集的更多相关文章

  1. MySQL 5.7.10 自动备份、自动清理旧备份集(转)

    1,mysqldump备份脚本 备份脚本为,里面有几个需要注意的参数: (1)--master-data=2 :这个参数可以在搭建从库的时候,记录当前备份的复制点信息. (2)--extended-i ...

  2. linux下定时网站文件备份和数据备份以及删除旧备份标准代码

    直切正题: 文件备份:web.sh 数据备份:db.sh 删除旧备份:clear.sh vi web.sh文件内容为: #!/bin/bash        解释:shell脚本标准头 cd  网站文 ...

  3. linux centeros 通过 innoback 工具备份mysql 5.7 全库并自动压缩zip上传到备份服务器的脚本,附自动清理过期备份

    innoback 安装见连接:https://blog.csdn.net/fanren224/article/details/79693863 脚本解析后续将更新 181024:更新添加定期清理备份的 ...

  4. Windows 下 MySQL 简单定时自动备份、删除过期备份

    Windows 下 MySQL 简单定时自动备份.删除过期备份 MySQL Workbench 客户端虽然好用,但并不提供自动备份功能.手工备份,确实繁琐. 新建一个 数据库备份文件存放目录,本例为D ...

  5. shell 自动删除n天前备份

    Linux自动删除n天前备份Linux是一个很能自动产生文件的系统,日志.邮件.备份等.因此需要设置让系统定时清理一些不需要的文件.语句写法:     find 对应目录 -mtime +天数 -na ...

  6. innobackupex自动备份脚本(增量备份,自动压缩)

    #!/bin/bash #日期转为天数 function date2days { echo "$*" | awk '{ z=-$)/); y=$+-z; m=$+*z-; j=*m ...

  7. 监测mysql错误日志,有错误自动邮件报警

    监测mysql错误日志,有错误自动邮件报警 http://blog.csdn.net/yabingshi_tech/article/details/51443401 MySQL:监控慢日志.错误日志. ...

  8. liunx定时备份mongo数据库并实现自动删除N天前备份

    1.脚本文件: #!/bin/sh # dump 命令执行路径,根据mongodb安装路径而定 #!/bin/sh # dump 命令执行路径,根据mongodb安装路径而定 /bin/mongodu ...

  9. SQL SERVER 2008 R2 自动备份并删除过期备份数据

        我们的系统维护的过程中肯定需要对数据库进行定期的备份,但是如果定时手工备份的话,不但浪费时间,也不能保证每次都可以按时备份,所以自动备份成为了我们的不二选择,但是定时备份需要定期清理备份文件, ...

随机推荐

  1. -Dmaven.multiModuleProjectDirectory system property is not set. Check $M2_HO 解决办法

    最近在使用maven,项目测试的时候出现了这么一个错.-Dmaven.multiModuleProjectDirectory system property is not set. Check $M2 ...

  2. sublime text 插件

    html-css-js prettify html5 anaconda pretty json JavaScript Completions SqlBeautifier Emmet Css Snipp ...

  3. 8.GitHub实战系列~8.使用GitHub建立自己的免费博客

    github实战汇总:http://www.cnblogs.com/dunitian/p/5038719.html 创建一个用户名.github.io的仓库 选择设置页面风格 页面基本信息 选择一个你 ...

  4. UML类图与面向对象设计原则

    1. 引言     从大一开始学习编程,到如今也已经有两年了.从最初学习的Html,Js,JaveSe,再到JavaEE,Android,自己也能写一些玩具.学习过程中也无意识的了解了一些所谓的设计模 ...

  5. 创建 Pool & VIP - 每天5分钟玩转 OpenStack(122)

    上节完成了 LBaaS 配置,今天我们开始实现如下 LBaaS 环境. 环境描述如下: 1. 创建一个 Pool “web servers”. 2. 两个 pool member “WEB1” 和 “ ...

  6. 批量Shink所有日志或数据文件

    近期,因磁盘空间问题,当执行常规性维护如碎片整理等后会报磁盘空间不足警告,因条件又无法及时添加磁盘空间,这时候不得不对LOG文件做收缩,如果遇到库比较多的实例上,一个一个来却是比较麻烦,可通过如下SQ ...

  7. 分布式系统理论进阶 - Paxos

    引言 <分布式系统理论基础 - 一致性.2PC和3PC>一文介绍了一致性.达成一致性需要面临的各种问题以及2PC.3PC模型,Paxos协议在节点宕机恢复.消息无序或丢失.网络分化的场景下 ...

  8. 高仿QQ顶部控件之IOS SegmentView

    经常会看到QQ上面有一个 消息和电话 的顶部面板,这个空间是IOS7的分段控制,android中没有这个控件,今天在威哥的微信公众号中成功gank到这个自定义控件的实现,下面跟着尝试一波. 首先是定义 ...

  9. android官方下拉刷新控件SwipeRefreshLayout的使用

    可能开发安卓的人大多数都用过很多下拉刷新的开源组件,但是今天用了官方v4支持包的SwipeRefreshLayout觉得效果也蛮不错的,特拿出来分享. 简介:SwipeRefreshLayout组件只 ...

  10. ASP.NET MVC5 ModelBinder

    什么是ModelBinding ASP.NET MVC中,所有的请求最终都会到达某个Controller中的某个Action并由该Action负责具体的处理和响应.为了能够正确处理请求,Action的 ...