MySQL的备份策略

备份的类型

1、根据服务器的状态分:

热备份:数据库的读、写操作都不受备份的影响。
温备份:只能执行读的操作,不能执行写。
冷备份:也叫做离线备份,读写都不能执行。

2、从对象来分:

物理备份:复制数据文件;例如:用rpm包安装的/var/lib/mysql,存放的就是数据文件。
逻辑备份:将数据导出至文本文件中。

3、从数据收集来分:

完全备份:备份全部数据;
增量备份:仅备份上次发生改变的数据;
优点:备份时间短;
缺点:还原时间长;
差异备份:仅备份上次完全备份后产生的数据;
优点:还原时间长;
缺点:备份时间长;
工作中常用组合备用方式,例如:

周六:完全备份
周1-2:增量备份
周三:差异备份
周4-6:增量备份
备份时间:02:00(避开高峰期)

逻辑备份和物理备份的优缺点

逻辑备份的优点:

在备份速度上两种备份要取决于不同的存储引擎
物理备份的还原速度非常快。但是物理备份的最小粒度只能做到表 。
逻辑备份保存的结构通常都是纯ASCII的,所以我们可以使用文本处理工具来处理 。
逻辑备份有非常强的兼容性,而物理备份则对版本要求非常高 (尽可能:操作系统版本号相同、MySQL版本号相同)。
逻辑备份也对保持数据的安全性有保证 。

逻辑备份的缺点:

逻辑备份要对RDBMS产生额外的压力,而裸备份无压力 。
逻辑备份的结果可能要比源文件更大。所以很多人都对备份的内容进行压缩 。
逻辑备份可能会丢失浮点数的精度信息。

备份内容

数据文件
日志文件(比如事务日志,二进制日志)
存储过程,存储函数,触发器
配置文件(十分重要,各个配置文件都要备份)
用于实现数据库备份的脚本,数据库自身清理的Crontab等

备份工具

MySQL自带的备份工具

mysqldump 逻辑备份工具,支持所有引擎,MyISAM引擎是温备,InnoDB引擎是热备,备份速度中速, 还原速度非常非常慢,但是在实现还原的时候,具有很大的操作余地。具有很好的弹性。 mysqlhotcopy 物理备份工具,但只支持MyISAM引擎,基本上属于冷备的范畴,物理备份,速度比较快。

文件系统备份工具

cp 冷备份,支持所有引擎,复制命令,只能实现冷备,物理备份。使用归档工具,cp命令,对其进行备 份的,备份速度快,还原速度几乎最快,但是灵活度很低,可以跨系统,但是跨平台能力很差。
lvm 几乎是热备份,支持所有引擎,基于快照(LVM,ZFS)的物理备份,速度非常快,几乎是热备。只影 响数据几秒钟而已。但是创建快照的过程本身就影响到了数据库在线的使用,所以备份速度比较快,恢复速度 比较快,没有什么弹性空间,而且LVM的限制:不能对多个逻辑卷同一时间进行备份,所以数据文件和事务日 志等各种文件必须放在同一个LVM上。而ZFS则非常好的可以在多逻辑卷之间备份。

其它工具

ibbackup 商业工具 MyISAM是温备份,InnoDB是热备份 ,备份和还原速度都很快,这个软件它的每 服务器授权版本是5000美元。
xtrabackup 开源工具 MyISAM是温备份,InnoDB是热备份 ,是ibbackup商业工具的替代工具。
mysqlbackup ORACLE公司也提供了针对企业的备份软件MySQL Enterprise Backup简称: mysqlbackup。

备份策略

策略一:直接拷贝数据库文件

当你使用直接备份方法时,必须保证表不在被使用。如果服务器在你正在拷贝一个表时改变它,拷贝就失 去意义。保证你的拷贝完整性的最好方法是关闭服务器,拷贝文件,然后重启服务器。
当你完成了备份时,需要重启服务器(如果关闭了它)或释放加在表上的锁定(如果你让服务器运行)。要 用直接拷贝文件把一个数据库从一台机器拷贝到另一台机器上,只是将文件拷贝到另一台服务器主机的适当数 据目录下即可。
要确保文件是MyIASM格式或两台机器有相同的硬件结构,否则你的数据库在另一台主机上有奇怪的内容。 (文件系统备份工具 cp)(适合小型数据库,是最可靠的)
1、停止MySQL服务器。
2、直接复制整个数据库目录。注意:使用这种方法最好还原到相同版本服务器中,不同版本可能不兼容。
3、目标服务器上还原。
4、目标服务器数据库目录授权,重启服务器测试。

示例:

基础素材准备:
在这里插入图片描述
先关闭数据库服务:
在这里插入图片描述
执行以下操作:

node1:
[root@node1 mysql]# pwd
/var/lib/mysql
[root@node1 mysql]# tar czf db.tar.gz *
tar: mysql.sock: socket ignored
[root@node1 mysql]# scp db.tar.gz 192.168.21.133:/beifen
root@192.168.21.133's password:
db.tar.gz                                                                            100% 1339KB  41.0MB/s   00:00
------------------------------------------------------------
node2:
先关闭数据库,再清除/var/lib/mysql/下的内容
[root@host2 beifen]# tar xf db.tar.gz /var/lib/mysql//beifen/db.tar.gz解压到/var/lib/mysql
最后就可以看见两台机器上的MySQL数据库显示的都有db
策略二:mysqldump备份数据库

