MySQL备份:使用mysqldump工具备份

时间:2019-11-20 08:52:35  来源:igfitidea点击:

简介:在本教程中,您将学习如何使用mysqldump工具在MySQL Server中进行一个或多个数据库的备份。

mysqldump工具介绍

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

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

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

以下是常见的mysqldump选项:

add-drop-table

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

add-locks

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

all-databases

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

create-options

在每个表的CREATE TABLE语句中包括ENGINE和CHARSET选项。

databases

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

disable-keys

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

extended-insert

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

flush-logs

转储数据前先刷新服务器日志。
与增量备份一起使用时很有用。

lock-tables

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

no-data

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

opt

mysqldump工具默认使用opt。

opt选项启用以下选项:添加表,添加锁,创建选项,禁用键,扩展插入,锁表,快速和设置字符集。

要禁用此选项,请使用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>

使用以下语法:

  • <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>, ...]

例如,以下命令对classicmodels和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-databases

以下语句对当前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>

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

mysqldump --user=<username> --password=<password> --result-file=<path_to_backup_file> <database_name> <table1> <table2> <table3>

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

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>

该语句将生成一个转储文件,其中包含重新创建数据库结构所必需的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>

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

以下命令对数据库经典模型的数据进行备份:

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

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