1.数据库架构设计实验

摘要:本实验详细介绍了在华为云平台上搭建WordPress网站并优化其性能的完整流程。实验首先通过创建安全组、VPC网络和云数据库GaussDB(for MySQL)实例构建基础环境,然后部署弹性云服务器ECS并安装配置WordPress应用。为进一步提升网站性能,实验还部署了GeminiDB Redis实例作为缓存服务,通过Redis Object Cache插件实现页面加速。实验最后验证了Redis缓存效果,并提供了完整的资源清理步骤。本实验涵盖了云数据库服务架构设计、多服务协同配置以及性能优化等关键知识点。

1.1实验介绍

1.1.1关于本实验

本实验将使用华为云搭建WordPress网站,通过配置弹性云服务器ECS、云数据库GaussDB(for Mysql)搭建WordPress 网站,通过部署GeminiDB实例对接WordPress提供Redis服务,实现WordPress网站的页面加速。
说明:本实验以“北京四”区域为例,学员可以根据实际情况选择相应区域进行实验。

1.1.2实验目的

理解云数据库服务架构中各云服务的使用。
掌握对云数据库服务可用性、统一管理等方面的设计方法。

1.1.3实验组网

在这里插入图片描述

1.1.4软件介绍

Redis(RemoteDictionary Server),即远程字典服务,是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API,是一个高性能的 key-value数据库。

1.2实验配置

1.2.1创建安全组

步骤1 登录华为云,在“华北-北京四”中选择“网络控制台>访问控制>安全组”,点击右上角“创建安全组”,
按照以下配置创建安全组sg-rds。
说明:该安全组供后续GaussDB数据库实例使用,需要放通3306端口。

  • 名称:sg-rds
  • 模板:快速添加规则
  • 入方向规则:数据库(3306)
    在这里插入图片描述
    步骤2 按照以下配置创建安全组sg-wordpress。
  • 说明:该安全组用于后续搭建WordPress的云服务器,需要使用通用Web服务器模板。
  • 名称:sg-wordpress
    在这里插入图片描述
    步骤3 按照以下配置创建安全组sg-redis。
  • 名称:sg-redis
  • 模板:快速添加规则
  • 入方向规则:Redis(6379)
    在这里插入图片描述

1.2.2创建VPC