(完全备份+增加备份,速度相对较慢,适合中小型数据库)
mysqldump 是采用SQL级别的备份机制,它将数据表导成 SQL 脚本文件,在不同的 MySQL 版本之间升级 时相对比较合适,这也是最常用的备份方法。 备份策略可以这么定:第一次完全备份,每天一次增量备份,每周再做一次完全备份,如此一直重复。而对于 重要的且繁忙的系统来说,则可能需要每天一次全量备份,每小时一次增量备份,甚至更频繁。为了不影响线 上业务,实现在线备份,并且能增量备份,最好的办法就是采用主从复制机(replication),在 slave 机器上做备份。

策略三:mydumper备份数据库

Mydumper介绍 Mydumper是一个针对MySQL和Drizzle的高性能多线程备份和恢复工具。开发人员主要来自 MySQL,Facebook,SkySQL公司。目前已经在一些线上使用了Mydumper。
Mydumper主要特性:
•轻量级C语言写的
•执行速度比mysqldump快10倍
• 事务性和非事务性表一致的快照(适用于0.2.2以上版本)
• 快速的文件压缩
• 支持导出binlog
• 多线程恢复(适用于0.2.1以上版本)
• 以守护进程的工作方式,定时快照和连续二进制日志(适用于0.5.0以上版本)
• 开源 (GNU GPLv3)
Mydumper安装

 # yum -y install glib2-devel mysql-devel zlib-devel pcre-devel 
 # tar xvf mydumper-0.5.1.tar.gz 
 # cd mydumper-0.5.1/ 
 # cmake . 
 # make
 # make install

mydumper输出文件
metadata:元数据 记录备份开始和结束时间,以及binlog日志文件位置。
table data:每个表一个文件 。
table schemas:表结构文件 。
binary logs: 启用–binlogs选项后,二进制文件存放在binlog_snapshot目录下。
daemon mode:在这个模式下,有五个目录0,1,binlogs,binlog_snapshot,last_dump。 备份目录是0和1,间隔备份,如果mydumper因某种原因失败而仍然有一个好的快照, 当快照完成后,last_dump指向该备份。

策略四:lvm快照从物理角度实现几乎热备的完全备份,配合二进制日志备份实现增量备份。

速度快适 合比较烦忙的数据库
前提:
数据文件要在逻辑卷上;
此逻辑卷所在卷组必须有足够空间使用快照卷;
数据文件和事务日志要在同一个逻辑卷上;
MySQL数据lv和将要创建的快照要在同一vg,vg要有足够的空间存储
优点:
几乎是热备(创建快照前把表上锁,创建完毕后立即释放)
支持所有的存储引擎
备份速度快
无需使用昂贵的商业软件(操作系统级别的)
缺点:
可能需要部门协调(使用操作系统级别的命令,DBA一般没有权限)
无法预计服务停止时间
数据如果分布在多个卷上比较麻烦
操作流程
1)锁表 flush table with read lock
2)查看position号并记录,便于后期恢复 show master status
3)创建snapshot快照 create snapshop
4)解表 unlock tables
5)挂载snapshot
6)拷贝snapshot数据,进行备份。备份整个数据库之前,要关闭mysql服务(保护ibdata1文件)
7)卸载
8)移除快照

策略五:xtrabackup 备份数据库

实现完全热备份与增量热备份(MyISAM是温备份,InnoDB是热备份)
Xtrabackup是一个对InnoDB做数据备份的工具,支持在线热备份(备份时不影响数据读写),是商业备份工 具InnoDB Hotbackup的一个很好的替代品。 Xtrabackup有两个主要的工具:xtrabackup、innobackupex xtrabackup 只能备份InnoDB和XtraDB两种数据表,而不能备份MyISAM数据表。 innobackupex 是参考了InnoDB Hotbackup的innoback脚本修改而来的。innobackupex是一个perl脚本封装,封装了xtrabackup。主要是为了方便的同时备份InnoDB和MyISAM引擎的表,但在处理myisam时 需要加一个读锁。并且加入了一些使用的选项。如slave-info可以记录备份恢复后作为slave需要的一些信息,根据这些信息,可以很方便的利用备份来重做slave。
优点:
支持完全备份和增量备份
备份过程快速、可靠;
备份过程不会打断正在执行的事务;
能够基于压缩等功能节约磁盘空间和流量;
自动实现备份检验;
还原速度快;

策略六:在windows客户端下使用图形化工具进行备份

操作简便:
Navicat for MySQL 是一套专为 MySQL 设计的高性能数据库管理及开发工具。它可以用于任何版本3.21 或以上的 MySQL 数据库服务器,并支持大部份 MySQL 最新版本的功能,包括触发器、存储过程、函数、事件、视图、管理用户等。
使用 SQLyog或Navicat for MySQL等工具进行备份。

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值