如何备份你的 WordPress 数据库

Avatar of Andy Adams
Andy Adams

DigitalOcean 为您旅程的每个阶段提供云产品。立即开始使用 200 美元的免费额度!

WordPress 在数据库中存储了大量的重要的内容。你可能知道你的实际内容存储在数据库中:博客文章、页面、自定义文章类型、评论等等。

但数据库存储的不仅仅是内容。更多。仅举几例

  • 插件设置
  • 主题设置
  • 小部件和侧边栏内容
  • 布局和模板(如果你使用的是高级拖放主题)
  • Cron 计划
  • 用户帐户
  • 菜单

天哪 - 你不能丢失这些东西!无论你的网站是大是小,是上线还是在开发中 - 备份适用于每个 WordPress 网站

如果你是一名 WordPress 设计师或开发人员,想想你为保存你编写的 PHP、HTML 或 CSS 代码付出了多少努力。你可能使用版本控制。至少,你不会依赖于单个代码副本 - 那太冒险了!因此,让我们对更重要的数据库也采取同样的谨慎态度。

WordPress 数据库备份 可以通过多种方式进行,从“高度技术性”到“极其简单”。你进行备份的方式(以及备份频率)将取决于你正在处理的网站的重要性。

让我们逐步了解一些可以备份 WordPress 数据库的方法。

如何使用 mysqldump 进行备份

使用命令行进行备份是一个手动过程,如果你不熟悉命令行,可能会有点令人望而生畏。但即使你害怕 shell,使用mysqldump进行备份也并不太难。如果你不熟悉它,请跳到下一节,了解如何使用 phpMyAdmin 进行备份。

  • 推荐用于:开发和非关键网站
  • 难度:有点难
  • 成本:免费

mysqldump 是一个恰如其分地命名为用于转储 MySQL 数据库的程序。这里没有惊喜。

使用默认设置,mysqldump 将生成一个 .sql 文件,它只是一个 SQL 命令列表 - CREATE TABLE、INSERT 等等。

如果你要运行mysqldump生成的 .sql 文件中的每个 SQL 命令,你最终将获得 WordPress 数据库的精确副本 - 这正是我们想要得到的!

要运行mysqldump,你需要访问服务器的命令行。

ssh [email protected]

一些软件可以帮助你通过 SSH 连接到你的服务器。这是Coda中该设置屏幕。

要运行mysqldump,你需要准备一些东西

  1. 你要备份的数据库的名称
  2. 具有访问该数据库权限的数据库用户
  3. 该用户的密码

如果你不记得这些,可以参考 WordPress 网站的wp-config.php文件。配置值将如下所示

/** The name of the database for WordPress */
define('DB_NAME', 'my_db_name');

/** MySQL database username */
define('DB_USER', 'my_db_user');

/** MySQL database password */
define('DB_PASSWORD', 'my_db_password');

有了我们的数据库信息,我们就可以运行mysqldump命令,如下所示

mysqldump -u my_db_user -p my_db_name > /path/to/save/backup_file.sql

如果你不熟悉命令行术语,“以连字符开头的字母”称为“标志”。标志为命令行实用程序(在本例中为mysqldump)提供它需要正确运行的答案。

-u标志告诉mysqldump使用my_db_user来备份我们的数据库。就我们而言,我们只需要确保my_db_user被允许读取我们尝试备份的数据库。

-p标志告诉mysqldumpmy_db_user有一个密码,我们将提供该密码。请注意,可以像这样在命令行上直接输入密码

mysqldump -u my_db_user -pmy_db_password my_db_name > /path/to/save/backup_file.sql

注意:以这种方式输入密码被认为是糟糕的安全实践,因为它使密码对不需要了解它的程序可见。我们向你展示这种-p标志的使用只是为了完整性,以便你知道这些零碎部分是如何工作的。

my_db_name之后的>称为“输出重定向符号”,这只是告诉mysqldump将备份数据发送到特定文件的一种花哨的方式。

为了更好地理解输出重定向,让我们看看如果我们没有在命令末尾添加>会发生什么。这是在没有输出重定向的情况下运行命令后打印到屏幕上的内容

