# 7.2 数据库备份方法

本节总结了一些进行备份的一般方法。

# 使用 MySQL Enterprise Backup 进行热备份

MySQL企业版的客户可以使用MySQL 企业备份要做的产品身体的整个实例或选定的数据库、表或两者的备份。该产品包括以下功能增加的压缩的备份。备份物理数据库文件使恢复比逻辑技术(如mysql转储命令。InnoDB使用 a 复制表热备份机制。(理想情况下,InnoDB表应该代表大部分数据。)来自其他存储引擎的表使用热备份机制。有关 MySQL Enterprise Backup 产品的概述,请参阅第 30.2 节,“MySQL 企业备份概述”.

# 使用 mysqldump 进行备份

mysql转储程序可以进行备份。它可以备份各种表。(看第 7.4 节,“使用 mysqldump 进行备份”.)

为了InnoDB表,可以使用不锁定表执行联机备份--单笔交易选项mysql转储.看第 7.3.1 节,“建立备份策略”.

# 通过复制表文件进行备份

MyISAM 表可以通过复制表文件(*.MYD,*。我的我文件和相关联的*.sdi文件)。要获得一致的备份,请停止服务器或锁定并刷新相关表:

FLUSH TABLES tbl_list WITH READ LOCK;

你只需要一个读锁;这使其他客户端能够在您复制数据库目录中的文件时继续查询表。需要刷新以确保在开始备份之前将所有活动索引页写入磁盘。看第 13.3.6 节,“LOCK TABLES 和 UNLOCK TABLES 语句”, 和第 13.7.8.3 节,“FLUSH 语句”.

只要服务器不更新任何内容,您也可以简单地通过复制表文件来创建二进制备份。(但请注意,如果您的数据库包含表文件复制方法不起作用InnoDB表。此外,即使服务器没有主动更新数据,InnoDB可能仍然有修改过的数据缓存在内存中并且没有刷新到磁盘。)

有关此备份方法的示例,请参阅中的导出和导入示例第 13.2.5 节,“IMPORT TABLE 语句”.

# 制作分隔文本文件备份

要创建包含表数据的文本文件,您可以使用选择 * 进入文件 '*文件名*' 从 *tbl_name*.该文件是在 MySQL 服务器主机上创建的,而不是在客户端主机上创建的。对于此语句,输出文件不可能已经存在,因为允许覆盖文件会构成安全风险。看第 13.2.10 节,“SELECT 语句”.此方法适用于任何类型的数据文件,但只保存表数据,而不保存表结构。

创建文本数据文件的另一种方法(以及包含创建表备份表的语句)是使用mysql转储- 标签选项。看第 7.4.3 节,“使用 mysqldump 以分隔文本格式转储数据”.

要重新加载分隔文本数据文件,请使用加载数据要么mysql导入.

# 通过启用二进制日志进行增量备份

MySQL 支持使用二进制日志进行增量备份。二进制日志文件为您提供了在执行备份之后将更改复制到数据库所需的信息。因此,要让服务器恢复到某个时间点,必须在其上启用二进制日志记录,这是 MySQL 8.0 的默认设置;看第 5.4.4 节,“二进制日志”.

在您想要进行增量备份(包含自上次完整或增量备份以来发生的所有更改)的那一刻,您应该使用旋转二进制日志刷新日志.完成后,您需要将所有二进制日志复制到备份位置,范围从最后一次完整或增量备份到最后一个。这些二进制日志是增量备份;在恢复时,您按照中的说明应用它们第 7.5 节,“时间点(增量)恢复”.下次进行完整备份时,还应该使用轮换二进制日志刷新日志要么mysqldump --flush-logs.看第 4.5.4 节,“mysqldump - 数据库备份程序”.

# 使用副本进行备份

如果您在进行备份时遇到服务器性能问题,一种可以提供帮助的策略是设置复制并在副本而不是源上执行备份。看第 17.4.1 节,“使用复制进行备份”.

如果要备份副本,则应备份其连接元数据存储库和应用程序元数据存储库(请参阅第 17.2.4 节,“中继日志和复制元数据存储库”) 当您备份副本的数据库时,无论您选择哪种备份方法。恢复副本的数据后,始终需要此信息来恢复复制。如果您的副本正在复制加载数据声明,您还应该备份任何SQL_LOAD-*副本用于此目的的目录中存在的文件。副本需要这些文件来恢复任何中断的复制加载数据操作。这个目录的位置就是系统变量的值replica_load_tmpdir(来自 MySQL 8.0.26)或slave_load_tmpdir(在 MySQL 8.0.26 之前)。如果服务器未使用该变量集启动,则目录位置是临时目录系统变量。

# 恢复损坏的表

如果必须恢复MyISAM已损坏的表,请尝试使用维修台要么myisamchk -r第一的。这应该适用于所有情况的 99.9%。如果迈萨姆奇克失败,见第 7.6 节,“MyISAM 表维护和崩溃恢复”.

# 使用文件系统快照进行备份

如果您使用的是 Veritas 文件系统,则可以像这样进行备份:

  1. 从客户端程序,执行带读锁的刷新表.

  2. 从另一个shell,执行挂载 vxfs 快照.

  3. 从第一个客户端,执行解锁桌子.

  4. 从快照复制文件。

  5. 卸载快照。

    类似的快照功能可能在其他文件系统中可用,例如 LVM 或 ZFS。