一、实验总则

1.1 实验背景

随着电商业务的快速发展,用户量、订单量持续增长,对数据库的高可用性、可扩展性、安全性和性能提出了极高要求。某中型电商平台计划上线核心业务数据库,需依托阿里云RDS构建一套能够支撑高并发读请求、抵御硬件故障、保障数据安全、可灵活扩容的数据库架构,满足用户注册、商品查询、订单提交等核心业务场景的稳定运行,同时降低运维成本,无需专职DBA投入过多精力。

本实验整合前序RDS实例创建、备份恢复、高可用切换、读写分离、安全权限管理五大核心实验技能,模拟企业真实电商数据库部署全流程,完成从架构设计、部署实施、功能验证到性能优化的完整闭环,提升综合运维与实战能力。

1.2 实验目标

  1. 架构设计:掌握电商数据库高可用、可扩展架构的设计思路,理解RDS高可用版、只读实例、备份策略的协同作用。

  2. 部署实施:独立完成RDS主实例(高可用)、只读实例部署,配置备份恢复、读写分离、安全加固全流程。

  3. 功能验证:验证高可用故障切换、读写分离分流、数据备份恢复、权限管控的有效性,确保架构符合业务需求。

  4. 性能优化:识别并解决电商场景下的数据库性能瓶颈(如慢SQL),提升数据库并发处理能力。

  5. 综合应用:整合所有RDS核心技能,形成企业级电商数据库部署、运维的完整方案,具备独立落地能力。

1.3 实验前置条件

1.4 实验环境说明

组件名称 配置规格 用途
RDS主实例(高可用版) MySQL 8.0,2核4GB,ESSD PL0 50GB,跨可用区部署 承载电商核心业务读写请求,保障高可用
RDS只读实例 MySQL 8.0,2核4GB,ESSD PL0 50GB,同地域不同可用区 分流读请求,扩展读性能,缓解主库压力
ECS服务器 2核4GB,CentOS 8,同VPC内网连接RDS 客户端连接、数据导入、压测、性能监控
数据库工具 Navicat/DBeaver、MySQL命令行、sysbench 数据库操作、性能测试、故障模拟

二、实验需求(电商业务核心要求)

本次搭建的电商数据库需满足以下核心需求,贴合企业生产标准:

  1. 高可用性:采用跨可用区高可用架构,主库故障时能自动/手动切换,切换后业务无感,数据无丢失,恢复时间≤30秒。

  2. 可扩展性:支持读性能横向扩容,通过只读实例分流读请求,应对电商促销期高并发查询场景。

  3. 数据可靠性:配置自动备份+手动备份,支持时间点恢复(PITR),备份保留≥7天,可应对误删、数据损坏等场景。

  4. 安全合规:严格管控访问权限,仅允许内网ECS访问,开启SSL传输加密、存储加密,启用SQL审计,杜绝数据泄露、非法访问。

  5. 性能达标:无慢SQL,读请求响应时间≤100ms,写请求响应时间≤50ms,支持并发查询≥1000QPS。

三、实验实施步骤(分阶段落地)

阶段1:架构设计与RDS实例部署(1小时)

步骤1.1 架构规划(核心环节)

结合电商业务需求,设计RDS数据库架构,明确各组件作用:

步骤1.2 创建RDS高可用主实例

  1. 登录阿里云RDS控制台,点击“创建实例”,按以下配置创建主实例:

    • 计费方式:按量付费(实验结束可释放,控制成本)。

    • 地域/可用区:选择华东2(上海),可用区部署选择“多可用区”(如主:可用区F,备:可用区G)。

    • 数据库类型/版本:MySQL 8.0,系列选择“高可用版”。

    • 实例规格:2核4GB,存储类型:ESSD PL0,存储空间:50GB。

    • 管理员账号:dba_admin,密码:符合复杂度要求(大小写+数字+特殊字符),牢记密码。

  2. 点击“立即购买”,等待实例状态变为“运行中”(约3-5分钟)。

  3. 进入实例详情页,关闭外网地址,仅保留内网地址,记录内网连接地址和端口(3306)。

注意事项:实例创建时需选择跨可用区部署,否则无法实现高可用主备切换;避免使用root账号作为管理员账号,遵循企业安全规范;存储空间预留一定冗余,应对业务数据增长。

