Skip to main content

什么是mysqldump以及如何使用它?

MySQL简单的备份恢复(mysqldump) [LinuxCast视频教程] (六月 2025)

MySQL简单的备份恢复(mysqldump) [LinuxCast视频教程] (六月 2025)
Anonim

作为领先的免费数据库之一,MySQL是各种Web应用程序的热门选择。由于暴露在互联网上,您的应用程序当然会受到恶意攻击。如果您的服务器遭到入侵,最多需要重新安装您的应用程序;在最坏的情况下,您可能会完全丢失数据。您最终还会遇到需要将数据库从一台服务器迁移到另一台服务器的情况。

mysqldump用于什么?

mysqldump的 工具可以满足这两种情况。它的基本功能是获取MySQL数据库并将其“转储”为文本文件。但不只是任何文本文件……文件是 一组SQL语句。这些语句在执行时会将数据库重新构建为执行转储时的精确状态。

所以你可以使用 mysqldump的 获取数据库的导出。这些可以用于备份,也可以用于将数据库移动到新主机。在任何一种情况下,你都会在某个时刻 进口 将文本文件重新导入MySQL数据库服务器。它将执行文件中的所有SQL语句,从而将数据库重建为其原始状态。这部分实际上并没有使用 mysqldump的 命令,但没有这个实用程序也是不可能的!

MySQL文档列出了其他备份方法,但这些方法都有各自的缺点:

  • 从MySQL Enterprise热插入数据库是实现这些备份的好方法……如果您不介意企业价格标签。
  • 如果您在操作系统之间移动,则复制数据库的数据目录可能会非常棘手,因为它们的目标将不同。
  • 导出到分隔的文本文件将为您提供内容,但您必须自己重新创建结构。你最好把它做得恰到好处……
  • 您通常可以从MySQL Workbench等GUI程序备份数据库。但这是一个手动过程,即您不能在批处理作业中编写脚本或包含的内容。

安装mysqldump工具

如果您对本文感兴趣,可能已经安装了MySQL。如果是这样,好消息 - 你已经拥有了 mysqldump的!如果没有,您只需以标准方式为您的操作系统安装MySQL。

对于Windows,请查看我们在Windows 7上安装MySQL的说明(安装过程仍然非常相似)。同样在macOS上,请参阅我们在macOS 10.7上安装MySQL的说明(同样,更旧,但仍然适用)。基于Ubuntu的Linux系统的用户可以使用以下命令安装MySQL客户端和实用程序:

sudo apt安装mysql-client

提取MySQL转储

安装完成后,即可使用 mysqldump的 获得数据库的完整备份。

mysqldump -h 您的数据库主机名称或IP -u 数据库用户名 -p 数据库名称> db_backup.sql

让我们稍微打破这个命令:

  • “-H”:这个标志是数据库 主办。它可以是完整的主机名(例如myhost.domain.com)或IP地址。如果您在与MySQL服务器相同的主机上运行它,也可以将其留空。
  • “-u”:如上所述,这是你的 用户名.
  • “-P”:如果你正确安全地安装了MySQL,你需要一个 密码 连接。执行该命令时,此标志不带参数将提示您输入密码。有时,直接提供密码作为此标志的参数很有用,例如在备份脚本中。但是在提示符下,您不应该这样做,因为如果有人获得了对您计算机的访问权限,他们可以在您的命令历史记录中获取此密码。
  • “> db_backup.sql”:这最后一部分是在讲述 mysqldump的 将其所有输出定向到文件中。通常,该命令会将所有内容直接输出到控制台,这意味着您会看到一堆SQL语句。但相反,*> *符号是将所有这些内容汇集到命名文本文件中的标志。如果此文件不存在,则会自动创建。

完成后,你将拥有一个.SQL文件。这只是一个包含SQL语句的文本文件。您可以在任何文本编辑器中打开它来检查内容。查看WordPress数据库的导出,您可以看到这些文件是如何组合在一起的。

该文件分为几个部分。在上图中,我们可以看到第一部分为WordPress注释设置表。然后,第二部分重新创建这些表中的内容(即注释记录)。当您再次重新导入MySQL转储时,该命令将通过该文件,执行语句并按原样重新构建数据库。那你怎么做的?让我们来看看。

导入MySQL转储文件

在您能够执行此操作之前,您将需要已创建的数据库,并且具有有效的用户名和密码。您还应该拥有数据库的所有权限。 (严格来说,你不需要 GRANT 权限,但更容易将它们全部授予。)您可以在本文中找到有关数据库权限的详细信息。

要重新导入数据,请按以下步骤操作:

  1. 用。登录MySQL服务器 MySQL的 命令。
  2. 类型 使用数据库名称 在提示符下,替换DB的相应名称。
  3. 输入 来源文件名,替换您之前使用的转储文件的名称。

完成后,您将看到一长串消息,指出SQL语句正在执行。留意错误,但如果你有正确的权限,你应该没事,因为它是一个空白的数据库。

完成此过程后,您将拥有原始数据库的副本。您可以通过执行另一次转储并比较两个输出来验证这一点。一个体面的文本编辑器将能够为您执行此操作,或者像下图中所示的专用* diff *工具:

这些文件之间只有两个不同之处,如右侧滚动条顶部和底部的红线所示。第一个是包含数据库名称的行,我们希望这是不同的,因为我们以不同的方式命名它们。第二个,一直到最后,是转储文件的时间戳。我们也期望这是不同的,因为我们在第一个数据库之后重新创建了第二个数据库。否则,文件完全相同,这意味着生成它们的数据库也是如此!