MySQL 8.0 参考手册  / 第 7 章备份与恢复  /  7.1 备份和恢复类型

7.1 备份和恢复类型

本节介绍不同类型备份的特征。

物理(原始)与逻辑备份

物理备份包括存储数据库内容的目录和文件的原始副本。这种备份适用于发生问题时需要快速恢复的大型、重要的数据库。

逻辑备份保存表示为逻辑数据库结构(CREATE DATABASECREATE TABLE语句)和内容(INSERT语句或分隔文本文件)的信息。这种类型的备份适用于您可以编辑数据值或表结构,或在不同机器架构上重新创建数据的少量数据。

物理备份方法具有以下特点:

  • 备份包括数据库目录和文件的精确副本。通常,这是全部或部分 MySQL 数据目录的副本。

  • 物理备份方法比逻辑备份方法更快,因为它们只涉及文件复制而不进行转换。

  • 输出比逻辑备份更紧凑。

  • 由于备份速度和紧凑性对于繁忙的重要数据库很重要,因此 MySQL Enterprise Backup 产品执行物理备份。有关 MySQL Enterprise Backup 产品的概述,请参阅 第 24.2 节,“MySQL Enterprise Backup 概述”

  • 备份和恢复粒度范围从整个数据目录级别到单个文件级别。这可能会或可能不会提供表级粒度,具体取决于存储引擎。例如, InnoDB每个表可以在一个单独的文件中,或者与其他 InnoDB表共享文件存储;每个 MyISAM表唯一对应一组文件。

  • 除了数据库之外,备份还可以包括任何相关文件,例如日志或配置文件。

  • 表中的数据MEMORY很难以这种方式备份,因为它们的内容没有存储在磁盘上。(MySQL Enterprise Backup 产品具有一项功能,您可以MEMORY在备份期间从表中检索数据。)

  • 备份只能移植到具有相同或相似硬件特征的其他机器。

  • 可以在 MySQL 服务器未运行时执行备份。如果服务器正在运行,则需要执行适当的锁定,以便服务器在备份期间不会更改数据库内容。MySQL Enterprise Backup 会自动为需要它的表进行这种锁定。

  • 物理备份工具包括 MySQL Enterprise Backup 的mysqlbackupInnoDB或任何其他表、文件系统级命令(例如cpscptarrsync)或表 的mysqlhotcopyMyISAM

  • 对于恢复:

    • MySQL Enterprise Backup 还原InnoDB 它备份的其他表。

    • ndb_restore恢复 NDB表。

    • 在文件系统级别或使用 mysqlhotcopy复制的文件可以使用文件系统命令复制回其原始位置。

逻辑备份方法具有以下特点:

  • 备份是通过查询MySQL服务器获取数据库结构和内容信息来完成的。

  • 备份比物理方法慢,因为服务器必须访问数据库信息并将其转换为逻辑格式。如果输出是在客户端写的,服务器端也必须将它发送给备份程序。

  • 输出大于物理备份,尤其是在以文本格式保存时。

  • 备份和还原粒度在服务器级别(所有数据库)、数据库级别(特定数据库中的所有表)或表级别可用。无论存储引擎如何,都是如此。

  • 备份不包括日志或配置文件,或不属于数据库的其他与数据库相关的文件。

  • 以逻辑格式存储的备份与机器无关且具有高度可移植性。

  • 逻辑备份是在 MySQL 服务器运行的情况下执行的。服务器未脱机。

  • 逻辑备份工具包括mysqldump 程序和SELECT ... INTO OUTFILE语句。这些适用于任何存储引擎,甚至MEMORY.

  • 要恢复逻辑备份,可以使用mysql客户端处理 SQL 格式的转储文件。要加载分隔文本文件,请使用LOAD DATA语句或mysqlimport 客户端。

在线与离线备份

在线备份在 MySQL 服务器运行时进行,以便可以从服务器获取数据库信息。服务器停止时进行离线备份。这种区别也可以描述为备份与 备份;备份是服务器保持运行但在您从外部访问数据库文件时锁定以防止修改数据的备份 。

