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