前言
我们试着想一想, 在生产环境中什么最重要?如果我们服务器的硬件坏了可以维修或者换新, 软件问题可以修复或重新安装, 但是如果数据没了呢?这可能是最恐怖的事情了吧, 我感觉在生产环境中应该没有什么比数据更为重要. 那么我们该如何保证数据不丢失、或者丢失后可以快速恢复呢?只要看完这篇, 大家应该就能对MySQL
中实现数据备份和恢复能有一定的了解。
其实在前言
中也大概说明了为什么要备份数据, 但是我们还是应该具体了解一下为什么要备份数据
在生产环境中我们数据库可能会遭遇各种各样的不测从而导致数据丢失, 大概分为以下几种.
所以, 为了在数据丢失之后能够恢复数据, 我们就需要定期的备份数据, 备份数据的策略要根据不同的应用场景进行定制, 大致有几个参考数值, 我们可以根据这些数值从而定制符合特定环境中的数据备份策略
数据的备份类型根据其自身的特性主要分为以下几组
而部分备份又分为以下两种
示意图
在MySQl
中我们备份数据一般有几种方式
MySQL
中进行不同方式的备份还要考虑存储引擎是否支持
我们在考虑完数据在备份时, 数据库的运行状态之后还需要考虑对于MySQL
数据库中数据的备份方式
tar
,cp
等命令直接打包复制数据库的数据文件达到备份的效果
逻辑备份一般就是通过特定工具从数据库中导出数据并另存备份(逻辑备份会丢失数据精度)定制备份策略前, 我们还需要考虑一些问题 我们要备份什么? 一般情况下, 我们需要备份的数据分为以下几种
备份工具
这里我们列举出常用的几种备份工具
mysqldump
: 逻辑备份工具, 适用于所有的存储引擎, 支持温备、完全备份、部分备份、对于InnoDB存储引擎支持热备
cp, tar 等归档复制工具
: 物理备份工具, 适用于所有的存储引擎, 冷备、完全备份、部分备份
lvm2 snapshot
: 几乎热备, 借助文件系统管理工具进行备份
mysqlhotcopy
: 名不副实的的一个工具, 几乎冷备, 仅支持MyISAM存储引擎
xtrabackup
: 一款非常强大的InnoDB/XtraDB热备工具, 支持完全备份、增量备份, 由percona
提供
针对不同的场景下, 我们应该制定不同的备份策略对数据库进行备份, 一般情况下, 备份策略一般为以下三种
以上的几种解决方案分别针对于不同的场景
lvm2
的快照对数据文件进行备份, 而后定期备份BINARY LOG达到增量备份的效果xtrabackup
进行完全备份后, 定期使用xtrabackup
进行增量备份或差异备份备份方法 | 备份速度 | 恢复速度 | 便捷性 | 功能 | 一般用于 |
---|---|---|---|---|---|
cp | 快 | 快 | 一般、灵活性低 | 很弱 | 少量数据备份 |
mysqldump | 慢 | 慢 | 一般、可无视存储引擎的差异 | 一般 | 中小型数据量的备份 |
lvm2快照 | 快 | 快 | 一般、支持几乎热备、速度快 | 一般 | 中小型数据量的备份 |
xtrabackup | 较快 | 较快 | 实现innodb热备、对存储引擎有要求 | 强大 | 较大规模的备份 |
其实我们还可以通过Master-Slave Replication
进行数据备份、由于本文篇幅过长、遂放在下篇和大家分享
作者水平很低, 如果有错误及时指出, 如果你觉得本文写的好请点一波赞~(≧▽≦)/~
作者: AnyISaIln QQ: 1449472454
感谢: MageEdu
编者注:由于篇幅有限,实战演练部分未写入本篇文章中。 想要继续学习的小伙伴可以查看AnyISalIn的博客:http://www.178linux.com/15423