InnoDB存储引擎的备份与性能调优

备份分类

可以根据不同的类型来划分备份的方法。
根据备份的方法不同可以将备份分为:

  • Hot Backup(热备)

Hot Backup是指数据库运行中直接备份,对正在运行的数据库操作没有任何的影响。这种方式在MySQL官方手册中称为Online Backup(在线备份)。

  • Cold Backup(冷备)

Cold Backup是指备份操作是在数据库停止的情况下,这种备份最为简单,–般只需要复制相关的数据库物理文件即可。这种方式在MySQL官方手册中称为Offine Backup(离线备份)。

  • Warm Backup(温备)

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

按照备份后文件的内容,备份又可以分为:

  • 逻辑备份

在MySQL数据库中,逻辑备份是指备份出的文件内容是可读的,一般是文本文件。内容一般是由一条条SQL语句,或者是表内实际数据组成。这类方法的好处是可以观察导出文件的内容,一般适用于数据库的升级、迁移等工作。但其缺点是恢复所需要的时间往往较长。

  • 裸文件备份

裸文件备份是指复制数据库的物理文件,既可以是在数据库运行中的复制(如ibbackup、xtrabackup这类工具),也可以是在数据库停止运行时直接的数据文件复制。这类备份的恢复时间往往较逻辑备份短很多。

若按照备份数据库的内容来分,备份又可以分为:

  • 完全备份

完全备份是指对数据库进行一个完整的备份。

  • 增量备份

增量备份是指在上次完全备份的基础上,对于更改的数据进行备份。

  • 日志备份

日志备份主要是指对MySQL数据库二进制日志的备份,通过对一个完全备份进行二进制日志的重做( replay〉来完成数据库的point-in-time的恢复工作。MySQL数据库复制(replication)的原理就是异步实时地将二进制日志重做传送并应用到从(slave/standby)数据库。

复制

复制工作原理

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

在这里插入图片描述
从服务器有2个线程,一个是IO线程,负责读取主服务器的二进制日志,并将其保存为中继日志﹔另一个是SQL线程,复制执行中继日志。

快照+复制的备份架构
假设当前应用采用了主从的复制架构,从服务器作为备份。这时,一个初级DBA执行了误操作,如 DROP DATABASE或DROP TABLE,这时从服务器也跟着运行了。这时用户怎样从服务器进行恢复呢?
因此,一个比较好的方法是通过对从服务器上的数据库所在分区做快照,以此来避免误操作对复制造成影响。当发生主服务器上的误操作时,只需要将从服务器上的快照进行恢复,然后再根据二进制日志进行point-in-time 的恢复即可。因此快照+复制的备份架构如图8-5所示。
在这里插入图片描述
还有一些其他的方法来调整复制,比如采用延时复制,即间歇性地开启从服务器上的同步,保证大约一小时的延时。

性能调优

  • 选择合适的CPU

用户首先需要清楚当前数据库的应用类型。一般而言,可分为两大类:OLTP(Online Transaction Processing,在线事务处理))和OLAP (Online AnalyticalProcessing,在线分析处理)。这是两种截然不同的数据库应用。
InnoDB存储引擎一般都应用于OLTP的数据库应用,这种应用的特点如下:
1.用户操作的并发量大
2.事务处理的时间一般比较短
3.查询的语句较为简单,一般都走索引
4.复杂的查询较少
可以看出,OLTP的数据库应用本身对CPU的要求并不是很高,因为复杂的查询可能需要执行比较、排序、连接等非常耗CPU的操作,这些操作在OLTP 的数据库应用中较少发生。因此,可以说OLAP是 CPU密集型的操作,而OLTP是IO密集型的操作。
在当前的 MySQL数据库版本中,一条SQL查询语句只能在一个CPU中工.作,并不支持多CPU的处理。OLTP的数据库应用操作一般都很简单,因此对OLTP应用的影响并不是很大。但是,多个CPU或多核CPU对处理大并发量的请求还是会有帮助。

  • 内存的重要性

内存的大小是最能直接反映数据库的性能。通过之前各个章节的介绍,已经了解到InnoDB存储引擎既缓存数据,又缓存索引,并且将它们缓存于一个很大的缓冲池中,即InnoDB Buffer Pool。因此,内存的大小直接影响了数据库的性能。

  • 硬盘对数据库性能的影响
  • 合理地设置RAID

RAID (Redundant Array of Independent Disks,独立磁盘冗余数组)的基本思想就是把多个相对便宜的硬盘组合起来,成为一个磁盘数组,使性能达到甚至超过一个价格昂贵、容量巨大的硬盘。

  • 操作系统的选择也很重要
  • 不同文件系统对数据库的影响
  • 选择合适的基准测试工具

猜你喜欢

转载自blog.csdn.net/AIJXB/article/details/113562244