专栏首页北京马哥教育学会用各种姿势备份MySQL数据库

学会用各种姿势备份MySQL数据库

前言

我们试着想一想, 在生产环境中什么最重要?如果我们服务器的硬件坏了可以维修或者换新, 软件问题可以修复或重新安装, 但是如果数据没了呢?这可能是最恐怖的事情了吧, 我感觉在生产环境中应该没有什么比数据更为重要. 那么我们该如何保证数据不丢失、或者丢失后可以快速恢复呢?只要看完这篇, 大家应该就能对MySQL中实现数据备份和恢复能有一定的了解。

为什么需要备份数据?

其实在前言中也大概说明了为什么要备份数据, 但是我们还是应该具体了解一下为什么要备份数据 在生产环境中我们数据库可能会遭遇各种各样的不测从而导致数据丢失, 大概分为以下几种.

  • 硬件故障
  • 软件故障
  • 自然灾害
  • 黑客攻击
  • 误操作 (占比最大)

所以, 为了在数据丢失之后能够恢复数据, 我们就需要定期的备份数据, 备份数据的策略要根据不同的应用场景进行定制, 大致有几个参考数值, 我们可以根据这些数值从而定制符合特定环境中的数据备份策略

  • 能够容忍丢失多少数据
  • 恢复数据需要多长时间
  • 需要恢复哪一些数据

数据的备份类型

数据的备份类型根据其自身的特性主要分为以下几组

  • 完全备份
  • 部分备份 完全备份指的是备份整个数据集( 即整个数据库 )、部分备份指的是备份部分数据集(例如: 只备份一个表)

而部分备份又分为以下两种

  • 增量备份
  • 差异备份 增量备份指的是备份自上一次备份以来(增量或完全)以来变化的数据; 特点: 节约空间、还原麻烦 差异备份指的是备份自上一次完全备份以来变化的数据 特点: 浪费空间、还原比增量备份简单

示意图

MySQL备份数据的方式

MySQl中我们备份数据一般有几种方式

  • 热备份
  • 温备份
  • 冷备份 热备份指的是当数据库进行备份时, 数据库的读写操作均不是受影响 温备份指的是当数据库进行备份时, 数据库的读操作可以执行, 但是不能执行写操作 冷备份指的是当数据库进行备份时, 数据库不能进行读写操作, 即数据库要下线

MySQL中进行不同方式的备份还要考虑存储引擎是否支持

  • MyISAM
  • [ ] 热备
  • [x] 温备
  • [x] 冷备
  • InnoDB
  • [x] 热备
  • [x] 温备
  • [x] 冷备

我们在考虑完数据在备份时, 数据库的运行状态之后还需要考虑对于MySQL数据库中数据的备份方式

  • 物理备份
  • 逻辑备份 物理备份一般就是通过tar,cp等命令直接打包复制数据库的数据文件达到备份的效果 逻辑备份一般就是通过特定工具从数据库中导出数据并另存备份(逻辑备份会丢失数据精度)

备份需要考虑的问题

定制备份策略前, 我们还需要考虑一些问题 我们要备份什么? 一般情况下, 我们需要备份的数据分为以下几种

  • 数据
  • 二进制日志, InnoDB事务日志
  • 代码(存储过程、存储函数、触发器、事件调度器)
  • 服务器配置文件

备份工具 这里我们列举出常用的几种备份工具 mysqldump : 逻辑备份工具, 适用于所有的存储引擎, 支持温备、完全备份、部分备份、对于InnoDB存储引擎支持热备 cp, tar 等归档复制工具: 物理备份工具, 适用于所有的存储引擎, 冷备、完全备份、部分备份 lvm2 snapshot: 几乎热备, 借助文件系统管理工具进行备份 mysqlhotcopy: 名不副实的的一个工具, 几乎冷备, 仅支持MyISAM存储引擎 xtrabackup: 一款非常强大的InnoDB/XtraDB热备工具, 支持完全备份、增量备份, 由percona提供

设计合适的备份策略

针对不同的场景下, 我们应该制定不同的备份策略对数据库进行备份, 一般情况下, 备份策略一般为以下三种

  • 直接cp,tar复制数据库文件
  • mysqldump+复制BIN LOGS
  • lvm2快照+复制BIN LOGS
  • xtrabackup

