## 7.1 备份和恢复类型

本节介绍不同类型备份的特征。

### 物理（原始）与逻辑备份

物理备份由存储数据库内容的目录和文件的原始副本组成。这种类型的备份适用于出现问题时需要快速恢复的大型重要数据库。

逻辑备份将信息保存为逻辑数据库结构 ([`创建数据库`](create-database.html),[`创建表`](create-table.html)声明）和内容（[`插入`](insert.html)语句或分隔文本文件）。这种类型的备份适用于少量数据，您可以在其中编辑数据值或表结构，或在不同的机器架构上重新创建数据。

物理备份方法具有以下特点：

-   备份由数据库目录和文件的精确副本组成。通常这是 MySQL 数据目录的全部或部分的副本。

-   物理备份方法比逻辑备份方法更快，因为它们只涉及文件复制而不进行转换。

-   输出比逻辑备份更紧凑。

-   因为备份速度和紧凑性对于繁忙的重要数据库很重要，所以 MySQL Enterprise Backup 产品执行物理备份。有关 MySQL Enterprise Backup 产品的概述，请参阅[第 30.2 节，“MySQL 企业备份概述”](mysql-enterprise-backup.html).

-   备份和恢复的粒度范围从整个数据目录的级别到单个文件的级别。这可能会或可能不会提供表级粒度，具体取决于存储引擎。例如，`InnoDB`每个表都可以在一个单独的文件中，或与其他表共享文件存储`InnoDB`表格；每个`MyISAM`表唯一地对应于一组文件。

-   除了数据库之外，备份还可以包括任何相关文件，例如日志或配置文件。

-   数据来自`记忆`以这种方式备份表很棘手，因为它们的内容不存储在磁盘上。（MySQL Enterprise Backup 产品具有一项功能，您可以从中检索数据`记忆`备份期间的表。）

-   备份只能移植到具有相同或相似硬件特征的其他机器上。

-   可以在 MySQL 服务器未运行时执行备份。如果服务器正在运行，则需要执行适当的锁定，以使服务器在备份期间不会更改数据库内容。MySQL Enterprise Backup 自动为需要它的表执行此锁定。

-   物理备份工具包括**mysql备份**MySQL 企业备份的`InnoDB`或任何其他表，或文件系统级命令（例如**cp**,**scp**,**柏油**,**rsync**） 为了`MyISAM`表。

-   对于还原：

    -   MySQL 企业备份恢复`InnoDB`以及它备份的其他表。

    -   [**数据库\_恢复**](mysql-cluster-programs-ndb-restore.html)恢复[`新开发银行`](mysql-cluster.html)表。

    -   在文件系统级别复制的文件可以使用文件系统命令复制回其原始位置。

    逻辑备份方法具有以下特点：

-   备份是通过查询 MySQL 服务器来获取数据库结构和内容信息来完成的。

-   备份比物理方法慢，因为服务器必须访问数据库信息并将其转换为逻辑格式。如果输出是在客户端写入的，服务器也必须将其发送到备份程序。

-   输出大于物理备份，尤其是以文本格式保存时。

-   备份和还原粒度可在服务器级别（所有数据库）、数据库级别（特定数据库中的所有表）或表级别使用。无论存储引擎如何，都是如此。

-   备份不包括日志或配置文件，或不属于数据库的其他与数据库相关的文件。

-   以逻辑格式存储的备份独立于机器且高度可移植。

-   逻辑备份是在 MySQL 服务器运行的情况下执行的。服务器未脱机。

-   逻辑备份工具包括[**mysql转储**](mysqldump.html)程序和[`选择...进入文件`](select.html)陈述。这些适用于任何存储引擎，甚至`记忆`.

-   要恢复逻辑备份，可以使用 SQL 格式的转储文件处理[**mysql**](mysql.html)客户。要加载分隔文本文件，请使用[`加载数据`](load-data.html)声明或[**mysql导入**](mysqlimport.html)客户。

### 在线与离线备份

在 MySQL 服务器运行时进行在线备份，以便可以从服务器获取数据库信息。离线备份在服务器停止时进行。这种区别也可以描述为“热”备份与“冷”备份；“热”备份是服务器保持运行但在您从外部访问数据库文件时锁定以防止修改数据的备份。

在线备份方式具有以下特点：

-   备份对其他客户端的干扰较小，它们可以在备份期间连接到 MySQL 服务器，并且可能能够根据需要执行的操作访问数据。

-   必须注意施加适当的锁定，以免发生会损害备份完整性的数据修改。MySQL Enterprise Backup 产品会自动执行此类锁定。

    离线备份方式具有以下特点：

-   由于服务器在备份期间不可用，客户端可能会受到不利影响。因此，此类备份通常取自可以脱机而不会损害可用性的副本。

-   备份过程更简单，因为不会受到客户端活动的干扰。

    在线和离线之间的类似区别适用于恢复操作，并且类似的特征也适用。但是，与在线备份相比，客户端更可能受到在线恢复的影响，因为恢复需要更强的锁定。在备份期间，客户端可能能够在备份时读取数据。恢复会修改数据而不仅仅是读取数据，因此必须防止客户端在恢复数据时访问数据。

### 本地与远程备份

本地备份是在 MySQL 服务器运行的同一主机上执行的，而远程备份是从不同的主机上完成的。对于某些类型的备份，即使输出是本地写入服务器上的，也可以从远程主机启动备份。主持人。

-   [**mysql转储**](mysqldump.html)可以连接到本地或远程服务器。对于 SQL 输出 (`创建`和[`插入`](insert.html)语句），本地或远程转储可以完成并在客户端生成输出。对于分隔文本输出（使用[`- 标签`](mysqldump.html#option_mysqldump_tab)选项），在服务器主机上创建数据文件。

-   [`选择...进入文件`](select-into.html)可以从本地或远程客户端主机启动，但输出文件是在服务器主机上创建的。

-   物理备份方法通常在 MySQL 服务器主机上本地启动，以便服务器可以脱机，尽管复制文件的目标可能是远程的。

### 快照备份

一些文件系统实现可以拍摄“快照”。它们在给定时间点提供文件系统的逻辑副本，而不需要整个文件系统的物理副本。（例如，实现可以使用写时复制技术，以便只复制在快照时间之后修改的部分文件系统。） MySQL 本身不提供获取文件系统快照的能力。它可通过第三方解决方案获得，例如 Veritas、LVM 或 ZFS。

### 完整备份与增量备份

完整备份包括 MySQL 服务器在给定时间点管理的所有数据。增量备份包括在给定时间跨度（从一个时间点到另一个时间点）内对数据所做的更改。MySQL 有不同的方法来执行完整备份，例如本节前面描述的那些。通过启用服务器的二进制日志来实现增量备份，服务器使用它来记录数据更改。

### 完全与时间点（增量）恢复

完全恢复从完全备份中恢复所有数据。这会将服务器实例恢复到进行备份时的状态。如果该状态不够最新，则可以在完全恢复之后恢复自完全备份以来所做的增量备份，以使服务器处于更新状态。

增量恢复是恢复在给定时间跨度内所做的更改。这也称为时间点恢复，因为它使服务器的状态在给定时间之前保持最新状态。时间点恢复基于二进制日志，通常在从备份文件完全恢复之后，将服务器恢复到备份时的状态。然后将写入二进制日志文件中的数据更改作为增量恢复应用，以重做数据修改并将服务器恢复到所需的时间点。

### 表维护

如果表损坏，数据完整性可能会受到影响。为了[`InnoDB`](innodb-storage-engine.html)表，这不是一个典型的问题。用于检查的程序[`MyISAM`](myisam-storage-engine.html)表并在发现问题时修复它们，请参阅[第 7.6 节，“MyISAM 表维护和崩溃恢复”](myisam-table-maintenance.html).

### 备份计划、压缩和加密

备份计划对于自动化备份过程很有价值。备份输出的压缩减少了空间需求，输出加密提供了更好的安全性，防止未经授权访问备份数据。MySQL 本身不提供这些功能。MySQL Enterprise Backup 产品可以压缩`InnoDB`备份，以及备份输出的压缩或加密可以使用文件系统实用程序来实现。其他第三方解决方案可能可用。