步骤1 在服务列表中选择“虚拟私有云>我的VPC”,点击右上角“创建虚拟私有云”。
说明:本实验的后续资源将在此VPC中创建。
在这里插入图片描述
步骤2 按照以下配置创建虚拟私有云“vpc-db”。
基本信息:

  • 区域:华北-北京四
  • 名称:vpc-db
  • IPv4 网段:192.168.0.0/16
    默认子网:
  • 可用区:可用区1(本VPC以可用区1为例,学员可根据实际情况选择相应可用区,后续类似资源不再赘述
  • 名称:vpc-db-subnet
  • 子网IPv4网段:192.168.2.0/24
    在这里插入图片描述

1.2.3购买云数据库实例

步骤1 在“华北-北京四”服务列表中,选择“云数据库RDS”。
在这里插入图片描述
步骤2 点击“购买”。
说明:后续需要在该实例中创建数据库,对接WordPress应用。
在这里插入图片描述
步骤3 按照以下要求填写参数,并点击“立即购买”。

  • 计费模式:按需计费
  • 区域:华北-北京四
  • 数据库引I擎:MySQL
  • 数据库版本:8.0
  • 实例类型:主备
  • 存储类型:SSD云盘
  • 主可用区:可用区一
  • 备可用区:可用去七
  • 性能规格:独享型 2 vCPU |4 GB
  • 存储空间:40 GB
  • 实例名称:gaussdb-wordpress
  • 管理员密码:自定义
  • 虚拟私有云:vpc-db|vpc-db-subnet|自动分配IP地址
  • 安全组:sg-rds
  • 参数模板:Default-MySQL-8.0
  • 购买数量:1
  • 其他参数默认即可
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    步骤4 确认配置后点击“提交”,大约等待5-10分钟,实例创建完毕。
    在这里插入图片描述

1.2.4为WordPress创建数据库

步骤1 在实例管理界面,记录数据库“读写内网地址”(本实验为192.168.2.167),点击实例右侧“登录”按钮,登录数据库。
在这里插入图片描述
步骤2 在实例登录页面,输入用户名密码后点击“测试连接”,并勾选“记住密码”,测试通过后选择“登录”。
在这里插入图片描述
步骤3 在首页选择“新建数据库”(后续使用该数据库对接WordPress)。
在这里插入图片描述
步骤4 按以下配置填入数据库名称和字符集后单击“确定”。

  • 数据库名称:wordpress
  • 字符集:utf8mb4
    在这里插入图片描述

步骤 5 创建完成后可以在数据库列表查看刚创建的数据库wordpress。
在这里插入图片描述

1.2.5安装部署WordPress

步骤1 在服务列表中选择“弹性云服务器ECS”,点击右上角“购买弹性云服务器”。
说明:该云服务器用于部署WordPress。
在这里插入图片描述
步骤2 按以下配置选择相应参数,创建云服务器。

  • 计费模式:按需计费
  • 区域:华北-北京四
  • 可用区:随机分配
  • CPU架构:x86计算
  • 规格:通用计算增强型|2vCPUs|4GiB
  • 镜像:公共镜像|CentOS 7.6 64 bit(10 GB)
  • 主机安全:免费版安全基础防护
  • 系统盘:通用型SSD|40 GB
  • 网络:vpc-db|vpc-db-subnet|自动分配 IP 地址
  • 安全组:sg-wordpress
  • 弹性公网IP:现在购买
  • 线路:全动态BGP
  • 公网带宽:按流量计费
  • 带宽大小:10 Mbit/s
  • 云服务器名称:ecs-wordpress
  • 登录凭证:密码
  • 密码:用户自定义
    在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
步骤3 在弹性云服务器列表中点击操作栏的“远程登录”,登录esc-wordpress云主机。
在这里插入图片描述
步骤4 通过以下命令安装Apache相关组件。

[root@ecs-wordpress ~]# yum install httpd -y

步骤5 通过以下命令安装php相关组件,根据提示,输入“y”,完成软件安装。

[root@ecs-wordpress ~]# rpm -ivh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
Retrieving http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
warning: /var/tmp/rpm-tmp.sFYZ7T: Header V4 DSA/SHA1 Signature, key ID 00f97f56: NOKEY
Preparing...
Updating / installing...
1:remi-release-7.9-6.el7.remi        ################################# [100%]
################################# [100%]

[root@ecs-wordpress ~]# yum install --enablerepo=remi --enablerepo=remi-php72 php php-opcache php-devel php-mysqlnd php-gd php-redis

步骤6 使用wget命令下载WordPress安装包并解压。

[root@ecs-wordpress ~]# wget https://cloudservice-v3.obs.cn-east-3.myhuaweicloud.com/wordpress-5.2.3_zh.zip
--2025-04-09 21:20:50--  https://cloudservice-v3.obs.cn-east-3.myhuaweicloud.com/wordpress-5.2.3_zh.zip
Resolving cloudservice-v3.obs.cn-east-3.myhuaweicloud.com (cloudservice-v3.obs.cn-east-3.myhuaweicloud.com)... 121.36.239.144, 121.36.239.137, 121.36.239.130
Connecting to cloudservice-v3.obs.cn-east-3.myhuaweicloud.com (cloudservice-v3.obs.cn-east-3.myhuaweicloud.com)|121.36.239.144|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 12765467 (12M) [application/zip]
Saving to: ‘wordpress-5.2.3_zh.zip’

100%[====================================================================================================================>] 12,765,467  33.3MB/s   in 0.4s

2025-04-09 21:20:50 (33.3 MB/s) - ‘wordpress-5.2.3_zh.zip’ saved [12765467/12765467]

[root@ecs-wordpress ~]# unzip wordpress-5.2.3_zh.zip
[root@ecs-wordpress ~]# ls
wordpress  wordpress-5.2.3_zh.zip

步骤7 使用如下命令拷贝WordPress文件夹到Apache的工作目录“/var/www/html”。

[root@ecs-wordpress ~]# cp -rf wordpress /var/www/html/

步骤8 通过以下命令切换到httpd的工作目录,并复制配置文件。

[root@ecs-wordpress ~]# cd /var/www/html/wordpress      
[root@ecs-wordpress wordpress]# cp wp-config-sample.php wp-config.php

步骤9 使用vim命令修改wp-config.php文件,配置数据库参数对接之前创建的“wordpress”数据库。

[root@ecs-wordpress wordpress]# vim wp-config.php 

修改wp-config.php文件中数据库的配置参数,如下内容:

  • 数据库名称(DB_NAME): wordpress
  • 数据库用户名(DB_USER): root
  • 数据库密码(DB_PASSWORD):(学员自定义)
  • 数据库主机(DB_HOST): 192.168.2.167:3306(数据库实例的内网IP地址:端口号)
  • 文字编码(DB_CHARSET): utf8mb4
// ** MySQL 设置 - 具体信息来自您正在使用的主机 ** //
/** WordPress数据库的名称 */
define( 'DB_NAME', 'wordpress' );

/** MySQL数据库用户名 */
define( 'DB_USER', 'root' );

/** MySQL数据库密码 */
define( 'DB_PASSWORD', '自定义密码' );

/** MySQL主机 */
define( 'DB_HOST', '192.168.2.167:3306' );

/** 创建数据表时默认的文字编码 */
define( 'DB_CHARSET', 'utf8mb4' );

/** 数据库整理类型。如不确定请勿更改 */
define( 'DB_COLLATE', '' );

步骤10 并在当前文件(wp-config.php)末尾,添加如下内容,添加完成后,保存退出。

define("FS_METHOD", "direct");
define("FS_CHMOD_DIR", 0777);
define("FS_CHMOD_FILE", 0777);
# wp-config.php完整内容如下
[root@ecs-wordpress wordpress]# cat wp-config.php
<?php
/**
* WordPress基础配置文件。
*
* 这个文件被安装程序用于自动生成wp-config.php配置文件,
* 您可以不使用网站,您需要手动复制这个文件,
* 并重命名为“wp-config.php”,然后填入相关信息。
*
* 本文件包含以下配置选项:
*
* * MySQL设置
* * 密钥
* * 数据库表名前缀
* * ABSPATH
*
* @link https://codex.wordpress.org/zh-cn:%E7%BC%96%E8%BE%91_wp-config.php
*
 * @package WordPress
 */

// ** MySQL 设置 - 具体信息来自您正在使用的主机 ** //
/** WordPress数据库的名称 */
define( 'DB_NAME', 'wordpress' );

/** MySQL数据库用户名 */
define( 'DB_USER', 'root' );

/** MySQL数据库密码 */
define( 'DB_PASSWORD', '自定义密码' );

/** MySQL主机 */
define( 'DB_HOST', '192.168.2.167:3306' );

/** 创建数据表时默认的文字编码 */
define( 'DB_CHARSET', 'utf8mb4' );

/** 数据库整理类型。如不确定请勿更改 */
define( 'DB_COLLATE', '' );

/**#@+
 * 身份认证密钥与盐。
 *
 * 修改为任意独一无二的字串!
 * 或者直接访问{@link https://api.wordpress.org/secret-key/1.1/salt/ WordPress.org密钥生成服务}
 * 任何修改都会导致所有cookies失效,所有用户将必须重新登录。
 *
 * @since 2.6.0
 */
define( 'AUTH_KEY',         'put your unique phrase here' );
define( 'SECURE_AUTH_KEY',  'put your unique phrase here' );
define( 'LOGGED_IN_KEY',    'put your unique phrase here' );
define( 'NONCE_KEY',        'put your unique phrase here' );
define( 'AUTH_SALT',        'put your unique phrase here' );
define( 'SECURE_AUTH_SALT', 'put your unique phrase here' );
define( 'LOGGED_IN_SALT',   'put your unique phrase here' );
define( 'NONCE_SALT',       'put your unique phrase here' );
/**#@-*/

/**
 * WordPress数据表前缀。
 *
 * 如果您有在同一数据库内安装多个WordPress的需求,请为每个WordPress设置
 * 不同的数据表前缀。前缀名只能为数字、字母加下划线。
 */
$table_prefix = 'wp_';

/**
 * 开发者专用:WordPress调试模式。
 *
 * 将这个值改为true,WordPress将显示所有用于开发的提示。
 * 强烈建议插件开发者在开发环境中启用WP_DEBUG。
*
* 要获取其他能用于调试的信息,请访问Codex。
*
* @link https://codex.wordpress.org/Debugging_in_WordPress
*/
define('WP_DEBUG', false);

/* 好了!请不要再继续编辑。请保存本文件。使用愉快! */

/** WordPress目录的绝对路径。 */
if ( ! defined( 'ABSPATH' ) ) {
define( 'ABSPATH', dirname( __FILE__ ) . '/' );
}

/** 设置WordPress变量和包含文件。 */
require_once( ABSPATH . 'wp-settings.php' );

define("FS_METHOD", "direct");
define("FS_CHMOD_DIR", 0777);
define("FS_CHMOD_FILE", 0777);

[root@ecs-wordpress wordpress]#

步骤11 通过以下命令开启Apache服务并查看,配置文件权限,并启动服务。

[root@ecs-wordpress wordpress]# chmod -R 777 wp-content
[root@ecs-wordpress wordpress]# systemctl start httpd
[root@ecs-wordpress wordpress]# ps -ef | grep httpd
root      9492     1  0 21:31 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
apache    9493  9492  0 21:31 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
apache    9494  9492  0 21:31 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
apache    9495  9492  0 21:31 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
apache    9496  9492  0 21:31 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
apache    9497  9492  0 21:31 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
root      9536  8157  0 21:32 pts/0    00:00:00 grep --color=auto httpd
[root@ecs-wordpress wordpress]#

步骤12 打开本地PC浏览器,输入:ecs-wordpress云服务器的EIP/wordpress/index.php,登录网站。
(本实验是:124.70.34.67/wordpress/index.php)。登录后完成以下配置内容,点击“安装WordPress”

  • 站点标题:HCIP
  • 用户名:huawei(学员可自定义)
  • 密码:自定义
  • 电子邮件:自定义
    在这里插入图片描述
    在这里插入图片描述
    步骤13 安装完成后,点击“登录”,输入设置的账号和密码信息,登录网站。
    在这里插入图片描述

步骤14 输入刚设置的用户名和密码登录WordPress,如下图所示,证明WordPress搭建完成。
在这里插入图片描述
在这里插入图片描述
步骤15 在左侧页签中选择“插件>安装插件”。
在这里插入图片描述
步骤16 在右侧的搜索栏中输入“redis”,找到“Redis Object Cache”,点击“现在安装”。
说明:为后续对接Redis服务做好插件准备。

# 下载https://curl.se/ca/cacert.pem 将文件里的内容全部复制下来,然后替换 /var/www/html/wordpress/wp-includes/certificates/ca-bundle.crt  里面的内容保存,就可以了
# 将cacert.pem 上传到ecs,然后复制成ca-bundle.crt
[root@ecs-wordpress certificates]# cp cacert.pem /var/www/html/wordpress/wp-includes/certificates/ca-bundle.crt 

在这里插入图片描述
在这里插入图片描述

1.2.6 创建GeminiDB Redis服务

步骤1 在“华北-北京四”的服务列表中选择“云数据库GeminiDBRedis接口”,点击右上角“购买数据库实例”,按照以下配置购买数据库实例。
在这里插入图片描述
在这里插入图片描述
步骤2 点击右上角的“购买数据库实例”,并参照以下参数完成配置。
说明:本实验中使用该GaussDBRedis数据库实例为WordPress提供Redis服务。

  • 计费模式:按需计费
  • 区域:华北-北京四
  • 实例名称:redis-wordpress
  • 兼容接口:Redis
  • 部署模式:经典
  • 产品类型:标准型
  • 实例架构:主备版(或集群版)
  • 兼容版本:7.0
  • CPU类型:x86
  • 可用区:默认
  • 规格选择模式:自定义资源
  • 规格类型:标准型
  • 节点规格:1vcpu | 4 GB
  • 节点数量:2节点
  • 实例存储容量:8 GB
  • 虚拟私有云:vpc-db
  • 子网:vpc-db-subnet
  • 内网安全组:sg-redis
  • 数据库端口:默认(6379)
    -管理员密码:学员自定义
    在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
步骤3 查看并选中已购买的数据库实例,等待创建完成,创建过程预计需要5-10分钟。
在这里插入图片描述
步骤4 点击数据库名称,在“基本信息”页签中查看并记录用户名、负载均衡地址、端口号和所配置的登录密码。
在这里插入图片描述
步骤5 登录弹性云主机ecs-wordpress,通过以下命令修改网站的配置文件。

[root@ecs-wordpress ~]# cd /var/www/html/wordpress/
[root@ecs-wordpress wordpress]# vim wp-config.php 
  • 在该文件中增加以下内容用以对接Redis服务(请顺序地添加到关系型数据库配置的后边,否则非关系型数据库Redis连接可能不生效)。
/*redis config*/
define('WP_REDIS_HOST', '192.168.2.96');
define('WP_REDIS_PORT', '6379');
define('WP_REDIS_PASSWORD', '自定义密码');

在这里插入图片描述
说明:以上内容中“192.168.2.96”为上一步骤中Redis负载均衡服务地址,配置时请注意替换为实际服务地址。以上内容设置的数据库密码,配置时请注意替换为实际密码。
步骤6 配置完成后,保存退出。

1.2.7启用Redis

步骤1 返回Wordpress页面,浏览器页面按“F12”键,勾选“Disable cache”(停用缓存)选项,查看页面加载时间。刷新WordPress界面,待其完全加载完成,可以在页面下方看到DOMContentLoaded为“445 ms”左右。
先F12,勾选Disable cache,然后刷新页面看底部时间
在这里插入图片描述
步骤2 关闭浏览器的工具面板页面(按F12),在WordPress页面,选择“插件”,找到“RedisObject Cache-对象缓存”,点击“启用”。
在这里插入图片描述

步骤3 在“概览”页签下点击“启用对象缓存”(或:Enable Object Cache)。
在这里插入图片描述
步骤4 查看状态,显示“已连接”(或Connected),证明Redis服务已成功对接并启用。点击"刷新缓存"flush cach按钮,清除 cache 中缓存。
在这里插入图片描述

1.3实验验证

步骤1 登录Wordpress网页,并进入刚才的页面(例如安装插件页面),在浏览器中按“F12”键,勾选“Disablecache”(停用缓存)选项,查看启用Redis的页面加载时间。
请多刷新几次页面进行对比,当前加载时间约为“335 ms”,低于启用Redis服务之前的445s,通过启用Redis服务提升网站响应速度的需求(因实验页面内容量较少或网络波动等原因,通常实际效果并不明显,主要是熟悉相关场景的操作及配置),至此本实验配置完成。
在这里插入图片描述
观察redis使用现象
观察监控指标

在这里插入图片描述
在这里插入图片描述

1.4实验恢复

步骤1 删除 GeminiDB Redis实例。

  • 在服务列表中选择“云数据库GeminiDBRedis接口”,在列表中找到本实验创建的数据库实例,点击操作栏中的“更多>删除实例”

步骤2 删除GaussDB数据库实例。

  • 在服务列表中选择“云数据库GaussDB(forMySQL”,在列表中找到本实验创建的数据库实例,点击操作栏中的“更多>删除实例”。

步骤3 删除ECS。

  • 在服务列表中选择“云服务器ECS”,找到本实验创建的云服务器,点击操作栏中的“更多>删除”。
  • 在弹出的对话框中勾选EIP和数据盘选项,并删除ECS。

步骤4 删除安全组。

  • 在服务列表中选择“虚拟私有云VPC”,在“访问控制>安全组”中找到本实验创建的安全组,点击操作栏的“更多>删除”。

步骤5 删除VPC。

  • 在服务列表中选择“虚拟私有云VPC”,点击“子网”页签,在列表中找到本实验创建的子网,点击操作栏中的“删除”。
  • 点击“虚拟私有云”页签,找到本实验创建的VPC,点击操作栏中的“删除”。

4.5 思考题
问题:当我们想通过配置多个后端数据库实例来提升数据库服务的容量和性能,可以采用哪种方案?
参考答案:可以采用华为分布式数据库中间件服务(DDM),通过DDM可以做到数据库线性水平扩展,提升数据库处理能力,轻松应对高并发、实时交互业务场景

更多推荐