FreeBSD 下的 MySQL 备份方案

作/译者:叶金荣(Email: email.gif),来源:http://imysql.cn,转载请注明作/译者和出处,并且不能用于商业用途,违者必究。
核心提示:如何在 FreeBSD 下实现 MySQL 的全量及增量备份,确保数据的最大可靠性。在这里利用了 MySQL 的复制以及新版本的 FreeBSD 集成的快照功能。
约定:本备份方案是在 MySQL 的 复制从服务器 上执行。关于 MySQL 的复制设置方法请看 MySQL 同步(一)。MySQL 安装在 /usr/local/mysql 下,datadir 则为 /data/mysql,而日志以及 innodb 的 log_file 均保存在 /logs/mysql/ 下。用于保存备份文件的目录为 /backup/mysql/,备份方案分成 每天全量备份 一次以及 每小时增量备份 一次。因此,如果 MySQL 发生误操作以及其他情况导致数据丢失,那么在采用本方案的情况下,最坏的情况只会丢失不到一个小时所产生的数据。当然了,也可以实现实时增量备份,这会在以后的文章中讲到。
一、全量备份
先来看看全量备份的脚本:
#!/bin/sh
#
# created by yejr,2007/06/03
#
# 本脚本用于定期做全量备份,备份的对象是slave上的全部数据
# 每次备份之前都先执行"STOP SLAVE; FLUSH TABLES;",然后将所有文件拷贝到备份目录下
#
echo "[backupmysql_fullly]"
date
today=`date +"%Y_%m_%d"`
logdir=/logs/mysql
datadir=/data/mysql
bkdir=/backup/mysql/$today/full_backup
expdays=7
if [ ! -d $bkdir/$today ] ; thenmkdir -p $bkdir
fi
#停止同步,刷新日志,刷新表
echo "stop slave; flush logs; flush tables;"
mysqladmin -uroot stop-slave
mysqladmin -uroot flush-logs
mysqladmin -uroot flush-tables
cd $logdir
#备份日志文件
echo "backup errro log"
cp $logdir/error.log* $bkdir/
echo "backup ib_logfile* master.info relay.info"
cp ib_logfile* master.info relay.info $bkdir/
#拷贝所有文件
echo "backup my.cnf"
cp /usr/local/mysql/my.cnf $bkdir/
##如果是老版本的 FreeBSD 不支持快照功能,就拷贝全部数据库文件
#cd $datadir
#cp -rf * $bkdir/
##如果是新版本的 FreeBSD,则采用其特有的 snapshot 功能,先制作镜像,而后挂载镜像,再拷贝数据文件
echo "make snapshot of /backup"
/sbin/mksnap_ffs /data/ /data/.snap/mysql_snap_$today
#执行 slave-start;
mysqladmin -uroot start-slave
#挂载镜像文件,而后拷贝数据
/sbin/mdconfig -a -t vnode -f /data/.snap/mysql_snap_$today -u 4
/sbin/mount -r /dev/md4 /backup/.snap
cp -rf /backup/.snap/mysql/data/* $bkdir/
/sbin/umount /backup/.snap
/sbin/mdconfig -d -u 4
#删除7天前的过期文件
find /backup/mysql -type d -mtime +$expdays -maxdepth 1 | xargs rm -rf
find /data/.snap -type f -mtime +$expdays -maxdepth 1 | xargs rm -f
#修改备份文件的属主
chown -R nobody:nobody $bkdir
echo "[/backupmysql_fullly]"
接下来就是在 crontab 中增加一条记录,使得每天都执行本备份脚本。
0 0 * * * (/bin/sh /backup/mysql/backupmysql_fullly.sh >> /backup/mysql/backupmysql.log)
二、增量备份
下面是增量备份的脚本:
#!/bin/sh
#
# created by yejr,2007/06/03
#
# 本脚本用于定期做增量备份,备份的对象是binlog
# 每次备份之前都先执行 flush-logs,然后将最近的binlog移动到备份目录下
#
echo "[backupmysql_hourly]"
date
logdir=/logs/mysql
bkdir=/backup/mysql
now=`date +"%Y_%m_%d_%H"`
today=`date +"%Y_%m_%d"`
if [ ! -d $bkdir/$today ] ; thenmkdir -p $bkdir/$today
fi
#执行 "flush logs"
echo "flush logs; backup error log"
mysqladmin -uroot flush-logs
#去的 binlog 文件总数,去掉最后一个以及 binlog.index
total=`ls $logdir/logbin.*|wc -l`
total=`expr $total - 2`
#循环移动所有的 binlog 文件
echo "backup binary logs"
for f in `ls $logdir/logbin.*|head -n $total`
dobf=`basename $f`mv -if $f  $bkdir/$today/$bf
done
chown -R nobody:nobody $bkdir
echo "[/backupmysql_hourly]"
然后在 crontab 中增加一条记录,使得每小时都执行本备份脚本。
0 */` * * * (/bin/sh /backup/mysql/backupmysql_hourly.sh >> /backup/mysql/backupmysql.log)
在 linux 下,也可以采用本备份方案,不过执行的是不支持 snapshot 情况下的备份策略,即拷贝所有文件。或者,也可以利用 linux 自带的 lvm 功能实现类似 FreeBSD 的快照功能。
以上脚本在 FreeBSD 6.2 + MySQL 5.0.37 环境下实验通过。
本文出自 “MySQL中文网”博客 http://www.imysql.cn/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/305599.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

IdentityServer4(八)使用EntityFramework Core对数据进行持久化

上几篇,我们创建了客户端,scope,启动时,IdentityServer把这些配置数据加载至内存,但是,如果我们想要更改配置,就必须停掉IdentityServer,然后重新启动。且IdentityServe在r运行过程中…

centos 重启网卡_CentOS7网络配置和修改网卡名称及常用服务管理命令

1.设置IP地址和网关及DNSCentOS7里面的网卡名称不在是eth0,1,2而改成enoxxxxxx的格式,en代表的是enthernet以太网,o代表onboard内置,这种新的方式不但长,而且难记,不过优点也比较突出,有编号唯一性&#xf…

C# 中的动态类型

翻译自 Camilo Reyes 2018年10月15日的文章 《Working with the Dynamic Type in C#》 [1] .NET 4 中引入了动态类型。动态对象使您可以处理诸如 JSON 文档之类的结构,这些结构的组成可能要到运行时才能知道。在本文中,Camilo Reyes 解释了如何使用动态…

python根据列表绘制柱状图_python把一个列表画柱状图

原博文 2018-10-18 14:28 − https://blog.csdn.net/w113691/article/details/80385534... 相关推荐 2019-12-07 19:38 − 用python画简单的树 代码如下: import turtle as T import random import time # 画樱花的躯干(60,t) def Tree(branch, t): time.sleep(0.00…

基于电子邮件的InfoPath表单发布的注意点 [Infopath 2007]

让我们先来看看InfoPath 2007提供的其他几种发布方案:1. 将InfoPath模板发布到SharePoint Server或者InfoPath Form Server2. 将InfoPath模板制作成一个安装程序3. 将InfoPath模板发布到一个共享网络地址上方案1,3 都必须依赖已有服务器或网络,而方案2 则…

如何在 C# 8 中使用 Index 和 Range

C# 8 中有几个比较好玩的新特性,比如下面的这两个:System.Index 和 System.Range,分别对应着索引和切片操作,这篇文章将会讨论这两个类的使用。System.Index 和 System.Range 结构体 可以用它们在运行时对集合进行 index 和 slice…

Hybrid-APP技术原理

源宝导读:Hybrid-APP技术不仅具有“Native APP的良好交互体验”同时也具备“Web APP跨平台开发的优势”。既然Hybrid-APP有这么多优势,那么究竟什么样的APP才算Hybrid App呢?本文将分享我们的技术研究成果。一、什么是Hybrid-APP狭义的Hybrid…

基于微软ASP.NET AJAX框架开发幻灯片播放网页

一、 简介 最近,微软ASP.NET Ajax 1.0框架以其完整的基于Ajax的web开发方案呈现在web技术人员的前面,凭借与遗留ASP.NET系统的有机整合以及完全面向对象的客户端JavaScript组件模型两大绝杀正在引起越来越多的基于.NET平台的web开发者的关注。本文应该属…

推荐:.Net 5开源免费的内容管理系统

背景介绍内容管理系统(content management system,CMS)是一种位于WEB 前端(Web 服务器)和后端办公系统或流程(内容创作、编辑)之间的软件系统。内容的创作人员、编辑人员、发布人员使用内容管理…

河南信息工程学校计算机组装比赛,计算机技术系承办2019全员化试点项目计算机网络装调赛项...

2019年10月16日,由河南省教育厅主办、河南省职业教研室承办的技能竞赛全员化试点项目“计算机网络装调”赛项在河南信息工程学校开赛,来自全省37所学校的96名选手同台竞技,和谐交流。“计算机网络装调”赛项是2019年河南省中职教育技能竞赛的…

限制IIS站点的内存,避免级联影响

背景 代码写的有问题,会很容易出现内存泄露的问题。应用如果是部署在docker容器里面的,可以限制这个应用的内存。那么,如果是传统的.NET Framework应用,部署在IIS上面呢?老黄曾经遇到过在一台服务器上面,II…

笔记本怎么查看hdmi版本_涨知识丨一文看懂笔记本电脑HDMI接口

上一期文章我们同大家简单介绍了笔记本电脑Type-C接口及其日常用途,今天我们来聊聊笔记本电脑上另一个常备的电脑接口HDMI,它究竟是什么,有哪些用途,我们一一为您揭晓!如图所示,有着HDMI标识的接口就是我们…

中小企业CRM评测-用户交互_易客

用户交互<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" />如何评测在这个部分我们应用了用户接口易用性方面的几种测试方法&#xff0c;以客观的评估参测产品在用户接口设计方面的素质。物理操作负担主要是由参测产品完成一组既定…

pdf编辑软件adobe acrobat_分享一款PDF编辑和阅读软件Acrobat

Adobe Acrobat介绍是一款非常好用且功能强大的PDF编辑和阅读软件。可以对PDF文件进行查看、添加注释、填写、签名并发送之外&#xff0c;同时还可以使用一些高级工具来创建、编辑、导出和组织PDF&#xff0c;以及将任何内容转换为高质量的PDF&#xff0c;并在任何屏幕上完美呈现…

诈尸了。不瞒您说,老坑从不填,天天开新坑

诈尸了。你的年更 UP 诈尸了。不瞒您说&#xff0c;我其实有好多乱七八糟的东西想往外捯饬捯饬整理整理。写过博客&#xff0c;发过公众号&#xff0c;做过视频。但是这些对我整理分享知识来说都有一个硬伤&#xff1a;慢。而咱们 IT 工作者&#xff08;哦&#xff0c;还有培训…

打开计算机任务栏有桌面没,电脑桌面任务栏不显示打开的窗口怎么办

我们在使用电脑的时刻&#xff0c;会遇到林林总总的问题&#xff0c;有时刻我们就会遇到我们在桌面打开了一个页面&#xff0c;然则电脑桌面下方的任务栏却不显示打开的窗口&#xff0c;那这是怎么回事呢&#xff1f;我们想要任务栏显示打开的窗口又该怎么做呢&#xff1f;今天…

Visual Studio将原生支持WSL 2

喜欢就关注我们吧&#xff01;近日&#xff0c;微软官方宣布旗下的集成开发环境 Visual Studio 将原生支持 WSL 2&#xff0c;这意味着 VS 用户可以在 WSL 2 上进行无缝构建和调试&#xff0c;而无需添加 SSH 连接&#xff0c;提升运行效率。据悉&#xff0c;微软曾在 2019 年将…

python删除符合条件的行_这十道经典Python笔试题,全做对算我输

经常有小伙伴学了Python不知道是否能去找工作&#xff0c;可以来看下这十道题检验你的成果&#xff1a;1、常用的字符串格式化方法有哪些&#xff1f;并说明他们的区别a. 使用%&#xff0c;语法糖print("我叫%s&#xff0c;今年%d岁" % ("oxs", 18)) # 我叫…

springmvc如何使用视图解析器_SpringMVC工作原理

SpringMVC工作原理图&#xff1a;SpringMVC流程1、 用户发送请求至前端控制器DispatcherServlet。2、 DispatcherServlet收到请求调用HandlerMapping处理器映射器。3、 处理器映射器找到具体的处理器(可以根据xml配置、注解进行查找)&#xff0c;生成处理器对象及处理器拦截器(…

你有把依赖注入玩坏?

【导读】自从.NET Core给我们呈现了依赖注入&#xff0c;在我们项目中到处充满着依赖注入&#xff0c;虽然一切都已帮我们封装好&#xff0c;但站在巨人的肩膀上&#xff0c;除了凭眺远方&#xff0c;我们也应平铺好脚下的路使用依赖注入不仅仅只是解耦&#xff0c;而且使代码更…