本节描述了不同类型备份的特性。
物理 (原始) 与逻辑备份
物理备份包括存储数据库内容的目录和文件的原始副本。这种类型的备份适合大型、重要的数据库,当出现问题时需要快速恢复。
逻辑备份保存以逻辑数据库结构 (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
备份,并且可以使用文件系统实用程序来压缩或加密备份输出。可能还提供其他第三方解决方案。