MySQL 5.7.10 自动备份、自动清理旧备份集
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 自动备份、自动清理旧备份集的更多相关文章
- MySQL 5.7.10 自动备份、自动清理旧备份集(转)
1,mysqldump备份脚本 备份脚本为,里面有几个需要注意的参数: (1)--master-data=2 :这个参数可以在搭建从库的时候,记录当前备份的复制点信息. (2)--extended-i ...
- linux下定时网站文件备份和数据备份以及删除旧备份标准代码
直切正题: 文件备份:web.sh 数据备份:db.sh 删除旧备份:clear.sh vi web.sh文件内容为: #!/bin/bash 解释:shell脚本标准头 cd 网站文 ...
- linux centeros 通过 innoback 工具备份mysql 5.7 全库并自动压缩zip上传到备份服务器的脚本,附自动清理过期备份
innoback 安装见连接:https://blog.csdn.net/fanren224/article/details/79693863 脚本解析后续将更新 181024:更新添加定期清理备份的 ...
- Windows 下 MySQL 简单定时自动备份、删除过期备份
Windows 下 MySQL 简单定时自动备份.删除过期备份 MySQL Workbench 客户端虽然好用,但并不提供自动备份功能.手工备份,确实繁琐. 新建一个 数据库备份文件存放目录,本例为D ...
- shell 自动删除n天前备份
Linux自动删除n天前备份Linux是一个很能自动产生文件的系统,日志.邮件.备份等.因此需要设置让系统定时清理一些不需要的文件.语句写法: find 对应目录 -mtime +天数 -na ...
- innobackupex自动备份脚本(增量备份,自动压缩)
#!/bin/bash #日期转为天数 function date2days { echo "$*" | awk '{ z=-$)/); y=$+-z; m=$+*z-; j=*m ...
- 监测mysql错误日志,有错误自动邮件报警
监测mysql错误日志,有错误自动邮件报警 http://blog.csdn.net/yabingshi_tech/article/details/51443401 MySQL:监控慢日志.错误日志. ...
- liunx定时备份mongo数据库并实现自动删除N天前备份
1.脚本文件: #!/bin/sh # dump 命令执行路径,根据mongodb安装路径而定 #!/bin/sh # dump 命令执行路径,根据mongodb安装路径而定 /bin/mongodu ...
- SQL SERVER 2008 R2 自动备份并删除过期备份数据
我们的系统维护的过程中肯定需要对数据库进行定期的备份,但是如果定时手工备份的话,不但浪费时间,也不能保证每次都可以按时备份,所以自动备份成为了我们的不二选择,但是定时备份需要定期清理备份文件, ...
随机推荐
- Android开发之Android Material Design Toolbar自定义随笔
一.自定义Toolbar的menu: 在menu下新建menu.xml文件,自定义menu的样式: <menu xmlns:android="http://schemas.androi ...
- xamarin android,UWP 网络类型和IP地址
App开发经常要判断网络连通情况,并判断网络类型,获取网络IP.xamarin中可以使用Dependencies提供各平台下的方法,现把各平台代码记录如下: using System; using S ...
- Atitit 硬件 软件 的开源工作 差异对比
Atitit 硬件 软件 的开源工作 差异对比 1.1. 模块化,标准化,以及修改的便捷性1 1.2. 生产和发布成本 1 1.3. 3. 入行门槛搞2 1.4. 在软件业极度发达的今天,任何具 ...
- DBUtil数据库连接单例 —— 简单不简单
单例大概是我最早产生明确模式意识的设计模式,因为它足够简单粗暴,目的足够明确. 单例么,就是不管怎么访问,都返回一个单一实例就好了,我最早应用在数据库的DBUtil中. public class DB ...
- 基于Caffe的DeepID2实现(下)
小喵的唠叨话:这次的博客,真心累伤了小喵的心.但考虑到知识需要巩固和分享,小喵决定这次把剩下的内容都写完. 小喵的博客:http://www.miaoerduo.com 博客原文: http://ww ...
- 00.Web大前端时代之:HTML5+CSS3入门系列~Bug反馈文章
感谢广大网友的热心提醒,现已发现如下错误: 感谢 “ ”对画布笔记系列的反馈(QQ:350223285) 这个是失误,strokeStyle和stroke对应 待续.... 欢迎提出更多问题,感谢大家 ...
- MVC5 网站开发之三 数据存储层功能实现
数据存储层在项目Ninesky.DataLibrary中实现,整个项目只有一个类Repository. 目录 奔跑吧,代码小哥! MVC5网站开发之一 总体概述 MVC5 网站开发之二 创建项目 ...
- ASP.NET MVC5+EF6+EasyUI 后台管理系统(45)-工作流设计-设计步骤
系列目录 步骤设计很重要,特别是规则的选择. 我这里分为几个规则 1.按自行选择(在起草时候自行选审批人,比较灵活) 2.按上级(无需指定,当时需要知道用户的上司是谁,可以在职位管理设置,或者在用户表 ...
- 【原创】记一次Project插件开发
一.开发背景 最近在使用微软的Office Project 2010 进行项目管理,看到排的满满的计划任务,一个个地被执行完毕,还是很有成就感的.其实,不光是在工作中可以使用Project进行项目进度 ...
- C# 设置Excel打印选项及打印excel文档
C# 设置Excel打印选项及打印excel文档 打印Excel文档是一个很常见的操作,但有时候我们会碰到各种不同的打印需求,例如只打印一个Excel工作表的其中一部分,或打印时每页都有表头,或把工作 ...