管理高流量的 WordPress 网站会面临许多挑战,其中之一就是数据库。
众所周知,数据库是资源密集型的,例如CPU、内存和IO,因此我们建议单独托管它们。
典型的 WordPress 网站如下所示:
如果 Nginx/Apache、PHP、WordPress、MySQL/MariaDB 等所有软件都运行在同一台服务器上。
对于中小型流量来说,将所有内容都放在同一服务器上是没问题的,但如果您正在管理高流量网站并优化每一层以获得最佳性能,我们建议您将数据库服务器分开。
有两种方法可以做到这一点。
- 将数据库托管在另一台服务器上
- 使用 Google Cloud 托管 SQL
第一个选项是合适的。如果您准备好花时间和精力来管理数据库,那就很好。但是,如果您还没有准备好,您可以利用Google Cloud Managed SQL 。
什么是谷歌云SQL?
Cloud SQL 是 Google 提供的高性能托管数据库(MySQL、PostgreSQL、SQL Server)服务。您不必担心安装、管理或性能优化。
只需按使用量付费,让 Google 为您处理数据库基础设施。
Google Cloud SQL 可以与 App Engine、Compute Engine 或其他托管/服务(包括本地工作站)集成。设置数据库复制、高可用性和自动故障转移不需要数据库技能,并且可以使用 GCP Console 进行配置。
准备好了解 Cloud SQL 如何与 WordPress 配合使用了吗?
场景– 我有一个托管在 Google Cloud(计算引擎)上的 WordPress 网站,所有内容都在单个服务器上运行。隔离数据库:
- 创建 Cloud SQL 实例
- 从现有 MySQL 数据库导出数据
- 将数据导入 Cloud SQL
- 使您的现有 WordPress 服务器能够连接到 Cloud SQL
- 修改您的 WordPress 配置以连接到 Cloud SQL
创建 Google Cloud SQL 实例
- 转到Cloud SQL并点击创建实例。
- 选择“MySQL”和“下一步”
- 输入实例信息
- 请输入实例ID
- 选择数据库版本(最好始终是最新的)
- 选择您的区域和区域(我们将使用单个区域,您以后可以随时使用 HA)
- 单击显示配置选项可自定义 VM 实例类型、备份、维护等。
提示:我们始终建议将您的 SQL 实例放置在与现有 WordPress 服务器相同的区域中。不过,如果 WordPress 不在 Google Cloud 上,请选择距离您的服务器最近的位置。
- 将SSD设置为默认选择的存储类型。
- 默认选择自动备份、二进制日志-根据需要更改
- 我们建议定义维护窗口和修补时间。
提示:始终选择业务不太繁忙的日期和时间
- 完成所有设置后,单击“创建实例”。
创建将需要几秒钟,完成后,您将在列表中看到您的实例。
从现有数据库导出数据
- 登录当前运行MySQL的服务器。
- 使用
mysqldump
命令导出数据库
mysqldump -u root -p [DATABASE_NAME] >/tmp/export.sql
如Google Docs中所述,导出还有几个步骤。
导出完成后,您需要将 SQL 文件上传到Google Cloud Storage (S3) 空间中的某个位置。
将数据导入 Cloud SQL
创建一个数据库并将名称保留为现有名称。
- 转到SQL 实例
- 单击左侧导航面板中的数据库>> 创建数据库
- 输入数据库名称并点击创建
接下来,导入您的数据。
- 转到实例概述并单击导入按钮。
- 导出时选择上一步上传的存储桶中的SQL文件
- 选择目标下的数据库
- 点击“导入”
这将需要几秒钟。完成后将显示一条确认消息。
配置 Cloud SQL 访问
访问控制很重要,因为您可以在其中定义谁连接到您的实例。有两个部分。
网络授权– 添加允许连接到您的 Cloud SQL 实例的 IP 地址
- 转到“连接”>>“添加网络”(如果 WordPress 由 GCP 托管,则在“公共 IP”下;如果托管在 Google Cloud 虚拟机上,则在“私有 IP”下)并输入 IP 地址。
用户帐户– 您可能想为 WordPress 数据库创建一个单独的用户帐户。
- 转到“用户”>>添加用户帐户
- 输入您想要允许访问的用户、密码和主机名。
提示:为了最大限度地减少对 WordPress 的配置更改,您可以保留用户和密码不变。
将 WordPress 配置为 Cloud SQL
最后一部分需要更改wp-config.php
以指向 Cloud SQL。
与往常一样,备份您的 wp-config.php文件。
使用vi
编辑文件并将DB_HOST
值更新为您的 Cloud SQL IP 地址。
从
/** MySQL hostname */
define('DB_HOST', 'localhost');
到
/** MySQL hostname */
define('DB_HOST', '104.155.153.82');
104.155.153.82 是 Cloud SQL 实例的 IP,显示在概览页面上。
保存文件并在 WordPress 服务器上重新启动 PHP 和 Nginx。
注意:您还可以使用此处描述的Compute Engine 中的 MySQL 客户端连接到您的 Cloud SQL 实例。
干得好!您已成功隔离 WordPress 数据库。
请访问并看看它是如何工作的。如果您对这个问题感到满意,我们建议您停止 WordPress 服务器上的 MySQL 。
停止 MySQL
一旦您对 Google CloudSQL 感到满意,您就可以考虑停止在服务器上运行 MySQL。
如果您使用的是Ubuntu 16.x
service mysql stop
这将停止它,但当服务器重新启动时它会再次启动,因此您接下来需要禁用自动启动。
update-rc.d mysql disable
对于CentOS 6.x
service mysqld stop
禁用自动启动
chkconfig --del mysqld
虽然您可以卸载 MySQL,但我们建议保留它的安装状态,以防您在本地使用它。
在 Google Cloud 上管理 MySQL 非常容易,我没有遇到任何问题。
如果您需要将数据库与 WordPress 服务器分区,Google Cloud SQL 是一个不错的选择。尝试一下,看看它是如何工作的。
不熟悉配置更改和服务器管理?利用 WordPress 托管 Google Cloud 平台。