MySQL Backup: Backing Up Using mysqldump Tool

MySQL备份

摘要:在本教程中,您将学习如何使用mysqldump工具备份 MySQL 服务器中的一个或多个数据库。

mysqldump工具简介

mysqldump工具允许您通过生成一个包含 SQL 语句的文本文件来备份一个或多个数据库,该文本文件可以从头开始重新创建数据库。

mysqldump工具位于MySQL安装目录的root/bin目录下。

要访问mysqldump工具,请导航到root/bin文件夹并使用带有以下选项的mysqldump命令。

以下是常见的mysqldump选项:

add-drop-table

包括数据库中每个表的DROP TABLE语句。

add-locks

在每个INSERT语句之前和之后包括LOCK TABLESUNLOCK TABLES语句。它提高了转储文件的数据恢复速度。

all-databases

创建 MySQL 服务器上所有数据库的转储。

create-options

在每个表的CREATE TABLE语句中包括ENGINECHARSET选项。

databases

创建一个或多个数据库的转储。

disable-keys

指示 MySQL 在 MyISAM 表的数据加载期间禁用索引更新。 MySQL会在mysqldump完成加载数据后创建索引。此选项可提高恢复速度。

extended-insert

将单行INSERT语句合并为插入多个表行的单个语句;此选项还有助于加快数据恢复速度。

flush-logs

在转储数据之前刷新服务器日志。这与增量备份结合使用非常有用。

lock-tables

通过在转储期间锁定数据库中的所有表,确保转储是一致的快照。

no-data

创建一个转储文件,其中仅包含重新创建数据库结构所需的语句(仅CREATE DATABASECREATE TABLE …),而不包含数据(无INSERT语句)。

opt

mysqldump工具默认使用opt

opt选项启用以下选项: add-drop-tableadd-lockscreate-optionsdisable-keysextended-insertlock-tablesquickset-charset

要禁用此选项,请使用skip-opt 。如果您想跳过每个选项,请使用skip-<option_name> 。例如,要跳过disable-keys选项,请使用skip-disable-keys选项。

quick

指示 mysqldump 在写入文件之前不要在内存中缓冲表。此选项可加快大表的转储速度。

result-file

指定输出转储文件的路径。

set-charset

指定数据库的字符集,如latin1或utf8。

tables

创建一个或多个表的转储。

where

仅转储满足WHERE子句中的条件的行。

使用mysqldump工具对数据库进行备份

下面举一些使用mysqldump工具备份数据库的例子。

1)使用mysqldump工具对单个数据库进行备份

以下命令从 MySQL 服务器备份单个数据库:

mysqldump --user=<username> --password=<password> --result-file=<path_to_backup_file> --databases <database_name>
Code language: SQL (Structured Query Language) (sql)

在这个语法中:

  • <username>是将登录 MySQL 服务器的用户帐户。
  • <password><username>的密码。
  • <path_to_backup_file>是备份文件的路径。
  • --databases是一个选项,指示mysqldump工具创建指定数据库的转储。
  • <database_name>是您要备份的数据库的名称。

例如,以下命令将数据库classicmodels创建备份到文件c:\backup\classicmodels.sql

mysqldump --user=root --password=Supe!rPass1 --result-file=c:\backup\classicmodels.sql --databases classicmodels

2)使用mysqldump工具对多个数据库进行备份

要备份多个数据库,请在--database选项后指定数据库名称列表:

mysqldump --user=<username> --password=<password> --result-file=<path_to_backup_file> --databases <dbname1>[,<dbname2>, ...]Code language: HTML, XML (xml)

例如,以下命令对 classicmodel 和 world 数据库进行备份:

mysqldump --user=root --password=Supe!rPass1 --result-file=c:\backup\classicmodels_world.sql --databases classicmodels world

3)使用mysqldump工具对所有数据库进行备份

要备份 MySQL 服务器中的所有数据库,请使用 –all-database 选项:

mysqldump --user=<username> --password=<password> --result-file=<path_to_backup_file> --all-databasesCode language: HTML, XML (xml)

以下语句对当前 MySQL 服务器中的所有数据库进行备份:

mysqldump --user=root --password=Supe!rPass1 --result-file=c:\backup\all_databases.sql --all-databases

4)使用mysqldump工具对数据库中的特定表进行备份

要从数据库备份特定表,请使用以下命令:

mysqldump --user=<username> --password=<password> --result-file=<path_to_backup_file> <database_name> <table_name>Code language: HTML, XML (xml)

您还可以在数据库名称后指定多个表,一个接一个:

mysqldump --user=<username> --password=<password> --result-file=<path_to_backup_file> <database_name> <table1> <table2> <table3>Code language: HTML, XML (xml)

例如,要从classicmodels数据库备份employees表,请使用以下命令:

mysqldump --user=root --password=Supe!rPass1 --result-file=c:\backup\employees.sql classicmodels employees

5)使用mysqldump工具仅备份数据库结构

要仅备份数据库结构,请使用--no-data选项:

mysqldump --user=<username> --password=<password> --result-file=<path_to_backup_file> --no-data --databases <database_name>Code language: HTML, XML (xml)

该语句将生成一个转储文件,其中包含重新创建数据库结构所需的 SQL 语句。并且转储文件不包含INSERT语句。

例如,以下语句对数据库classicmodels的数据库结构进行备份:

mysqldump --user=root --password=Supe!rPass1 --result-file=c:\backup\classicmodels-ddl.sql --no-data --databases classicmodels

6)使用mysqldump工具仅对数据进行备份

要仅备份数据库数据,请使用--no-create-info选项:

mysqldump --user=<username> --password=<password> --result-file=<path_to_backup_file> –-no-create-info --databases <database_name>Code language: HTML, XML (xml)

该语句将生成一个转储文件,其中包含锁定表和向表中插入数据所需的 SQL 语句。它没有CREATE TABLE语句。

以下命令对数据库classicmodels的数据进行备份:

mysqldump –-user=root --password=Supe!rPass1 --result-file=c:\backup\classicmodels-data.sql –-no-create-info --databases classicmodels

在本教程中,您学习了如何使用mysqldump工具对 MySQL Server 中的数据库进行备份。

本教程有帮助吗?