以上的几种解决方案分别针对于不同的场景

  1. 如果数据量较小, 可以使用第一种方式, 直接复制数据库文件
  2. 如果数据量还行, 可以使用第二种方式, 先使用mysqldump对数据库进行完全备份, 然后定期备份BINARY LOG达到增量备份的效果
  3. 如果数据量一般, 而又不过分影响业务运行, 可以使用第三种方式, 使用lvm2的快照对数据文件进行备份, 而后定期备份BINARY LOG达到增量备份的效果
  4. 如果数据量很大, 而又不过分影响业务运行, 可以使用第四种方式, 使用xtrabackup进行完全备份后, 定期使用xtrabackup进行增量备份或差异备份

总结

备份方法

备份速度

恢复速度

便捷性

功能

一般用于

cp

一般、灵活性低

很弱

少量数据备份

mysqldump

一般、可无视存储引擎的差异

一般

中小型数据量的备份

lvm2快照

一般、支持几乎热备、速度快

一般

中小型数据量的备份

xtrabackup

较快

较快

实现innodb热备、对存储引擎有要求

强大

较大规模的备份

其实我们还可以通过Master-Slave Replication进行数据备份、由于本文篇幅过长、遂放在下篇和大家分享 作者水平很低, 如果有错误及时指出, 如果你觉得本文写的好请点一波赞~(≧▽≦)/~ 作者: AnyISaIln QQ: 1449472454 感谢: MageEdu

编者注:由于篇幅有限,实战演练部分未写入本篇文章中。 想要继续学习的小伙伴可以查看AnyISalIn的博客:http://www.178linux.com/15423

本文分享自微信公众号 - 马哥Linux运维(magedu-Linux),作者:AnyISaIln

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2016-05-06

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • MySQL/MariaDB数据库备份与恢复

    前言 数据库一般存放着企业最为重要的数据,它关系到企业业务能否正常运转,数据库服务器总会遇到一 些不可抗拒因素,导致数据丢失或损坏,而数据库备份可以帮助我们...

    小小科
  • linux下用tar进行数据备份

    豌豆贴心提醒,本文阅读时间7分钟 本机上数据的手工备份 Linux系统上配有功能强大的tar命令,可以灵活地备份数据。 tar最初是为了制作磁带备份而设计的把...

    小小科
  • 只需五步,完美利用命令行工具创建LinuxMac系统下的网站备份

    创建网站备份应该是一个网站管理员最为重要的日常工作之一。但现实情况是,备份这一步往往被很多人忽略,也就是说仍然有很多网管的网站安全意识较低。 所有的Linux/...

    小小科
  • 8种基于文件的Linux备份方案

    在参与各种Web开发项目时,我积累了不少能够方便开发者、系统管理员和DevOps的工具及服务。每当项目接近尾声,所有开发人员都会碰到的首要难题之一便是备份的配置...

    Techeek
  • 从GitLab事件谈我的经历

    先上个图,给各位程序猿们拜个年 ? 悲剧年年有,今年到GitLab家。著名的GitLab这几天在Tech界登上了头条,登上的原因是因为运维人员使用了rm -rf...

    用户1564362
  • 删库就跑路了,那删系统呢?

    做IT这行真的是怕丢东西啊,为了以防root下 rm -rf类似的事件或者其他的需要时,我们要备份,备份,备份!!!其实大多数人对备份的了解也不是那么深,只是知...

    DataScience
  • 多云虚拟化环境的备份遵从性

    企业IT部门是否可以保护它存储在云中的数据?在一定程度上是这样。云计算提供商在为活动数据构建冗余和可用性方面通常是值得信赖的,但是真正的合规性需要可靠的备份。

    静一
  • mysql备份与恢复

    对于DBA来说,备份和恢复是一项最基本的操作,在服务器宕机、磁盘损坏、RAID卡损坏等意外情况下,要保证数据不丢失或者丢失量在可接受范围内,每个DBA应该时刻...

    AsiaYe
  • Mysql备份与恢复(1)---物理备份

    数据库对企业来说最重要的莫过于其中的数据,所以做好数据库的备份是一个不可或缺的工作。数据库及时备份可以帮助我们在数据库出现异常宕机时及时的使用备份数据进行恢复工...

    逆月翎
  • 图文简述三种备份方式

    我们经常提到备份时,会想到全量备份、增量备份,但实际还有一个差异备份,我们就开始迷糊了。原来我们曾经以为理解的备份也不这么简单,我们来看一下。

    希望的田野

扫码关注云+社区

领取腾讯云代金券