如何在WordPress中使用Google Cloud SQL?
管理高流量的WordPress网站有很多挑战之一就是数据库。
数据库以使用高资源(如CPU,内存,IO)而闻名,因此将数据库单独托管是一个好主意。
一个典型的WordPress网站可能是以下这样的。
其中所有软件(如Nginx / Apache,PHP,WordPress,MySQL / MariaDB)都在同一台服务器上运行。
对于中小流量,将所有内容放在同一台服务器上是可以的,但是如果您正在优化每个层以实现最佳性能,那么您可能希望将数据库服务器解耦。
有两种可能的方式来实现这一点。
- 将数据库托管到不同的服务器上
- 使用Google Cloud Managed SQL
如果您准备花时间和精力来管理数据库,那么第一种选择是不错的。但是,如果您没有为此做好准备,那么您可以使用Google Cloud Managed SQL。
什么是Google Cloud SQL?
Cloud SQL是Google提供的一种高性能托管数据库服务(MySQL,PostgreSQL,SQL Server)。您无需担心安装、管理和性能优化。
您只需按需付费,让Google处理数据库基础架构。
Google Cloud SQL可以与App Engine、Compute Engine或任何其他托管/服务(包括本地工作站)集成。设置数据库复制、高可用性、自动故障转移不需要数据库技能,您可以使用GCP控制台进行配置。
准备好看看Cloud SQL如何与WordPress配合工作了吗?
场景 – 我有一个托管在Google Cloud(Compute Engine)上的WordPress网站,其中所有内容都在一台服务器上运行。我将按照以下步骤分离数据库。
- 创建Cloud SQL实例
- 从现有MySQL数据库导出数据
- 将数据导入Cloud SQL
- 允许从现有的WordPress服务器连接到Cloud SQL
- 更改WordPress配置以连接到Cloud SQL
创建Google Cloud SQL实例
- 转到Cloud SQL,然后单击“创建实例”
- 选择“MySQL”,然后点击“下一步”
- 输入实例信息
- 输入实例ID
- 选择数据库版本(始终选择最新版本更好)
- 选择区域和区域(我选择单个区域,可以随时进行高可用性设置)
- 点击“显示配置选项”以自定义VM实例类型、备份、维护等
提示:始终首选将SQL实例放在与现有WordPress服务器相同的区域。但是,如果您的WordPress不在Google Cloud上,请选择距离您服务器最近的位置。
- 保持默认选择的存储类型为SSD
- 默认选择了自动备份,二进制日志记录 – 如果需要,请进行更改
- 最好为补丁设置维护窗口和时间。
提示:始终选择对您的业务而言较不繁忙的日期和时间
- 配置完成后,点击“创建实例”
创建需要一些时间,完成后您将在列表中看到该实例。
从现有数据库中导出数据
- 登录正在运行MySQL的当前服务器
- 使用
mysqldump
命令导出数据库
mysqldump -u root -p [DATABASE_NAME] >/tmp/export.sql
有一些其他导出过程,如Google docs中所述。
导出完成后,您需要将SQL文件上传到某个地方的S3区域。
将数据导入到Cloud SQL
让我们创建一个数据库,并将其名称保持不变。
- 转到SQL instance
- 从左侧导航面板中选择数据库 >> 创建数据库
- 输入数据库名称并点击创建
现在,是时候导入数据了。
- 转到实例的概览并点击导入按钮
- 从存储桶中选择在导出过程中上传的SQL文件
- 选择目标下的数据库
- 点击导入
这将需要几秒钟的时间,并在完成后会得到确认。
配置Cloud SQL访问权限
访问控制非常重要,因为这是您定义谁可以连接到实例的地方。有两部分组成。
授权网络 – 添加应允许连接到Cloud SQL实例的IP地址
- 转到连接 >> 添加网络(如果WordPress托管在GCP之外,则为公共IP;如果托管在Google Cloud VM上,则为私有IP)并输入IP地址。
用户帐户 – 最好为WordPress数据库创建一个单独的用户帐户。
- 转到用户 >> 添加用户帐户
- 输入用户、密码和允许访问的主机名
提示:您可以将用户和密码保持不变,以便在WordPress中最小限度地更改配置。
将WordPress配置为Cloud SQL
最后一部分,您需要更改wp-config.php
以指向Cloud SQL。
像往常一样,备份wp-config.php文件
使用vi
编辑文件,并更新DB_HOST
的值为Cloud SQL的IP地址
从
/** MySQL 主机名 */ define('DB_HOST', 'localhost');
到
/** MySQL 主机名 */ define('DB_HOST', '104.155.153.82');
104.155.153.82是我的Cloud SQL实例IP,您可以在概览页面找到。
保存文件并重新启动WordPress服务器上的PHP和Nginx
注意:您也可以使用来自Compute Engine的MySQL客户端连接到Cloud SQL实例,地址为explained here。
干得好!您已经成功分离了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将是一个不错的选择。试试看它的效果。
不熟悉配置修改、服务器管理相关的内容吗?利用managed Google Cloud platform for WordPress。