zoukankan      html  css  js  c++  java
  • Mysql 的备份恢复

    1.备份的相关概念

    应对因硬件故障、软件故障、自然灾害、黑客攻击、误操作测试等导致的数据丢失场景 ,备份是数据安全的最后一道防线,对于任何数据丢失的场景,备份虽然不一定能恢复百分之百的数据(取决于备份周期),但至少能将损失降到最低。衡量备份恢复有两个重要的指标:恢复点目标(RPO)和恢复时间目标(RTO),前者重点关注能恢复到什么程度,而后者则重点关注恢复需要多长时间。

    1.备份注意要点

    可以容忍丢失多长时间的数据;

    恢复数据要在多长时间内完;

    恢复的时候是否需要持续提供服务;

    恢复的对象,是整个库,多个表,还是单个库,单个表。

    2.还原要点

    做还原测试,用于测试备份的可用性
    还原演练

    3.备份的类型

    热备份:

      这些动态备份在读取或修改数据的过程中进行,很少中断或者不中断传输或处理数据的功能。使用热备份时,系统仍可供读取和修改数据的操作访问。总结:读写操作均可执行

    冷备份:

      这些备份在用户不能访问数据时进行,因此无法读取或修改数据。这些脱机备份会阻止执行任何使用数据的活动。这些类型的备份不会干扰正常运行的系统的性能。但是,对于某些应用程序,会无法接受必须在一段较长的时间里锁定或完全阻止用户访问数据。总结:读写操作均不可进行

    温备份:

      这些备份在读取数据时进行,但在多数情况下,在进行备份时不能修改数据本身。这种中途备份类型的优点是不必完全锁定最终用户。但是,其不足之处在于无法在进行备份时修改数据集,这可能使这种类型的备份不适用于某些应用程序。在备份过程中无法修改数据可能产生性能问题。总结:读操作可执行;但写操作不可执行

    物理和逻辑备份
    物理备份:直接复制数据文件进行备份,与存储引擎有关,占用较多的空间,速度快
    逻辑备份:从数据库中导出数据另存而进行的备份,与存储引擎无关,占用空间少,速度慢,可能丢失精度

    完全备份,部分备份
    完全备份:整个数据集
    部分备份:只备份数据子集,如部分库或表

    完全备份、增量备份、差异备份
    增量备份:仅备份最近一次完全备份或增量备份(如果存在增量)以来变化的数据,备份较快,还原复杂
    差异备份:仅备份最近一次完全备份以来变化的数据,备份较慢,还原简单

    2.备份的方式

    1.冷备份

    最简单的备份方式就是,关闭MySQL服务器,然后将data目录下面的所有文件进行拷贝保存,需要恢复时,则将目录拷贝到需要恢复的机器即可。这种方式确实方便,但是在生产环境中基本没什么作用。因为所有的机器都是要提供服务的,即使是Slave有时候也需要提供只读服务,所以关闭MySQL停服备份是不现实的。与冷备份相对应的一个概念是热备份,所谓热备份是在不影响MySQL对外服务的情况下,进行备份。

      冷备份及停止业务进行备份。

    2.快照备份

    首先要介绍的热备份是快照备份,快照备份是指通过文件系统支持的快照功能对数据库进行备份。备份的原理是将所有的数据库文件放在同一分区中,然后对该分区执行快照工作,对于Linux而言,需要通过LVM(Logical Volumn Manager)来实现。LVM使用写时复制(copy-on-write)技术来创建快照,例如,对整个卷的某个瞬间的逻辑副本,类似于数据库中的innodb存储引擎的MVCC,只不过LVM的快照在文件系统层面,而MVCC在数据库层面,而且仅支持innodb存储引擎。

      LVM有一个快照预留区域,如果原始卷数据有变化时,LVM保证在任何变更写入之前,会复制受影响块到快照预留区域。简单来说,快照区域内保留了快照点开始时的一致的所有old数据。对于更新很少的数据库,快照也会非常小。

      对于MySQL而言,为了使用快照备份,需要将数据文件,日志文件都放在一个逻辑卷中,然后对该卷快照备份即可。由于快照备份,只能本地,因此,如果本地的磁盘损坏,则快照也就损坏了。快照备份更偏向于对误操作防范,可以将数据库迅速恢复到快照产生的时间点,然后结合二进制日志可以恢复到指定的时间点。基本原理如下图

     3.逻辑备份(文本表示:SQL 语句)

    冷备份和快照备份由于其弊端在生产环境中很少使用,使用更多是MySQL自带的逻辑备份和物理备份工具,这节主要讲逻辑备份,MySQL官方提供了Mysqldump逻辑备份工具,虽然已经足够好,但存在单线程备份慢的问题。在社区提供了更优秀的逻辑备份工具mydumper,它的优势主要体现在多线程备份,备份速度更快。

    4.其他常用的备份方式

    全量备份概念

        全量数据就是数据库中所有的数据(或某一个库的全部数据);

        全量备份就是把数据库中所有的数据进行备份。

        mysqldump会取得一个时刻的一致性数据.

    增量备份(刷新二进制日志)

        增量数据就是指上一次全量备份数据之后到下一次全备之前数据库所更新的数据

        对于mysqldump,binlog就是增量数据.

    5.备份工具的介绍

    1、mysqldump: mysql原生自带很好用的逻辑备份工具

    2、mysqlbinlog: 实现binlog备份的原生态命令

    3、xtrabackup: precona公司开发的性能很高的物理备份工具

    3.mysqldump备份介绍

  • 相关阅读:
    nodejs基础文档
    vue_项目心得
    常见的布局方式
    前端 + node + ajax mysql 实现数据的提交
    node创建包
    node学习站
    血一般的教训,请慎用Insert Into Select
    继杭州购房宝典后,Github上的这个程序员买房实用指南火了!
    MySQL入门到精通:MySQL 删除数据库
    C语言中的 int** 是什么?这要从int* 和int 说起...
  • 原文地址:https://www.cnblogs.com/qingbaizhinian/p/13816414.html
Copyright © 2011-2022 走看看