在线备份方式具有以下特点:

  • 备份对其他客户端的干扰较小,这些客户端可以在备份期间连接到 MySQL 服务器,并且可以根据需要执行的操作访问数据。

  • 必须注意施加适当的锁定,以便不会发生会损害备份完整性的数据修改。MySQL Enterprise Backup 产品会自动进行这种锁定。

离线备份方式具有以下特点:

  • 客户端可能会受到不利影响,因为服务器在备份期间不可用。出于这个原因,此类备份通常取自可以脱机而不会损害可用性的副本服务器。

  • 备份过程更简单,因为不可能受到客户端活动的干扰。

在线和离线之间的类似区别适用于恢复操作,并且适用类似的特征。但是,与在线备份相比,在线恢复对客户端的影响更大,因为恢复需要更强的锁定。在备份期间,客户端可能能够在备份数据时读取数据。恢复会修改数据而不仅仅是读取数据,因此必须防止客户端在恢复数据时访问数据。

本地与远程备份

本地备份在运行 MySQL 服务器的同一主机上执行,而远程备份则在不同的主机上执行。对于某些类型的备份,即使输出是在服务器本地写入的,也可以从远程主机启动备份。主持人。

  • mysqldump可以连接到本地或远程服务器。对于 SQL 输出(CREATEINSERT语句),可以完成本地或远程转储并在客户端生成输出。对于分隔文本输出(使用 --tab选项),数据文件在服务器主机上创建。

  • mysqlhotcopy只执行本地备份:它连接到服务器以锁定它以防止数据修改,然后复制本地表文件。

  • SELECT ... INTO OUTFILE可以从本地或远程客户端主机启动,但输出文件是在服务器主机上创建的。

  • 物理备份方法通常在 MySQL 服务器主机上本地启动,以便服务器可以脱机,尽管复制文件的目的地可能是远程的。

快照备份

一些文件系统实现允许拍摄快照 。这些在给定的时间点提供文件系统的逻辑副本,而不需要整个文件系统的物理副本。(例如,实现可能使用写时复制技术,以便只需要复制在快照时间之后修改的文件系统部分。)MySQL 本身不提供获取文件系统快照的功能。它可通过 Veritas、LVM 或 ZFS 等第三方解决方案获得。

完全备份与增量备份

完整备份包括在给定时间点由 MySQL 服务器管理的所有数据。增量备份包含在给定时间范围内(从一个时间点到另一个时间点)对数据所做的更改。MySQL 有不同的方法来执行完整备份,例如本节前面描述的方法。通过启用服务器的二进制日志可以实现增量备份,服务器使用二进制日志来记录数据更改。

完整与时间点(增量)恢复

完整恢复从完整备份恢复所有数据。这会将服务器实例恢复到备份时的状态。如果该状态不够新,则可以在完整恢复之后恢复自完整备份以来所做的增量备份,以使服务器达到最新状态。

增量恢复是恢复在给定时间跨度内所做的更改。这也称为时间点恢复,因为它使服务器的状态在给定时间保持最新。时间点恢复基于二进制日志,通常在从备份文件进行完全恢复之后将服务器恢复到备份时的状态。然后将写入二进制日志文件的数据更改作为增量恢复应用,以重做数据修改并将服务器恢复到所需的时间点。

表维护

如果表损坏,数据完整性可能会受到损害。对于 InnoDB表格,这不是典型问题。有关检查MyISAM 表并在发现问题时修复它们的程序,请参阅 第 7.6 节,“MyISAM 表维护和崩溃恢复”

备份计划、压缩和加密

备份计划对于自动化备份过程很有价值。备份输出的压缩减少了空间需求,输出的加密提供了更好的安全性,以防止未经授权访问备份数据。MySQL 本身不提供这些功能。MySQL Enterprise Backup 产品可以压缩InnoDB备份,并且可以使用文件系统实用程序实现备份输出的压缩或加密。其他第三方解决方案可能可用。