什么是mysqldump和我如何使用它?

以相对缓解导出和导入数据库内容

计算机屏幕上的一个mysql_query
盖蒂张照片

作为领先的自由之一数据库,MySQL是许多Web应用程序的热门选择。接触到互联网,您的应用程序暴露于恶意攻击。如果您的服务器遭到泄露,最多需要重新安装应用程序;在最糟糕的情况下,您可能会丢失您的数据。此外,您可能会在需要将数据库从一个服务器迁移到另一个服务器的情况。

什么是mysqldump用于?

MySQLDUMP工具您对服务器危及和迁移情况介绍。其基本功能是拍摄MySQL数据库并将其转储为文本文件。但不是任何文本文件;该文件是一组SQL语句。这些语句在执行时将数据库重建为执行转储时的精确状态。

使用mysqldump将数据库的导出创建为备份,或将数据库移动到新主机时。在任何一种情况下,文本文件都将被导入到MySQL数据库服务器中。它将在文件中执行所有SQL语句,该文件将数据库重建为其原始状态。这部分不使用mysqldump命令,但如果没有此实用程序也是不可能的。

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

  • 来自MySQL Enterprise的数据库是实现这些备份的好方法 - 如果您不介意企业价格标签。
  • 在跨操作系统时,复制数据库数据目录可能是棘手的,因为目的地将是不同的。
  • 导出到分隔的文本文件将为您提供内容,但您必须重新创建结构。
  • 您通常可以从MySQL工作台等GUI程序备份数据库。但这是一个手动过程;不是您可以脚本或包含在批处理作业中的内容。

安装mysqldump工具

对于窗户,检查我们的说明在Windows 7上安装MySQL(安装过程对于Windows 10是相同的)。在麦克斯,看看我们的指示在MacOS上安装MySQL 10.7(再次,旧但仍然适用)。用户的基于Ubuntu的Linux系统可以使用以下命令安装MySQL客户端和实用程序:

sudo apt安装mysql-client

提取MySQL转储

安装后,使用MySqldump获取数据库的完整备份。

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

以下是此命令中使用的标志的描述:

  • -H.:此标志是数据库主机。它可以是一个完整的主机名(例如,myhost.domain.com)或IP地址。如果在与MySQL Server上的同一主机上运行命令,请将此空白留空。
  • -U:您的用户名。
  • -P.:如果您正确保护了MySQL安装,您需要密码连接。执行命令时,带有没有参数的标志会提示您输入密码。有时,将密码直接提供为此标志的参数,例如,在备份脚本中是有用的。但在提示时,你不应该,因为如果有人获得了您的计算机访问权限,他们可以在命令历史记录中获取此密码。
  • > db_backup.sql.:这部分告诉MySqldump将其输出引导到文件。通常,该命令将所有内容输出到控制台,这意味着您将在屏幕上看到几个SQL语句。>符号将输出绑定到命名的文本文件中。如果此文件不存在,它会自动创建。

完成后,您将拥有.sql文件。这是包含SQL语句的文本文件。您可以在任何文本编辑器中打开它以检查内容。以下是从WordPress数据库的导出,该数据库显示如何将这些文件放在一起。

mysqldump文件的内容

该文件分为部分。第一个部分为WordPress注释设置了表格。第二部分重新创建这些表中的内容(在此示例中,注释记录)。当您重新导入MySQL转储时,命令通过文件工作,执行语句,并按方式重新构建数据库。

导入MySQL转储文件

在导入转储文件之前,您需要创建的数据库及其有效的用户名和密码。您还应拥有数据库的所有权限。您不需要授予权限,但它更容易授予它们。

了解更多信息数据库权限在您在数据库中更改安全角色之前。

要重新导入数据,请使用该数据登录MySQL服务器mysql.命令。type使用[数据库名称]在提示符下,替换数据库的名称。进入源[filename],并替换先前所采用的转储文件的名称。

完成后,将注意到消息列表,注意到SQL语句正在执行。留意错误,但如果您有合适的权限,那么您应该没问题。

将MySqldump文件导入新数据库

进程完成后,您将有一个原始数据库的副本。要验证数据库之间的相似性,请执行另一个转储,然后比较两个输出。使用文本编辑器或专用差异工具比较两个文件。

比较两个数据库的转储文件

这些文件之间存在两个差异,如右侧滚动条的顶部和底部的红线所代表。第一个是包含数据库名称的行,这是不同的,因为文件被不同地命名。第二个是转储文件的时间戳。这是不同的,因为第二个数据库在第一个之后重新创建。否则,文件完全相同,这意味着生成它们的数据库也是如此。

常见问题
  • 如何修复MySQLDUMP错误:使用锁定表时拒绝访问?

    询问您的数据库管理员授予锁定权限。如果这无法解决问题,请尝试运行相同的mysqldump命令添加--single-transaction标志,例如$ mysqldump --single-transaction -u用户-p dbname> backup.sql,

  • 你可以使用mysqldump的“where”子句?

    您可以在创建备份时使用where子句,该备份仅包括满足给定条件的行。例如,只能从带有大于100的ID列的行转储数据,您可以输入“mysqldump my_db_name my_table_name --where =”id> 100“> my_backup.sql”。

这个页有用吗?