Mysql备份和恢复类型
本节描述了不同类型备份的特点。
物理(原始)备份与逻辑备份
物理备份由存储数据库内容的目录和文件的原始副本组成。这种类型的备份适用于需要在出现问题时快速恢复的大型重要数据库。
逻辑备份保存表示为逻辑数据库结构(CREATE DATABASE、CREATE TABLE语句)和内容(INSERT语句或分隔文本文件)的信息。这种类型的备份适用于数据量较小的情况,您可能需要编辑数据值或表结构,或者在不同的机器架构上重新创建数据。
物理备份方法具有以下特点
- 备份由数据库目录和文件的精确副本组成。通常这是MySQL数据目录的全部或部分副本。
- 物理备份方法比逻辑备份更快,因为它们只涉及文件复制而无需转换。
- 输出比逻辑备份更紧凑。
- 由于备份速度和紧凑性对繁忙的重要数据库非常重要,MySQL Enterprise Backup产品执行物理备份。
- 备份和恢复的粒度范围从整个数据目录级别到单个文件级别。这可能提供了表级别的粒度,也可能没有,这取决于存储引擎。例如,InnoDB表可以是单独的文件,也可以与其他InnoDB表共享文件存储;每个MyISAM表都唯一对应一组文件。
- 除了数据库,备份还可以包括任何相关文件,如日志或配置文件。
- 使用这种方式备份MEMORY表中的数据比较棘手,因为它们的内容不存储在磁盘上。(MySQL Enterprise Backup产品具有一个功能,在备份期间可以从MEMORY表中检索数据。)
- 备份只能在具有相同或类似硬件特性的其他机器上迁移。
- 在MySQL服务器未运行时可以执行备份。如果服务器正在运行,则需要进行适当的锁定,以防止服务器在备份过程中更改数据库内容。MySQL Enterprise Backup会自动为需要的表执行此锁定。
- 物理备份工具包括用于InnoDB或其他表的MySQL Enterprise Backup的mysqlbackup,或用于MyISAM表的文件系统级命令(如cp、scp、tar、rsync)。
- 恢复时:
- MySQL Enterprise Backup还原其备份的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表,可以使用程序来解决问题。
备份计划、压缩和加密
备份计划有助于自动化备份过程。对备份输出进行压缩可以减少空间要求,对输出进行加密可以提供更好的安全性,防止未经授权访问备份数据。MySQL本身不提供这些功能。MySQL Enterprise Backup产品可以压缩InnoDB备份,并可以使用文件系统工具实现备份输出的压缩或加密。还可以使用其他第三方解决方案。