本节介绍不同类型的备份的特征。
物理 (原始) 备份与逻辑备份
物理备份包含存储数据库内容的目录和文件的原始副本。这种类型的备份适用于需要在出现问题时快速恢复的大型重要数据库。
逻辑备份保存表示为逻辑数据库结构 (CREATE DATABASE
、CREATE TABLE
语句) 和内容 (INSERT
语句或分隔符文本文件) 的信息。这种类型的备份适用于较少的数据量,您可能需要编辑数据值或表结构,或者在不同的机器体系结构上重新创建数据。
物理备份方法具有以下特点
备份包含数据库目录和文件的精确副本。通常,这是 MySQL 数据目录的全部或部分副本。
物理备份方法比逻辑备份方法快,因为它们只涉及文件复制,没有转换。
输出比逻辑备份更紧凑。
由于备份速度和紧凑性对于繁忙的重要数据库至关重要,因此 MySQL 企业版备份产品执行物理备份。有关 MySQL 企业版备份产品的概述,请参见 第 32.1 节,“MySQL 企业版备份概述”。
备份和恢复粒度范围从整个数据目录级别到单个文件级别。这可能提供或可能不提供表级粒度,具体取决于存储引擎。例如,
InnoDB
表可以分别位于单独的文件中,也可以与其他InnoDB
表共享文件存储;每个MyISAM
表都唯一地对应于一组文件。除了数据库外,备份还可以包含任何相关文件,例如日志文件或配置文件。
来自
MEMORY
表的数据很难以这种方式备份,因为它们的内容未存储在磁盘上。(MySQL 企业版备份产品具有一项功能,您可以在备份期间检索来自MEMORY
表的数据。)备份只能移植到具有相同或类似硬件特性的其他机器上。
可以在 MySQL 服务器未运行时执行备份。如果服务器正在运行,则需要执行适当的锁定,以使服务器在备份期间不会更改数据库内容。MySQL 企业版备份会自动为需要锁定的表执行此锁定。
物理备份工具包括 MySQL 企业版备份的 mysqlbackup(用于
InnoDB
或任何其他表),或文件系统级命令(例如 cp、scp、tar、rsync)(用于MyISAM
表)。对于恢复
MySQL 企业版备份会恢复它备份的
InnoDB
和其他表。ndb_restore 会恢复
NDB
表。在文件系统级别复制的文件可以使用文件系统命令复制回其原始位置。
逻辑备份方法具有以下特点
备份是通过查询 MySQL 服务器来获取数据库结构和内容信息来完成的。
备份比物理方法慢,因为服务器必须访问数据库信息并将其转换为逻辑格式。如果输出写入到客户端,则服务器还必须将其发送到备份程序。
输出比物理备份更大,尤其是在以文本格式保存时。
备份和恢复粒度在服务器级别(所有数据库)、数据库级别(特定数据库中的所有表)或表级别都可用。无论存储引擎如何,情况都是如此。
备份不包括日志文件或配置文件,也不包括不是数据库一部分的其他与数据库相关的文件。
以逻辑格式存储的备份与机器无关,并且高度可移植。
逻辑备份是在 MySQL 服务器运行时执行的。服务器不会下线。
逻辑备份工具包括 mysqldump 程序和
SELECT ... INTO OUTFILE
语句。这些适用于任何存储引擎,即使是MEMORY
。要恢复逻辑备份,可以使用 mysql 客户端处理 SQL 格式的转储文件。要加载分隔符文本文件,请使用
LOAD DATA
语句或 mysqlimport 客户端。
在线备份与离线备份
在线备份是在 MySQL 服务器运行时进行的,以便可以从服务器获取数据库信息。离线备份是在服务器停止时进行的。这种区别也可以描述为 “热” 与 “冷” 备份;“温” 备份是指服务器保持运行但被锁定以防止在您从外部访问数据库文件时修改数据。
在线备份方法具有以下特点
备份对其他客户端的影响较小,这些客户端可以在备份期间连接到 MySQL 服务器,并且可能能够访问数据,具体取决于它们需要执行的操作。
必须注意实施适当的锁定,以使数据修改不会发生,从而影响备份完整性。MySQL 企业版备份产品会自动执行此锁定。
离线备份方法具有以下特点
客户端可能会受到不利影响,因为服务器在备份期间不可用。出于这个原因,此类备份通常是从副本中进行的,这些副本可以下线而不会影响可用性。
备份过程更简单,因为不存在客户端活动干扰的可能性。
在线和离线之间的类似区别适用于恢复操作,并且适用类似的特征。但是,与在线备份相比,客户端更有可能受到在线恢复的影响,因为恢复需要更强大的锁定。在备份期间,客户端可能能够在数据被备份时读取数据。恢复会修改数据,而不仅仅是读取数据,因此在恢复数据时必须阻止客户端访问数据。
本地备份与远程备份
本地备份是在运行 MySQL 服务器的同一主机上执行的,而远程备份是在不同的主机上执行的。对于某些类型的备份,即使输出是在服务器主机上本地写入的,也可以从远程主机启动备份。
mysqldump 可以连接到本地或远程服务器。对于 SQL 输出 (
CREATE
和INSERT
语句),本地或远程转储可以完成,并在客户端上生成输出。对于分隔符文本输出(使用--tab
选项),数据文件是在服务器主机上创建的。SELECT ... INTO OUTFILE
可以从本地或远程客户端主机启动,但输出文件是在服务器主机上创建的。物理备份方法通常是在 MySQL 服务器主机上本地启动的,以便可以使服务器下线,尽管复制文件的目标可能为远程。
快照备份
一些文件系统实现允许创建“快照”。这些快照提供文件系统在给定时间点的逻辑副本,而无需创建整个文件系统的物理副本。(例如,实现可以使用写时复制技术,以便仅复制快照时间后修改的文件系统部分。)MySQL 本身不提供创建文件系统快照的功能。它可以通过第三方解决方案(如 Veritas、LVM 或 ZFS)实现。
完全备份与增量备份
完全备份包括 MySQL 服务器在给定时间点管理的所有数据。增量备份包括在给定时间段内对数据进行的更改(从一个时间点到另一个时间点)。MySQL 有多种方法可以执行完全备份,例如本节前面介绍的方法。通过启用服务器的二进制日志,可以进行增量备份,服务器使用二进制日志来记录数据更改。
完全恢复与时间点恢复(增量恢复)
完全恢复从完全备份中恢复所有数据。这会将服务器实例恢复到创建备份时的状态。如果该状态不够最新,则可以执行完全恢复,然后恢复自完全备份以来进行的增量备份,以将服务器恢复到更新的状态。
增量恢复是在给定时间段内进行的更改的恢复。这也称为时间点恢复,因为它会将服务器的状态更新到给定的时间点。时间点恢复基于二进制日志,通常在从备份文件中执行完全恢复后进行,这会将服务器恢复到创建备份时的状态。然后,将二进制日志文件中写入的数据更改应用为增量恢复,以重做数据修改并将服务器恢复到所需的时间点。
表维护
如果表损坏,数据完整性可能会受到影响。对于 InnoDB
表,这不是一个典型问题。要让程序检查 MyISAM
表并在发现问题时进行修复,请参见 第 9.6 节“MyISAM 表维护和崩溃恢复”。
备份计划、压缩和加密
备份计划对于自动执行备份过程非常有价值。压缩备份输出可以减少空间需求,而加密输出可以提供更好的安全性,防止未经授权访问备份数据。MySQL 本身不提供这些功能。MySQL Enterprise Backup 产品可以压缩 InnoDB
备份,并且可以使用文件系统实用程序实现备份输出的压缩或加密。可能还提供其他第三方解决方案。