MySQL~InnoDB的备份和主从复制

  • 对于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~InnoDB的备份和主从复制_第1张图片

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

[](()主从复制


  • 复制(replication)是MySQL数据库提供的一种高可用高性能的解决方案,一般用来建立大型的应用

  • 总体来说,replication的工作原理分为以下3个步骤:

  1. 主服务器(master)把 数据更改后 记录到二进制日志(binlog)中

  2. 从服务器(save)把主服务器的 二进制日志 复制到自己的 中继日志(relay log)中

  3. 从服务器重做 中继日志中的 日志,把 主服务器更改后的数据 应用到自己的数据库上,以达到数据的最终一致性

  • **复制的工作原理并不复杂,其实就是一个完全备份加上二进制日志备份的还原。不同的是这个二进制日志的还原操作基本上实时在进行中 **

  • 这里特别需要注意的是,复制不是完全实时地进行同步,而是异步实时。这中间存在主从服务器之间的执行延时,如果主服务器的压力很大,则可能导致主从服务器延时较大

[](()复制的工作原理

从服务器有2个线程:

  • 一个是IO线程,负责读取主服务器的二进制日志,并将其保存为中继日志

  • 另一个是SQL线程,复制执行中继日志, 把 主服务器更改后的数据 应用到自己的数据库上,以达到数据的最终一致性

MySQL~InnoDB的备份和主从复制_第2张图片

[](()主从复制的作用

  • 复制不仅仅可以用来做备份,还可以用作以下几种功能
  1. 读取的负载均衡 :由于主从服务器中的数据一致,所以可以将读取平均的分布到从服务器中,减少主服务器的压力

  2. 数据保障 :可以在不同的服务器之间实现数据的复制, 一旦主服务器数据出错从服务器中的数据还是正确的数据

  3. 高可用和故障转移 : 在主服务器发生故障的时候,可以使用从服务器进行顶替,减少故障的停机时间和恢复时间。

你可能感兴趣的:(Java,经验分享,架构,java)