Documentation Home
MySQL 8.3 Reference Manual
Related Documentation Download this Manual
PDF (US Ltr) - 40.8Mb
PDF (A4) - 40.9Mb
Man Pages (TGZ) - 294.0Kb
Man Pages (Zip) - 409.0Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb
Excerpts from this Manual

MySQL 8.3 Reference Manual  /  Backup and Recovery  /  Backup and Recovery Types

9.1 备份和恢复类型

本节描述了不同类型的备份的特征。

物理(原始)与逻辑备份

物理备份包括数据库内容的原始副本。这种类型的备份适合大型、重要的数据库,需要快速恢复问题时。

逻辑备份保存逻辑数据库结构(CREATE DATABASECREATE TABLE 语句)和内容(INSERT 语句或分隔文本文件)。这种类型的备份适合小量数据,可能需要编辑数据值或表结构,或者在不同机器架构上重新创建数据。

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

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

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

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

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

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

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

  • MEMORY 表中备份数据很 trick,因为它们的内容不存储在磁盘上。(MySQL Enterprise Backup 产品具有从 MEMORY 表中检索数据的功能。)

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

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

  • 物理备份工具包括 MySQL Enterprise Backup 的 mysqlbackup,用于 InnoDB 或其他表,或者文件系统级命令(如 cpscptarrsync),用于 MyISAM 表。

  • 对于恢复:

    • MySQL 企业备份还原 InnoDB 和其他表格。

    • ndb_restore 还原 NDB 表格。

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

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

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

  • 与物理方法相比,逻辑备份速度较慢,因为服务器必须访问数据库信息并将其转换为逻辑格式。如果输出写入客户端,则服务器还必须将其发送给备份程序。

  • 输出文件大小比物理备份大,特别是在文本格式下。

  • 备份和还原粒度可以在服务器级别(所有数据库)、数据库级别(特定数据库中的所有表格)或表格级别上实现。这适用于所有存储引擎。

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

  • 逻辑格式的备份是机器独立的且高度可移植的。

  • 逻辑备份是在 MySQL 服务器运行时执行的。服务器不需要离线。

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

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

在线备份与离线备份

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

在线备份方法具有以下特征:

  • 备份对其他客户端的影响较小,客户端可以在备份期间连接到 MySQL 服务器,并可能可以访问数据,具体取决于它们需要执行的操作。

  • 必须采取适当的锁定,以防止数据修改损害备份的完整性。MySQL Enterprise Backup 产品自动执行锁定。

离线备份方法具有以下特征:

  • 客户端可能会受到不良影响,因为服务器在备份期间不可用。因此,这种备份通常来自可以离线而不影响可用性的副本。

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

恢复操作也存在在线和离线之分,具有相似的特点。然而,客户端更可能受到在线恢复的影响,而不是在线备份,因为恢复需要更强的锁定。在备份期间,客户端可能可以读取数据,而恢复修改数据,不仅仅是读取数据,因此客户端必须在恢复期间阻止访问数据。

本地与远程备份

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

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

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

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

快照备份

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

完整备份与增量备份

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

完整恢复与点时恢复

完整恢复从完整备份中恢复所有数据。这将服务器实例恢复到备份时的状态。如果该状态不够当前,可以通过恢复自完整备份以来创建的增量备份,以将服务器恢复到更当前的状态。

增量恢复是恢复在给定时间范围内所做的更改。这也称为点时恢复,因为它使服务器的状态当前到达给定的时间。点时恢复基于二进制日志,并通常遵循从备份文件的完整恢复,恢复服务器到备份时的状态。然后,二进制日志文件中的数据更改被应用于增量恢复,以重做数据修改并将服务器带到所需的时间点。

表维护

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

备份调度、压缩和加密

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