-- MySQL dump 10.13  Distrib 5.5.40, for debian-linux-gnu (x86_64)
--
-- Host: localhost    Database: my_db_name
-- ------------------------------------------------------
-- Server version   5.5.40-0ubuntu0.14.04.1

/* ...snip a zillion SQL commands... */

/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;

-- Dump completed on 2014-12-31 20:41:58

哇!我们的整个数据库备份都打印到屏幕上了!

通过使用>运算符,我们可以告诉mysqldump将备份放在哪里,以便我们可以下载和使用它。在本例中,我们告诉mysqldump将我们的备份放在这里,文件名为/path/to/save/backup_file.sql

如果你的数据库恰好位于 localhost 之外(例如,如果你有一个单独的 MySQL 服务器托管你的数据库),你可以使用两个额外的标志来告诉mysqldump在哪里查找

  • -h your.dbserver.com告诉mysqldump使用 URL your.dbserver.com 连接。你也可以使用 IP 地址。
  • -P 1234告诉mysqldump使用端口 1234 - 显然,如果你的数据库服务器使用的是不同的端口,请切换此端口。

运行mysqldump后,你可以在你指定的位置找到备份文件(在我们的示例中为/path/to/save/backup_file.sql)。获取它的最简单方法是使用你喜欢的 FTP 客户端或使用来自(本地)命令行的安全复制。

scp [email protected]:backup_file.sql .

如何从 .sql 文件还原

一旦你有一个 .sql 文件,你就可以使用mysql命令行实用程序来还原你的数据库。

以下是你要使用的命令

mysql -u my_db_user -p my_db_name < /path/to/save/backup_file.sql

你会注意到这看起来非常像我们用来创建备份的mysqldump命令 - 有一些更改

  1. 第一个命令是mysql而不是mysqldump
  2. 输出重定向符号(>)已更改为输入重定向符号(<)。这告诉我们的命令将 .sql 文件作为mysql实用程序的输入读取。

这所做的只是按顺序重放 .sql 文件中编写的 SQL 命令,以便将数据库重新创建/还原到备份时所处的状态。

请注意,mysql可以与任何 .sql 文件一起使用 - 不仅限于你使用mysqldump生成的文件。

在本地,你也可以使用Sequel Pro等免费软件来处理你的数据库,包括运行 .sql。

如何使用 phpMyAdmin 进行备份

phpMyAdmin 是一种软件,允许你查看、编辑和(对我们的目的很重要)导出你的 MySQL 数据库。

  • 推荐用于:开发和非关键网站
  • 难度:不太难
  • 成本:免费

许多网络主机在常规托管计划中提供 phpMyAdmin 访问权限。如果你查看你的托管帐户的仪表板,你可能会找到一个指向 phpMyAdmin 登录屏幕的链接,如下所示

用户名和密码通常与你在wp-config.php文件中找到的组合相同(请参见上文)。

登录后,你可以在左侧选择要备份的数据库。

选择要备份的数据库

接下来,选择“导出”选项卡。

默认情况下,phpMyAdmin 使用“快速”选项,这对于大多数用例来说都是完美的。如果你想尝试一下,在“自定义”部分有很多可以调整的选项。

点击“执行”开始导出并下载你的数据库。

下载完成后,你将拥有 WordPress 数据库的完整备份。

注意:如果你有一个大型数据库或你的 phpMyAdmin 配置为限制下载允许的时间,你的备份文件可能不完整。

确定备份是否成功导出的最简单方法是打开它并滚动到最底部。最后几行应该有一些类似于此的 SQL 语句

--
-- AUTO_INCREMENT for table `wp_users`
--
ALTER TABLE `wp_users`
  MODIFY `ID` bigint(20) unsigned NOT NULL AUTO_INCREMENT,AUTO_INCREMENT=2;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;

如果你看到不同的内容,则你的备份可能不完整。如果你的导出超时,你可能会在备份文件的末尾看到一些错误消息。或者你的备份可能只是在任意点中断。

如果你的备份通过 phpMyAdmin 不完整,你可能需要使用“自定义”选项调整导出设置,或者询问你的主机是否可以增加 PHP 请求的时间限制。

如果你的主机不提供帮助,或者你只是不想处理 PHP 的怪癖,请继续阅读以了解一些不同的(更简单)的备份 WordPress 数据库的方法。