步骤1.3 创建只读实例

  1. 进入主实例详情页,左侧菜单栏点击“只读实例”,点击“创建只读实例”。

  2. 配置只读实例参数,与主实例匹配:

    • 计费方式:按量付费,地域/可用区:与主实例同地域,不同可用区(如可用区H)。

    • 实例规格:2核4GB,存储类型:ESSD PL0,存储空间:50GB(与主实例一致)。

  3. 确认配置,点击“立即购买”,等待只读实例状态变为“运行中”(约5-10分钟)。

  4. 查看只读实例“复制状态”,确保为“正常”,复制延迟≤1ms,验证数据同步正常。

注意事项:只读实例需与主实例同地域,确保数据同步速度;单个主实例最多挂载5个只读实例,本次实验创建1个即可满足需求;只读实例无需单独配置白名单,复用主实例白名单。

阶段2:安全配置与权限管理(30分钟)

步骤2.1 配置IP白名单(网络安全)

  1. 进入主实例详情页,左侧菜单“数据安全”→“白名单”,删除default组内默认IP(127.0.0.1)。

  2. 新建白名单分组“ecs_biz_group”,添加ECS服务器的私网IP,仅允许ECS访问RDS。

  3. 新建白名单分组“dba_group”,添加本地运维办公IP(仅用于实验调试,生产环境需严格管控)。

  4. 确认白名单配置生效,禁止添加0.0.0.0/0全网开放IP。

步骤2.2 创建精细化账号权限

  1. 进入主实例“账号管理”页面,点击“创建账号”,按角色创建3类账号:

    • DBA管理员账号(dba_admin):授予“只读实例管理”权限,无全局超管权限,用于运维管理。

    • 业务读写账号(biz_rw):仅授予电商核心数据库(后续创建)的SELECT、INSERT、UPDATE、DELETE权限,用于后端业务服务连接。

    • 数据分析账号(data_ro):仅授予电商核心数据库的SELECT权限,用于运营统计分析。

  2. 设置每个账号的复杂密码,记录账号信息,便于后续连接使用。

注意事项:账号权限遵循“最小够用”原则,业务账号不授予DROP、ALTER等高危权限;禁止共用账号,每个角色使用专属账号,便于审计追溯;密码需定期轮换,避免弱密码风险。

步骤2.3 开启数据加密(全链路安全)

  1. 进入主实例“数据安全”→“SSL加密”,点击“开启SSL”,选择证书有效期,确认生效。

  2. 下载SSL证书,保存至ECS服务器,用于后续SSL加密连接。

  3. 进入“存储加密”页面,确认开启存储加密(若创建实例时未开启,可通过KMS配置密钥开启)。

注意事项:开启SSL后,未配置证书的客户端无法连接RDS,需同步配置客户端SSL连接;存储加密仅对新写入数据生效,历史数据无需额外处理;证书到期前需提前更新,避免加密失效。

步骤2.4 开启SQL审计(操作追溯)

  1. 进入主实例“日志管理”→“SQL审计”,点击“开启SQL审计”。

  2. 配置审计日志存储周期为180天,选择“全量审计”模式,确认开启。

注意事项:SQL审计需占用一定存储空间,实验期间可正常开启,生产环境需按合规要求保留足够周期;审计日志与实例数据隔离,防止被篡改,便于安全事件追溯。

阶段3:备份策略配置与数据导入(30分钟)

步骤3.1 配置自动备份与手动备份

  1. 进入主实例“备份恢复”→“备份设置”,按以下配置:

    • 备份方式:物理备份(恢复速度快,适合生产)。

    • 备份周期:每日备份(勾选周一至周日),备份时间:凌晨2:00-3:00(业务低峰期)。

    • 日志备份保留:开启(必须开启,否则无法实现时间点恢复),保留天数:7天。

  2. 点击“确定”,备份策略生效;点击“创建备份”,手动创建1次全量备份,备注“电商数据库初始备份”,等待备份完成。

注意事项:备份时间需避开业务高峰期,避免占用主库资源导致业务卡顿;日志备份(binlog)禁止关闭,否则时间点恢复功能失效;手动备份可用于重大操作前的应急备份,降低风险。

