摘要:在本教程中,您将学习如何使用mysqldump
工具备份 MySQL 服务器中的一个或多个数据库。
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 表的数据加载期间禁用索引更新。 MySQL会在mysqldump完成加载数据后创建索引。此选项可提高恢复速度。
extended-insert
将单行INSERT
语句合并为插入多个表行的单个语句;此选项还有助于加快数据恢复速度。
flush-logs
在转储数据之前刷新服务器日志。这与增量备份结合使用非常有用。
lock-tables
通过在转储期间锁定数据库中的所有表,确保转储是一致的快照。
no-data
创建一个转储文件,其中仅包含重新创建数据库结构所需的语句(仅CREATE DATABASE
、 CREATE TABLE
…),而不包含数据(无INSERT
语句)。
opt
mysqldump
工具默认使用opt
。
opt
选项启用以下选项: add-drop-table
、 add-locks
、 create-options
、 disable-keys
、 extended-insert
、 lock-tables
、 quick
和set-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-databases
Code 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 中的数据库进行备份。