文章目录

  • 备份
  • Hot Backup(热备)
  • Cold Backup(冷备)
  • Warm Backup(温备)
  • 快照备份
  • 主从复制
  • 复制的工作原理
  • 主从复制的作用
  • 快照+复制的备份架构


备份

  • 根据不同的类型来划分备份的方法,可以分为以下几种:

Hot Backup(热备)

是指在数据库运行时进行直接备份,对正在运行的数据库没有任何影响

  • 热备份的优点如下:
    1.可在表空间或数据文件级备份,备份时间短, 还不会阻塞sql执行。
    2.备份时数据库仍可使用。
    3.可达到秒级恢复(恢复到某一时间点上)。
    4.可对几乎所有数据库实体作恢复。
    5.恢复是快速的,在大多数情况下在数据库仍工作时恢复。
    6.跨平台支持,backup可以运行在Linux、 Windows以及主流的UNX系统平台上
  • 热备份的缺点:
    1.不能出错,否则后果严重。
    2.若热备份不成功,所得结果不可用于时间点的恢复。
    3.因难于维护,所以要特别仔细小心,不允许“以失败而告终”

Cold Backup(冷备)

是指备份操作是在数据库停止的情况下,这种备份最为简单,一般只需要复制相关的数据库物理文件即可, 也叫做离线时备份

  • 对于InnoDB来说冷备非常简单,只需要备份MySQL数据库的frm文件、共享表空间文件、独立表空间文件(*.ibd)、重做日志文件
  • 冷备份的优点:
    1.是非常快速的备份方法(只需拷贝文件)
    2.容易归档(简单拷贝即可)
    3.容易恢复到某个时间点上(只需将文件再拷贝回去)
    4.能与归档方法相结合,作数据库“最新状态”的恢复。
    5.低度维护,高度安全。
    6. 跨平台性不好
  • 冷备份的缺点:
    1.单独使用时,只能提供到“某一时间点上”的恢复。
    2.在实施备份的全过程中,数据库必须要作备份而不能作其它工作。也就是说,在冷备份过程中,数据库必须是关闭状态。
    3.若磁盘空间有限,只能拷贝到磁带等其它外部存储设备上,速度会很慢。
    4.不能按表或按用户恢复。 值得注意的是冷备份必须在数据库关闭的情况下进行,当数据库处于打开状态时,执行数据库文件系统备份是无效的 。而且在恢复后一定要把数据库文件的属组和属主改为mysql。

Warm Backup(温备)

是指在数据库运行时进行的, 可以保证备份的数据的一致性,但是对当前数据库的操作会有所影响,例如加一个全局读锁以保证备份数据的一致性

快照备份

  • MySQL数据库本身并不支持快照功能,因此快照备份是指通过文件系统支持的快照功能对数据库进行备份。备份的前提是将所有数据库文件放在同一文件分区中,然后对该分区进行快照操作 .
  • 其原理使用了写时复制(Copy-on- write)技术来创建快照
  • 创建一个快照时,仅复制原始卷中数据的元数据( meta data),并不会有数据的物理操作,因此快照的创建过程是非常快的。当快照创建完成,原始卷上有写操作时,快照会跟踪原始卷块的改变,将要改变的数据在改变之前复制到快照预留的空间里,因此这个原理的实现叫做写时复制。而对于快照的读取操作,如果读取的数据块是创建快照后没有修改过的,那么会将读操作直接重定向到原始卷上,如果要读取的是已经修改过的块,则将读取保存在快照中该块在原始卷上改变之前的数据。因此,采用写时复制机制保证了读取快照时得到的数据与快照创建时一致
  • 下图显示了LVM的快照读取,可见B区块被修改了,因此历史数据放人了快照区域。读取快照数据时,A、C、D块还是从原有卷中读取,而B块就需要从快照读取了
  • mysql热备份逻辑 mysql热备份优点_java

不仅仅只有以上方法,我们还可以通过主从复制,利用从服务器作为备份

主从复制

  • 复制(replication)是MySQL数据库提供的一种高可用高性能的解决方案,一般用来建立大型的应用
  • 总体来说,replication的工作原理分为以下3个步骤:
  1. 主服务器(master)把 数据更改后 记录到二进制日志(binlog)中
  2. 从服务器(save)把主服务器的 二进制日志 复制到自己的 中继日志(relay log)中
  3. 从服务器重做 中继日志中的 日志,把 主服务器更改后的数据 应用到自己的数据库上,以达到数据的最终一致性
  • **复制的工作原理并不复杂,其实就是一个完全备份加上二进制日志备份的还原。不同的是这个二进制日志的还原操作基本上实时在进行中 **
  • 这里特别需要注意的是,复制不是完全实时地进行同步,而是异步实时。这中间存在主从服务器之间的执行延时,如果主服务器的压力很大,则可能导致主从服务器延时较大

复制的工作原理

从服务器有2个线程:

  • 一个是IO线程,负责读取主服务器的二进制日志,并将其保存为中继日志
  • 另一个是SQL线程,复制执行中继日志, 把 主服务器更改后的数据 应用到自己的数据库上,以达到数据的最终一致性

主从复制的作用

  • 复制不仅仅可以用来做备份,还可以用作以下几种功能
  1. 读取的负载均衡 :由于主从服务器中的数据一致,所以可以将读取平均的分布到从服务器中,减少主服务器的压力
  2. 数据保障 :可以在不同的服务器之间实现数据的复制, 一旦主服务器数据出错从服务器中的数据还是正确的数据
  3. 高可用和故障转移 : 在主服务器发生故障的时候,可以使用从服务器进行顶替,减少故障的停机时间和恢复时间。
  • 假设当前应用采用了主从的复制架构,从服务器作为备份。这时,一个初级DBA执行了误操作,如 DROP DATABASE或 DROP TABLE,这时从服务器也跟着运行了。这时用户怎样从服务器进行恢复呢?

快照+复制的备份架构

  • 一个比较好的方法是通过对从服务器上的数据库所在分区做快照,以此来避免误操作对复制造成影响。当发生主服务器上的误操作时,只需要将从服务器上的快照进行恢复,然后再根据二进制日志进行point-in-time的恢复即可
  • mysql热备份逻辑 mysql热备份优点_java_02

  • 还有一些其他的方法来调整复制,比如采用延时复制,即间歇性地开启从服务器上的同步,保证大约一小时的延时。这的确也是一个方法,只是数据库在高峰和非高峰期间每小时产生的二进制日志量是不同的,用户很难精准地控制。另外,这种方法也不能完全起到对误操作的防范作用