MySQL Restore Dump

17 Mar 2025 | 6 分钟阅读

什么是 MySQL 转储?

mysqldump 客户端工具创建一个 SQL 语句集合,该集合可在执行逻辑备份后运行,以重新创建原始表数据和数据库对象定义。它会转储一个或多个 MySQL 数据库以进行备份或迁移到另一个 SQL 服务器。此外,mysqldump 命令还可以生成 XML、CSV 或其他分隔文本格式的输出。

为什么我们需要恢复 MySQL 转储?

  • 数据恢复:恢复丢失或损坏的数据是恢复 MySQL 转储的主要动机。如果数据因硬件故障或软件错误而意外丢失、修改或损坏,您可以使用备份转储将数据库恢复到先前已知良好的状态。
  • 灾难恢复:在发生服务器崩溃、数据中心中断或自然灾害等灾难性事件时,拥有 MySQL 转储可以让你在不同的服务器或基础设施上重建数据库。它对于灾难恢复规划过程至关重要。
  • 测试和开发:MySQL 转储对于构建复制生产数据库的测试和开发环境很有用。数据库副本允许开发人员对其进行操作,而不会影响生产数据。转储恢复对于确保开发、测试和生产环境之间的数据一致性至关重要。
  • 迁移和升级:在切换到新服务器、数据库版本或环境时,通常需要迁移数据。无论平台或配置如何变化,恢复 MySQL 转储都是在多个 MySQL 实例之间迁移数据的常用方法。
  • 时间点恢复:使用 MySQL 转储,您可以进行时间点恢复,这允许您将数据库恢复到特定时间点,而不仅仅是最新的备份。这有助于从数据损坏或意外修改中恢复。
  • 模式更改和回滚:恢复在对数据库模式进行重大更改(包括添加或删除表或列)之前的时间点的转储,可能是一种将模式恢复到问题发生之前状态的方法。
  • 数据归档:MySQL 转储可用于在不同时期创建数据快照,这在您需要归档历史数据或出于合规性或历史原因保留特定数据库状态记录时非常有用。
  • 数据验证和测试:MySQL 转储可用于验证数据的准确性、一致性和完整性。这对于确保数据库保持可靠并满足业务需求至关重要。
  • 安全和数据保护:定期创建备份可能对保护敏感数据至关重要。如果勒索软件攻击或其他安全事件损坏了您的数据或将其作为人质,恢复转储可以帮助您恢复数据。

逻辑备份和物理备份有什么区别?

数据库备份是存储的基于服务器的副本。备份可防止意外数据丢失。借助备份,可以轻松检索丢失的原始数据。数据库备份有两种类型:

  1. 物理备份
  2. 逻辑备份

物理备份

数据库通过物理文件备份或物理数据库备份进行存储和恢复。例如,各种数据文件、控制文件、归档重做日志等等。物理备份数据通常存储在磁盘、磁带、离线存储或云中。

逻辑备份

它包含从数据库中提取的逻辑数据。它包括表、函数、过程和视图。当用户希望将数据库副本移动到其他位置或恢复它时,这很有用。在防止数据丢失时,逻辑备份的安全性不如物理备份。它只提供结构信息。应每周执行一次完整的逻辑备份。使用逻辑备份可以增强物理备份。

方面逻辑备份物理备份
备份类型此类型的备份包含 SQL 语句和数据(文本格式)。此类型的备份包含数据库的二进制副本。
粒度保护逻辑数据,包括数据库模式、表和视图。创建整个数据库或特定文件、块和表空间的备份。
可移植性由于它是用人类可读的文本数据和 SQL 命令创建的,因此具有很高的可移植性。可以恢复到多个 MySQL 系统或版本。通常特定于 MySQL 版本和存储引擎,可移植性较差。在不同的 MySQL 安装之间迁移可能很困难。
存储效率总体而言,存储效率较低,因为数据以人类可读的格式呈现。由于它以二进制格式保存数据,因此存储效率非常高。
备份速度生成速度较慢,因为需要 SQL 操作来提取数据。生成速度较快,因为它只需要复制原始数据文件。
时间点恢复对时间点恢复的支持不足。允许恢复到备份创建时的点,但不能恢复到备份中的特定点。强大的时间点恢复支持,尤其是在同时备份二进制日志文件时。允许从备份恢复到特定事务或时间点。
表结构更改可以包含与表结构更改(例如,模式更改)相结合的数据。不包括在创建备份后对表结构所做的更改。
存储引擎独立性由于它独立于底层存储引擎,因此适用于混合存储引擎环境。取决于使用的存储引擎,这意味着如果同一数据库中使用了多个存储引擎,备份可能无法协同工作。
示例- 使用 mysqldump 创建 MySQL 数据库的 SQL 转储。- 替换 MySQL 数据目录的原始数据文件。对于 InnoDB 数据库引擎,使用 XtraBackup 等应用程序。

如何使用 'mysqldump' 命令创建 MySQL 转储?

要创建 MySQL 转储,请遵循以下步骤。

    1. 打开命令提示符或终端

    首先,在 Windows 操作系统上打开命令提示符或 PowerShell。

    2. 'mysqldump' 语法

    'mysqldump' 的基本语法如下。

    3. 运行 'mysqldump' 命令

    在终端中键入以下命令。

    输入此命令后,系统会提示您输入“myuser”。

    4. 验证

    转储过程完成后,终端中不应显示任何错误消息。您可以在工作目录中查找转储文件(在上面的示例中为 mydatabase_dump.sql)。它应该包含重建数据库及其内容的 SQL 命令。

    如何使用 'mysql' 命令恢复 MySQL 转储?

    恢复数据库

    参数包括:

    • -u [用户名]:将用户名连接到 MySQL 服务器。
    • -p:用于输入给定用户名的密码以连接到 MySQL 服务器。
    • [目标数据库名称]:识别您要从备份文件中加载数据的空数据库。
    • <:用于引用数据库恢复过程。
    • [dumpfilename.sql]:指定转储文件的路径。

    因此,要恢复 Sakila 数据库,请执行以下命令。

    要检查结果,请运行以下命令:

    输出

    MySQL Restore Dump

    使用 mysqldump,从转储文件中恢复 MySQL 中的每个数据库

    您可以使用 mysqldump 工具批量恢复服务器的所有数据库,而不仅仅是一个。要从转储文件中恢复所有 MySQL 数据库,请使用以下语法:

    在上面的命令中,alldatabases.sql 是包含服务器范围内的所有数据库备份的转储文件的路径。

    使用 mysqldump,从转储文件中恢复单个表

    有时可能需要从数据库中恢复特定的 MySQL 表,因为它被删除或其内容被覆盖。

    为了演示,我们使用 mysqldump 命令创建 Sakila 数据库中的 working_hours 表的备份。包含表备份的输出文件名为 backup_working_hours_table.sql。

    创建备份后,使用 DROP TABLE 语句删除 working_hours 表。

    要检查结果,请运行以下命令:

    输出

    MySQL Restore Dump

    现在,使用 mysql 命令将 working_hours 表备份恢复到 Sakila 数据库中:

    表将被导入到 Sakila 数据库中。

    MySQL Restore Dump