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