Skip to content

创建实例

  • 难度等级: 初级
  • 预计时间: 30分钟
  • 理解RDS MySQL创建流程的关键决策点
  • 掌握不可逆配置项的规划方法
  • 配置生产级RDS实例的最佳实践
  • 避免常见的配置错误
  • AWS账号具备RDS创建权限(rds:CreateDBInstance
  • VPC和子网已规划完成
  • 已确定数据库用途(生产/测试)
  • 已创建VPC和至少2个不同可用区的子网
  • 已规划数据库容量需求(存储空间、连接数)
  • 已确定备份和灾难恢复要求

对比项标准创建轻松创建
配置灵活性完全控制所有参数使用AWS推荐配置
适用场景生产环境快速测试
参数可见性所有参数可调整关键参数自动配置

最佳实践:始终使用标准创建

为什么

  • 轻松创建隐藏了公网访问、备份窗口等关键配置
  • 生产环境需要精确控制网络、安全和备份策略
  • 后期修改某些配置项会导致停机

创建方法选择


RDS for MySQL当前支持:

  • MySQL 8.4 - LTS版本,推荐生产环境
  • MySQL 8.0 - 主流版本,广泛使用

最佳实践

  • 生产环境:选择MySQL 8.4(长期支持版本)
  • 测试环境:可选择最新的8.0次版本进行兼容性测试
  • 避免:不要选择即将进入扩展支持期的版本(如5.7已进入扩展支持,需额外付费)

为什么:LTS版本获得更长时间的标准支持,避免频繁升级和额外费用。

引擎版本选择界面


  • 生产:启用Multi-AZ,推荐配置
  • 开发/测试:单AZ部署,成本优化
  • 免费套餐:受限于t3.micro/t4g.micro实例

最佳实践决策树

%%{init: {'theme':'base', 'themeVariables': {'fontSize':'14px'}}}%%
graph LR
    A[确定环境类型] --> B{生产环境?}
    B -->|是| C[生产模板<br/>强制Multi-AZ]
    B -->|否| D{需要高可用?}
    D -->|是| C
    D -->|否| E[开发/测试模板<br/>单AZ节省成本]

为什么生产模板强制Multi-AZ

  • 主备同步复制,数据零丢失(RPO=0)
  • 自动故障转移(1-2分钟)
  • 可用性SLA更高

注意:免费套餐仅用于学习,存储限制20GB,不适合任何生产场景。

模板选择界面


命名规范

  • 使用小写字母、数字、连字符
  • 长度:1-63字符
  • 同区域内唯一

推荐命名方式

<环境>-<应用>-<数据库类型>-<序号>
示例: prod-webapp-mysql-01

Master Username

  • 默认admin,可自定义
  • 限制:1-16字符,必须以字母开头,不能是MySQL保留关键字(如SELECTWHERE等)

Master Password

  • 长度:8-41字符
  • 不允许/"@字符
  • 最佳实践:使用AWS Secrets Manager自动生成和管理

为什么使用Secrets Manager

  • 自动密码轮换
  • 加密存储
  • 审计日志
  • 避免硬编码密码

自我管理

常规的使用用户吗和密码的凭据方式。

凭证配置界面


实例族特点

实例族特点适用场景
t3/t4g突发性能,可积累CPU积分开发测试、低负载应用
m6g/m7g平衡型,Graviton处理器通用生产负载(推荐)
r6g/r7g内存优化大内存需求、缓存密集型

最佳实践推荐

开发环境:db.t4g.micro(2 vCPU, 1GB)
测试环境:db.m6g.large(2 vCPU, 8GB)
生产环境:db.m6g.xlarge起步(4 vCPU, 16GB)

为什么推荐Graviton实例

  • 性价比高20%
  • 能耗更低
  • 性能与x86实例相当

t系列注意事项

  • CPU积分耗尽后性能骤降至基线(10-20%)
  • 不适合持续高负载
  • 通过CloudWatch监控CPUCreditBalance指标

实例类型选择

存储类型

类型IOPS延迟适用场景价格
gp33,000基线(可扩展至16,000)毫秒级通用(推荐)
gp2基于容量(3 IOPS/GB)毫秒级遗留系统
io2最高240,000亚毫秒级极高I/O需求

最佳实践

  • 默认选择gp3:性价比最优,性能可独立扩展
  • 分配存储空间原则
    • 初始容量 = 预估数据量 × 1.5(预留增长空间)
    • 最小20GB,最大64TB
    • 考虑备份和临时表空间

为什么gp3优于gp2

  • IOPS和吞吐量可独立调整
  • 小容量下IOPS更高(gp2需300GB才达到3000 IOPS)
  • 成本更低(相同性能下节省20%)

存储自动扩展

  • 推荐启用(适用于Single-AZ和Multi-AZ DB Instance)
  • 阈值:剩余空间<10%时触发
  • 最大扩展限制:设置合理上限防止成本失控
  • 重要:Multi-AZ DB Cluster不支持自动扩展,仅能手动修改存储容量

存储配置界面


DB Subnet Group

  • 必须跨至少2个可用区
  • Multi-AZ部署会在不同AZ创建主备实例

最佳实践

  • 使用专用的数据库子网组
  • 子网应为私有子网(无IGW路由)
  • 每个AZ至少一个子网

为什么使用私有子网

  • 减少攻击面
  • 符合安全合规要求
  • 通过NAT网关访问外部服务(如S3)

Public Access设置

  • Yes:分配公网IP,允许互联网访问
  • No:仅VPC内访问

最佳实践:创建时务必规划准确,避免后期通过CLI修改增加复杂度。

最佳实践

  • 生产环境:必须选择No
  • 开发环境:如需外部访问,配置跳板机或VPN

为什么禁用公网访问

  • 防止暴力破解攻击
  • 满足PCI-DSS、HIPAA合规要求
  • 注意:控制台创建后无法修改此选项,必须在创建时决定

安全组配置

入站规则示例:
类型: MySQL/Aurora (3306)
源: sg-应用层安全组ID
描述: Allow app servers

网络配置界面


功能:实时OS级指标(每秒采集)

收集指标

  • CPU使用率(细分到内核)
  • 内存使用情况
  • 磁盘I/O
  • 网络流量

最佳实践

  • 生产环境:启用,粒度60秒
  • 创建IAM角色:rds-monitoring-role(自动创建)

成本:根据日志量计费(通常<$1/月/实例)

功能

  • 数据库负载可视化
  • Top SQL识别
  • 等待事件分析

免费额度:7天历史数据 付费选项:保留长期历史(2年)

最佳实践

  • 所有环境均启用(免费功能)
  • 生产环境考虑付费长期保留

可导出至CloudWatch Logs:

  • 错误日志(推荐启用)
  • 慢查询日志(推荐启用)
  • 常规日志(仅调试时启用,影响性能)
  • 审计日志(需审计时启用)

最佳实践

生产环境启用:
- Error log
- Slow query log(配合long_query_time参数)
避免启用:
- General log(性能开销大)

监控配置界面


工作原理

  • 在另一AZ创建同步备库
  • 自动故障转移(60-120秒)
  • 备库不可用于读流量

成本:双倍实例费用(存储费用不变)

最佳实践

  • 生产环境:必须启用
  • 测试环境:可禁用降低成本
  • 使用Read Replica分担读负载(另计费)

自动备份

  • 保留期:1-35天(推荐生产环境7-14天)
  • 备份窗口:选择低峰时段(如凌晨2-4点)
  • 零数据丢失(基于事务日志)

备份副本

  • 自动复制到其他区域(跨区域灾备)
  • 仅限目标区域没有自动备份时

最佳实践配置

生产环境:
备份保留期: 14天
备份窗口: 02:00-04:00(UTC+8则为10:00-12:00 UTC)
启用跨区域复制: 是(选择地理远离的区域)
开发环境:
备份保留期: 1天
备份窗口: 默认

为什么14天保留期

  • 满足常见合规要求
  • 足够时间发现数据异常
  • 平衡存储成本

作用:控制数据库引擎行为(如缓存大小、连接数)

关键参数推荐

参数默认值(RDS)推荐值说明
innodb_buffer_pool_size{DBInstanceClassMemory*3/4}保持默认InnoDB缓存,自动按实例75%内存配置
max_connectionsLEAST({DBInstanceClassMemory/12582880},16000)保持默认或根据应用调整最大连接数,基于实例内存自动计算
slow_query_log0(关闭)1(开启)慢查询日志,用于性能优化
long_query_time10秒1-2秒慢查询阈值

最佳实践

  1. 创建自定义参数组(复制默认组)
  2. 仅修改必要参数
  3. 参数组名称示例:prod-mysql84-params
  4. 修改后需重启生效的参数会标注

为什么不修改innodb_buffer_pool_size

  • RDS默认公式已优化(75%内存)
  • 留25%给OS和监控进程
  • 手动设置可能导致OOM

常见错误

  • 设置innodb_buffer_pool_size超过可用内存 → 实例崩溃
  • max_connections过高 → 内存耗尽
  • 启用general_log → 性能下降50%+

用途:启用额外功能插件

MySQL支持的选项

  • MARIADB_AUDIT_PLUGIN(审计)
  • MEMCACHED(内存缓存接口,8.0后不推荐)

最佳实践

  • 除非特定需求,使用默认选项组
  • 审计需求启用MARIADB_AUDIT_PLUGIN

参数组配置


10. 扩展支持(RDS Extended Support)

Section titled “10. 扩展支持(RDS Extended Support)”

MySQL社区版本停止维护后,AWS提供的额外支持服务。

费用

  • Year 1:每vCPU每小时额外费用
  • Year 2:费用翻倍
  • Year 3:费用再翻倍

最佳实践

  • 避免依赖Extended Support
  • 在社区支持期内完成升级
  • 示例:MySQL 5.7已进入Extended Support(2024年2月后)

为什么不推荐

  • 成本显著增加(可能翻倍)
  • 不包含新功能
  • 安全补丁有限

规划建议

MySQL 8.0社区支持至2026年4月
-> 2025年Q4开始规划升级至8.4
-> 2026年Q1完成测试
-> 2026年Q2生产环境升级

选项

  • 使用AWS管理的密钥(aws/rds
  • 使用客户管理的CMK(KMS)

最佳实践

  • 生产环境:必须启用加密
  • 使用客户管理的CMK(便于密钥轮换和审计)
  • 测试环境:可不加密节省成本

为什么必须加密

  • 合规要求(PCI-DSS、HIPAA、GDPR)
  • 备份自动加密
  • 读副本也会加密

加密后影响

  • 性能影响<5%
  • 无法创建未加密的读副本
  • 快照恢复必须加密

默认行为

  • MySQL 8.0+默认支持SSL/TLS连接
  • RDS不强制SSL(客户端可选择不加密连接)

最佳实践

  • 应用端配置强制SSL:?sslMode=REQUIRED
  • 下载RDS CA证书验证服务器身份

注意:RDS MySQL无法通过参数强制SSL(require_secure_transport不可修改)


自动次版本升级

  • 推荐启用(安全补丁)
  • 仅在维护窗口执行

维护窗口设置

生产环境:周日 03:00-04:00 UTC(避开业务高峰)
测试环境:默认(随机分配)

为什么选择周日凌晨

  • 业务量最低
  • 有足够时间处理升级问题
  • 避开工作日

注意

  • 次版本升级需要重启(停机1-3分钟)
  • Multi-AZ会先升级备库,故障转移后升级主库

功能:防止误删除实例

最佳实践

  • 生产环境:必须启用
  • 测试环境:可选

删除流程

  1. 禁用删除保护
  2. 执行删除操作
  3. 选择是否创建最终快照

为什么需要最终快照

  • 最后的恢复机会
  • 快照可保留至删除
  • 推荐快照命名:final-<实例ID>-<时间戳>

引擎配置:
引擎: MySQL
版本: 8.4.x(LTS)
实例配置:
模板: Production
实例类型: db.m6g.xlarge(4 vCPU, 16GB)
Multi-AZ: 启用
存储:
类型: gp3
分配: 100GB
自动扩展: 启用 #非集群可用
最大容量: 500GB
网络:
VPC: vpc-prod
子网组: db-subnet-group-prod(私有子网)
公网访问:
安全组: sg-db-prod(仅允许应用层访问)
备份:
自动备份: 启用
保留期: 14天
备份窗口: 02:00-04:00 UTC
跨区域复制: 启用(备份至异地区域)
监控:
Enhanced Monitoring: 启用(60秒)
Performance Insights: 启用
日志导出: Error log, Slow query log
安全:
静态加密: 启用(使用KMS)
删除保护: 启用
参数组:
自定义参数组: prod-mysql84-params
slow_query_log: 1
long_query_time: 2
维护:
自动次版本升级: 启用
维护窗口: 周日 03:00-04:00 UTC

# 从应用服务器测试连接
mysql -h <endpoint> -P 3306 -u admin -p
# 验证SSL连接
mysql -h <endpoint> -u admin -p --ssl-mode=REQUIRED
# 检查数据库版本
SELECT VERSION();
# 验证参数配置
SHOW VARIABLES LIKE 'innodb_buffer_pool_size';
SHOW VARIABLES LIKE 'max_connections';
  • CloudWatch指标正常采集
  • Performance Insights显示数据
  • 日志正常写入CloudWatch Logs
  • 检查自动备份是否创建
  • 测试手动快照功能
  • 验证备份窗口设置

Q: 创建后能否更改公网访问设置?
A: 控制台Modify界面不提供此选项。理论上可通过CLI的modify-db-instance --publicly-accessible修改,但需确保子网组满足要求(公有子网需有IGW路由)。强烈建议创建时就规划准确,避免后期修改的复杂性。

Q: 能否从未加密实例迁移到加密实例?
A: 不能直接修改。需要创建加密快照,从快照恢复新实例。

Q: t3实例CPU积分耗尽怎么办?
A: 升级到m6g等不限积分的实例类型,或减少负载。

Q: Multi-AZ会增加延迟吗?
A: 写入延迟增加<10ms(同步复制),读操作无影响。备库不提供读服务。

Q: 参数组修改后何时生效?
A: 静态参数需重启;动态参数立即生效。Parameter Group页面会标注。

Q: 如何选择备份窗口?
A: 选择业务低峰期,避开备份时I/O会略微增加的时段。

Q: gp3的3000 IOPS不够用怎么办?
A: 可在创建后修改,独立调整IOPS至16,000(无需改存储类型)。

Q: 为什么不推荐MySQL 5.7?
A: 已进入Extended Support,每月成本显著增加。应升级至8.0或8.4。



文档验证声明

  • 所有配置项基于AWS官方文档(2025年1月)
  • MySQL版本支持情况已验证
  • 参数默认值来自AWS官方文档
  • 不可变配置项已通过API文档确认
  • 未提及AWS尚未GA的功能或私有预览特性