logo

额外区块类型 (EBT) - 全新的布局构建器体验❗

额外区块类型 (EBT) - 样式化、可定制的区块类型:幻灯片、标签页、卡片、手风琴等更多类型。内置背景、DOM Box、JavaScript 插件的设置。立即体验布局构建的未来。

演示 EBT 模块 下载 EBT 模块

❗额外段落类型 (EPT) - 全新的 Paragraphs 体验

额外段落类型 (EPT) - 类似的基于 Paragraph 的模块集合。

演示 EPT 模块 滚动

滚动

如何创建和恢复 MySQL 数据库备份

12/10/2025, by Ivan

如果您将数据存储在 MySQL 数据库中并且不想丢失它们,那么您需要定期进行备份。本文将教您如何通过命令行快速创建 MySQL 数据库的备份并进行恢复。同时,您还可以将数据迁移到另一台服务器。

如何通过命令行使用 mysqldump 创建备份

如果您可以通过控制台(SSH)访问服务器,那么可以非常快速地进行数据库备份和恢复。这种方式能够快速生成数据库转储文件(dump——即数据库的文本版本),比使用 phpMyAdmin 或 Adminer 等工具更高效。数据库转储文件由 SQL 命令组成,用于完整复制数据库。创建转储的命令如下:

$ mysqldump --opt -u [uname] -p[pass] [dbname] > [backupfile.sql]

[uname] —— 数据库用户名(通常为 root)
[pass] —— 数据库密码。如果密码中没有特殊符号或空格,可以紧跟在 -p 后输入,例如 -proot-ppassword
[dbname] —— 数据库名称
[backupfile.sql] —— 备份文件的保存名称
[--opt] —— mysqldump 的可选参数,可以省略

例如,您有一个名为 DrupalDB 的数据库,用户名为 root,密码为 password,备份文件名为 backup.sql,那么命令如下:

$ mysqldump -u root -ppassword DrupalDB > backup.sql

如果您希望在输入命令后单独输入密码(例如密码包含空格或特殊符号),可以使用以下方式:

$ mysqldump -u root -p DrupalDB > backup.sql

您还可以只备份部分表,通过空格列出它们,例如 nodes 和 users:

$ mysqldump -u root -p DrupalDB nodes users > backup.sql

除了备份单个表外,还可以同时备份多个数据库,使用 --databases 参数并通过空格列出需要的数据库:

$ mysqldump -u root -p --databases DrupalDB Drupal7 Drupal8 > backup.sql

如果您需要迁移整个 MySQL 服务器,可以使用 --all-databases 参数备份所有数据库:

$ mysqldump -u root -p --all-databases > alldb_backup.sql

mysqldump 命令还有一些有用的选项:

--add-drop-table —— 在还原前删除已有表(在转储文件中为每个 CREATE TABLE 语句前添加 DROP TABLE)。

--no-data —— 仅复制数据库结构,不包含数据。例如,在备份 Drupal 缓存表时很有用,因为这些表可能包含数十万条无用记录。

--add-lock —— 添加 LOCK TABLES 和 UNLOCK TABLES 语句。注意:对于大型数据库,这可能会导致长时间锁表。

如何创建带压缩的 MySQL 数据库备份

这可能是最实用的方式,因为压缩后文件大小可减少 10–20 倍。对于大型数据库,压缩能显著节省空间。使用 gzip 命令实现压缩:

$ mysqldump -u root -p DrupalDB | gzip -9 > backup.sql.gz

如果您仅想解压文件(而非恢复数据库),使用以下命令:

$ gunzip backup.sql.gz

如何从备份恢复 MySQL 数据库

若要从转储文件恢复数据库,您需要一个空数据库。您可以使用 adminer 或 phpMyAdmin 删除现有表。如果使用了 --add-drop-table 参数,则无需手动删除表,系统会自动覆盖。恢复命令如下:

$ mysql -u root -p DrupalDB < backup.sql

如果备份文件经过压缩,使用以下命令:

gunzip < backup.sql.gz | mysql -u root -p DrupalDB

通过 Adminer 进行备份和恢复(PhpMyAdmin 替代方案)

Adminer 是 PhpMyAdmin 的替代工具,功能相似,但仅由一个小型 PHP 文件组成,使用极为方便:

http://www.adminer.org/

只需将该文件复制到网站根目录,然后通过浏览器访问:

http://您的网站/adminer-4.2.1.php(可以重命名为 adminer.php 以便使用)

登录后进入需要备份的数据库,例如 Drupal7。

drupal adminer

接着点击“导出(Dump)”以导出数据。您还可以选择不导出缓存表等不必要的数据:

adminer export

要将转储文件重新导入数据库,请使用“导入(Import)”选项卡:

adminer import