步骤3.2 创建电商核心数据库与导入测试数据

  1. 通过ECS服务器,使用DBA管理员账号(dba_admin),通过SSL方式连接RDS主实例。

  2. 执行SQL语句,创建电商核心数据库及表(用户表、商品表、订单表):
    `-- 创建电商核心数据库
    CREATE DATABASE ecommerce_db DEFAULT CHARSET utf8mb4 COMMENT '电商核心数据库';

-- 切换数据库
USE ecommerce_db;

-- 创建用户表
CREATE TABLE user_info (
id INT PRIMARY KEY AUTO_INCREMENT COMMENT '用户ID',
username VARCHAR(50) NOT NULL COMMENT '用户名',
phone VARCHAR(20) UNIQUE COMMENT '手机号',
password VARCHAR(100) NOT NULL COMMENT '加密密码',
create_time DATETIME DEFAULT NOW() COMMENT '注册时间',
update_time DATETIME DEFAULT NOW() ON UPDATE NOW() COMMENT '更新时间'
) ENGINE=InnoDB COMMENT '电商用户表';

-- 创建商品表
CREATE TABLE product_info (
id INT PRIMARY KEY AUTO_INCREMENT COMMENT '商品ID',
product_name VARCHAR(100) NOT NULL COMMENT '商品名称',
price DECIMAL(10,2) NOT NULL COMMENT '商品价格',
stock INT NOT NULL DEFAULT 0 COMMENT '商品库存',
create_time DATETIME DEFAULT NOW() COMMENT '创建时间'
) ENGINE=InnoDB COMMENT '电商商品表';

-- 创建订单表
CREATE TABLE order_info (
id INT PRIMARY KEY AUTO_INCREMENT COMMENT '订单ID',
user_id INT NOT NULL COMMENT '用户ID',
product_id INT NOT NULL COMMENT '商品ID',
order_amount DECIMAL(10,2) NOT NULL COMMENT '订单金额',
order_status TINYINT NOT NULL DEFAULT 0 COMMENT '订单状态:0-待支付,1-已支付,2-已取消',
create_time DATETIME DEFAULT NOW() COMMENT '创建时间',
FOREIGN KEY (user_id) REFERENCES user_info(id),
FOREIGN KEY (product_id) REFERENCES product_info(id)
) ENGINE=InnoDB COMMENT '电商订单表';`

  1. 导入测试数据(可手动插入或使用SQL脚本导入),确保每个表有1000+条数据,模拟真实业务数据量:
    `-- 插入测试用户数据(示例)
    INSERT INTO user_info (username, phone, password)
    VALUES ('zhangsan', '13800138000', SHA2('Zhangsan123!', 256)),
    ('lisi', '13900139000', SHA2('Lisi123!', 256));

-- 插入测试商品数据(示例,可批量插入)
INSERT INTO product_info (product_name, price, stock)
VALUES ('手机', 3999.00, 1000),
('电脑', 5999.00, 500);

-- 插入测试订单数据(示例)
INSERT INTO order_info (user_id, product_id, order_amount, order_status)
VALUES (1, 1, 3999.00, 1),
(2, 2, 5999.00, 0);`

  1. 查询数据,确认数据库、表创建成功,数据导入正常;等待只读实例同步数据,验证主备数据一致性。

阶段4:读写分离配置与性能优化(40分钟)

步骤4.1 开启读写分离,分流读请求

  1. 进入主实例“读写分离”页面,点击“开启读写分离”。

  2. 配置读写分离参数:

    • 网络类型:专有网络(与ECS、主实例同VPC)。

    • 读权重分配:主实例权重设为0(避免读流量占用主库),只读实例权重设为100(所有读请求分流至只读实例)。

    • 延迟阈值:1秒(只读实例延迟超过1秒,读请求自动切回主库,保障数据实时性)。

  3. 点击“确定”,等待读写分离地址生效(约1分钟),记录读写分离内网地址和端口。

注意事项:读写分离地址为统一入口,业务只需修改连接地址为该地址,无需调整SQL语句;主实例权重设为0,确保读请求全部分流,最大化缓解主库压力;延迟阈值可根据业务实时性要求调整,电商订单查询场景建议设为1-2秒。

步骤4.2 性能优化(慢SQL排查与优化)

  1. 开启慢SQL日志:进入主实例“日志管理”→“慢查询日志”,点击“开启”,设置慢SQL阈值为1秒(执行时间超过1秒的SQL视为慢SQL)。

  2. 构造慢SQL场景:使用客户端执行无索引查询(如查询手机号为138开头的用户,未给phone字段建索引):
    -- 无索引慢查询 SELECT * FROM user_info WHERE phone LIKE '138%';

  3. 查看慢查询日志,定位慢SQL,使用RDS“性能洞察”功能,查看执行计划,识别全表扫描问题。

  4. 优化慢SQL:为phone字段创建索引,重新执行查询,对比优化前后响应时间:
    `-- 创建索引
    CREATE INDEX idx_user_phone ON user_info(phone);

-- 再次执行查询,验证优化效果
SELECT * FROM user_info WHERE phone LIKE '138%';`

  1. (可选)使用sysbench压测工具,模拟1000并发读请求,对比开启读写分离前后主库CPU、QPS变化,验证读性能扩展效果。

