8.1 备份与恢复概述 350

按备份的方法分:

  • HOT BACKUP(热备):在数据库运行时备份,对正在运行的数据库的操作没有影响。
    备份工具:ibbackup、XtraBackup
  • COLD BACKUP(冷备):在数据库停止时备份。
  • WARM BACKUP(温备)在数据库运行时备份,对正在运行的数据库的操作有影响。

按备份文件的内容分:

  • 逻辑备份:内容一般是SQL语句或是表内实际数据。缺点是备份时间比较长。
  • 裸文件备份:指复制数据库的物理文件,这类备份的恢复时间往往较逻辑备份短很多。

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

  • 完全备份:指对数据库进行一个完整的备份。
  • 增量备份:增量备份是指在上次完全备份的基础上,对于更改的数据进行备份。
  • 日志备份:日志备份主要是指对MySQL数据库二进制日志的备份

8.2 冷备 352

关闭数据库,拷贝frm文件、共享表空间文件、独立表空间文件、重做日志文件,还有推荐备份数据库配置文件:my.cnf。

冷备份的优点:备份简单;备份文件易于在不同操作系统、不同mysql版本上进行恢复;恢复简单;恢复速度快。

冷备份的缺点:占用空间大

8.3 逻辑备份 353

8.3.1 mysqldump 353

mysqldump最常用的逻辑备份工具。以下列举几个比较重要的参数:

–single-transaction 在备份开始前使用start transaction以此保证备份的一致性,需要保证没有其他DDL语句,针对innodb有效。

–lock-tables -l 在备份中依次锁住架构下所有的表,保证备份的一致性,一般用于MyISAM备份。

–lock-all-tables -x 在备份过程中,对所有架构中的所有表上锁。

–add-drop-database : 在 CREATE DATABASE 之前先运行 DROP DATABASE。

–master-data[=value] 当值为1时,转储文件中有change master语句,如果值为2,change master语句是被注释的,此参数会忽略–lock-tables.如果没有使用–single-transaction则会自动使用–lock-all-tables。

–events (-E) 备份事件调度器。

–routines (-R) 备份存储过程和函数。

–triggers 备份触发器。

–hex-blob:将BINARY、VARBINARY、BLOG和BIT列类型备份为十六进制的格式。

–tab=path(-T path) :产生TAB分割的数据文件。对于每张表mysqldump会创建一个包含create table的table_name.SQL和一个包含数据的tbl_name.txt,可以使用参数改变默认的分割符和换行符。

–where= ’ where_ condition’ (-w ’ where condition’): 导出给定条件的数据。如.导出b架构下的表a,并且表a的数据大于2

8.3.2 SELECT…INTO OUTFILE 360

Select … into语句也是一种逻辑备份的方法,或者更准确地说是到处一张表中的数据。

也有一些参数和选项,具体看书。

8.3.3 逻辑备份的恢复 362

Mysqldump的恢复操作比较简单,因为备份文件就是导出的SQL语句,一般只需要执行这个文件就可以了。通过mysqldump可以恢复存储过程,触发器,事件,数据,但是不能导出视图。视图还需要额外导出。

8.3.4 LOAD DATA INFILE 362

若通过mysqldump –tab或SELECT INTO OUTFILE导出的数据需要恢复时,可以通过LOAD DATA INFILE命令进行导入。

8.3.5 mysqlimport 364

mysqlimport是MySQL数据库提供的一个命令行程序,从本质上来说,是LOAD DATA INFILE的命令接口,而且大多数的选项都和LOAD DATA INFILE语法相同。区别是:mysqlimport可以并发导入多个文件,而不是并发导入一个文件。

8.4 二进制日志备份与恢复 366

二进制日志非常关键,用户可以通过它完成point-in-time的恢复工作。开启二进制文件后还需要进行一些参数的设置。

可以通过使用mysqlbinlog来恢复二进制日志,具体的命令格式见书。

8.5 热备 367

8.5.1 ibbackup 367

ibbackup是InnoDB存储引擎官方提供的热备工具,可以同时备份MyISAM存储引擎和InnoDB存储引擎表。

对于InnoDB存储引擎表其备份工作原理如下:

1)记录备份开始时,InnoDB存储引擎重做日志文件检查点的LSN.
2)复制共享表空间文件以及独立表空间文件。
3)记录复制完表空间文件后,InnoDB 存储引擎重做日志文件检查点的LSN。
4)复制在备份时产生的重做日志。

ibbackup的优点如下:1.在线备份,不阻塞任何的SQL语句。2.备份性能好3.支持压缩备份4.跨平台支持,

ibbackup对InnoDB存储引擎表的恢复步骤为:
1)恢复表空间文件。
2)应用重做日志文件。

8.5.2 XtraBackup 368

在ibbackup基础上实现了增量备份。

备份原理与ibbackup类似。

8.5.3 XtraBackup实现增量备份 370

XtraBackup实现增量备份的基本工作原理:

  • 首先完成一个完全备份,并记录下此时检查点的LSN;
  • 在进行增量备份时,比较表空间的每个页的LSN是否大于上次备份时的LSN,如果是则备份该页,同时记录当前检查点的LSN。

8.6 快照备份 372

MySQL数据库本身并不支持快照功能,因此快照备份是指通过文件系统支持的快照功能对数据库进行备份。

以Linux中的LVM举例:

LVM是LINUX系统下对磁盘分区进行管理的一种机制。LVM在硬盘和分区之,上建立一个逻辑层,来提高磁盘分区管理的灵活性:将若干个磁盘分区连接为一个整块的卷组(VolumeGroup),然后在卷组上可以随意创建逻辑卷( Logical Volumes),并进一步在逻辑卷上创建文件系统。

第八章-备份与恢复

LVM使用了写时复制(Copy-on-write) 技术来创建快照。创建快照时,仅复制元数据(metadata),不会有数据的物理操作,当快照创建完成,原始卷上有写操作时,快照会跟踪原始卷块的改变,将要改变的数据在改变之前复制到快照预留的空间里。

8.7 复制 376

8.7.1 复制的工作原理 376

replication的工作原理分为以下3个步骤:

  1. 主服务器把数据更新记录写道binlog。
  2. 从服务器把主服务器的二进制日志拷贝到自己的中继日志中。
  3. 从服务器重做做中继日志中的时间,把更新应用到自己服务器上。

原理如下图所示:

第八章-备份与恢复

8.7.2 快照+复制的备份架构 380

仅采用主从的复制架构,如果主服务器执行了误操作,这时从服务器也会跟着运行,因此无法恢复了。

所以引入了快照+复制的备份架构,架构图如下所示:

第八章-备份与恢复

原理:当发生主服务器上的误操作时,只需要将从服务器上的快照进行恢复,然后再根据二进制日志进行point-in-time的恢复即可。

8.8 小结 382

本章中介绍了不同的备份类型,并介绍了MySQL数据库常用的–些备份方式。同时主要介绍了对于InnoDB存储引擎表的备份。不管是mysqldump还是xtrabackup工具,都可以对InnoDB存储引擎表进行很好的在线热备工作。最后,介绍了复制,通过快照和复制技术的结合,可以保证用户得到一个异步实时的在线MySQL备份解决方案。

相关文章:

  • 2022-12-23
  • 2021-09-28
  • 2021-12-04
  • 2022-02-15
  • 2021-12-15
猜你喜欢
  • 2021-12-14
  • 2021-07-13
  • 2021-05-28
  • 2021-12-10
  • 2021-06-18
  • 2022-01-03
相关资源
相似解决方案