如何使用 phpMyAdmin 还原

既然你可以使用 phpMyAdmin 导出数据库,那么自然也可以导入数据库。要从数据库备份中恢复,只需导航到“导入”选项卡即可。

使用上传器上传你的备份文件(.sql 或 .sql.zip,都可以)并点击“Go”以恢复备份。

注意:如果你的数据库很大,或者你的 phpMyAdmin 配置了脚本执行时间限制,则你的恢复可能无法完成。如果遇到超时问题,可以尝试调整 phpMyAdmin 设置或使用其他方法恢复数据库(例如上一节提到的 mysql 命令行工具)。

如何通过虚拟主机备份

除了提供对 phpMyAdmin 的访问权限外,许多主机还提供 MySQL 数据库的定期备份服务。主机将在特定时间间隔(有时是每周、每天或每小时)对你的数据库进行“快照”。你的主机可能会提供基于 Web 的访问权限,以便下载数据库的快照。

  • 推荐用于:任何网站
  • 难度:简单
  • 成本:各不相同。一些主机是免费的,另一些则收取月费。

可用性因主机而异,也因托管计划而异。如果你使用的是每月费用低于 10 美元的共享托管计划,则可能不包含备份。

设置自动备份的成本和流程因主机而异。以下是一些常用的 WordPress 主机的更多详细信息

如何通过插件备份

备份 WordPress 网站最简单的方法之一是使用插件。

  • 推荐用于:任何网站
  • 难度:简单
  • 成本:各不相同,取决于你需要的功能。免费插件可以进行基本备份。付费插件具有便捷的功能。

有许多备份插件可用,但对于开发者来说,一个特别值得关注的是 WP DB Migrate,以及它的付费版本 WP DB Migrate Pro

对于简单的备份,免费版本已经足够了。以下是如何使用 WP DB Migrate 获取数据库副本的方法

  1. 使用 WordPress 内置的插件搜索和安装界面安装 WP DB Migrate 插件。安装后请务必激活!
  2. 在你的仪表盘上转到“工具” → “WP DB Migrate”。
  3. 选择“下载为 .zip”。如果你只是想下载数据库副本以进行安全保管,则可以删除查找/替换字段。
  4. 点击“迁移”,你的数据库副本将保存到你的电脑上。

如果你是一名开发者,值得一看 WP DB Migrate 的专业版。使用专业版,你可以同步两个 WordPress 网站的数据库。

例如:假设你正在处理一个实时网站,并且你需要一个数据库副本来进行开发工作。使用 WP Migrate DB Pro,你可以简单地使用插件的界面将实时版本同步到你的开发网站。如果你做了很多 WordPress 工作,它会改变你的开发方式。

另一个值得注意的备份插件是 iThemes 的 BackupBuddy。虽然 WP DB Migrate 具有许多开发者可以使用的功能,但 BackupBuddy 对于“普通” WordPress 用户来说非常出色。BackupBuddy 可以执行计划备份(就像你的虚拟主机一样)并将备份发送到各种位置,例如电子邮件、FTP、DropBox、AWS 等。

在 WordPress.org 代码库中有很多 备份插件,除了 BackupBuddy 和 WP DB Migrate Pro 之外,还有很多高级选项。

使用备份服务

最后,让我们看看如何使用备份服务备份 WordPress 数据库。

使用备份服务是保存网站备份的最简单方法。当然,它也是最昂贵的方法。

  • 推荐用于:实时/生产网站
  • 难度:最简单
  • 成本:每月费用,从 5 美元到 29 美元不等。

以下是它的工作原理

  1. 支付每月(或每年)费用。
  2. 向服务提供访问你网站的权限。对于某些服务,你需要安装插件。对于其他服务,你需要提供你主机登录凭据。
  3. 备份会定期自动进行并保存到云端。或者在 VaultPress 的情况下,备份会实时发生。

以下是一些 WordPress/MySQL 备份服务

备份服务需要最少的设置,可以持续备份你的网站,包括错误检查,并且(在 VaultPress 的情况下)可以为你的网站进行安全监控。

开始备份

现在你已经准备好备份你的 WordPress 数据库了。是否有你认为我们忽略的备份方法、插件或服务?请在评论中添加。