注意事项:慢SQL优化的核心是避免全表扫描,合理创建索引;索引并非越多越好,需根据业务查询场景创建,避免冗余索引;压测时避免大批量写入,防止只读实例复制延迟升高。

阶段5:高可用验证与故障模拟(30分钟)

步骤5.1 手动主备切换验证

  1. 进入主实例“服务可用性”页面,查看主备实例状态,确认均为“运行中”,复制状态“正常”。

  2. 保持ECS客户端连接(使用读写分离地址),执行查询、写入操作,确认业务正常。

  3. 点击“主备切换”,勾选“我已了解上述影响”,确认触发手动切换。

  4. 观察实例状态变化,等待切换完成(约10-30秒),切换后查看主备角色互换情况。

  5. 在客户端继续执行读写操作,验证业务无中断、数据无丢失,连接地址未变化(无感切换)。

步骤5.2 数据恢复验证

  1. 模拟数据误删:使用业务读写账号,删除order_info表中的部分订单数据:
    -- 模拟误删订单数据 DELETE FROM order_info WHERE order_status = 0;

  2. 执行时间点恢复:进入主实例“备份恢复”→“恢复实例”,选择“按时间点恢复”,选择误删前1分钟的时间点,恢复到新实例。

  3. 等待新实例创建完成,连接新实例,查询order_info表,确认误删数据已完整恢复。

  4. 恢复完成后,释放临时恢复实例,避免闲置计费。

注意事项:故障模拟仅在测试实例操作,严禁在生产环境随意执行删除、重启等高危操作;主备切换过程中会有秒级闪断,生产环境需在业务代码中配置数据库重连机制;恢复数据时建议恢复到新实例,避免覆盖原实例数据。

四、实验验证与验收标准

4.1 验证项目与验收标准

验证项目 验收标准
架构部署 主实例(跨可用区高可用)+ 只读实例部署完成,状态均为运行中;无外网地址,仅内网访问。
安全配置 白名单配置合规,账号权限隔离生效;SSL传输加密、存储加密开启;SQL审计正常记录操作。
备份恢复 自动备份策略配置正确,手动备份成功;时间点恢复可完整找回误删数据,数据无丢失。
读写分离 读写分离地址生效,写请求走主库,读请求分流至只读实例;分流后主库负载明显降低。
高可用切换 手动主备切换成功,角色互换正常;切换后业务无感,数据一致,连接地址不变。
性能优化 慢SQL排查并优化完成,优化后响应时间≤100ms;并发读请求QPS≥1000,性能达标。

4.2 交付物要求(实验报告核心内容)

  1. 架构设计图:绘制电商数据库架构图,标注主实例、只读实例、ECS、VPC等组件,说明各组件作用。

  2. 操作步骤文档:详细记录各阶段操作步骤,附关键配置截图(如实例创建、白名单配置、读写分离开启)。

  3. 验证报告:记录各验证项目的操作过程、结果,附监控截图(主备切换、读写分离负载、慢SQL优化前后对比)。

  4. 问题与解决方案:记录实验过程中遇到的问题(如连接失败、数据同步异常)及解决方法。

  5. 总结与优化建议:总结实验收获,结合电商业务场景,提出数据库架构的进一步优化建议(如增加只读实例、跨地域灾备)。

五、实验收尾与注意事项

5.1 实验收尾操作

  1. 清理测试数据:删除实验过程中插入的测试数据,保持实例环境整洁。

  2. 释放闲置资源:释放临时恢复实例、只读实例(若后续无需使用),避免产生不必要的计费。

  3. 保留核心配置:主实例可保留,用于后续学习或综合实训;关闭SQL审计、备份策略(若无需保留),降低成本。

5.2 实验注意事项(汇总)

六、实验总结

本次综合大实验,整合了阿里云RDS的高可用、可扩展、安全、性能四大核心能力,完整复现了企业级电商数据库的部署、运维、优化全流程。通过实验,不仅巩固了RDS实例创建、备份恢复、主备切换、读写分离、安全权限管理的基础操作,更理解了各组件的协同作用,掌握了电商场景下数据库架构的设计思路和优化方法。

电商业务的核心需求是高可用、高并发、数据安全,本次搭建的RDS架构通过跨可用区高可用部署保障业务连续性,通过只读实例实现读性能扩展,通过备份恢复和加密审计保障数据安全,通过慢SQL优化提升性能,完全满足企业生产标准。