前置知识: 运维与中间件

AWS RDS 数据库命令

2 min入门

RDS 命令实战:实例创建与配置、快照恢复、参数组、Aurora 集群与只读副本。

学习目标

本文是「云计算」模块的第 45 篇,难度定位为入门。重点内容:RDS 命令实战:实例创建与配置、快照恢复、参数组、Aurora 集群与只读副本。

主要章节:

  • 实例创建与查看
  • 实例配置管理
  • 快照管理
  • 安全组与子网
  • 参数组管理
  • Aurora 集群
  • ……共 10 个章节

实例创建与查看

基本写法:查看可用数据库引擎 aws rds describe-db-engine-versions

# 列出所有数据库引擎及版本
aws rds describe-db-engine-versions

基本写法:查看 MySQL 引擎版本 aws rds describe-db-engine-versions --engine mysql

# 查看 MySQL 引擎的所有可用版本
aws rds describe-db-engine-versions --engine mysql

基本写法:创建 RDS 实例 aws rds create-db-instance --db-instance-identifier <实例ID> --db-instance-class <实例类> --engine <引擎> --master-username <用户> --master-user-password <密码> --allocated-storage <GB>

# 创建 MySQL 8.0 实例
aws rds create-db-instance \
  --db-instance-identifier mydb \
  --db-instance-class db.t3.micro \
  --engine mysql \
  --engine-version 8.0.35 \
  --master-username admin \
  --master-user-password 'MyStrongPass123!' \
  --allocated-storage 20

基本写法:列出所有 RDS 实例 aws rds describe-db-instances [--db-instance-identifier <实例ID>]

# 查看账户下所有 RDS 实例
aws rds describe-db-instances

基本写法:查看实例详情 aws rds describe-db-instances --db-instance-identifier <实例ID>

# 查看指定实例详情
aws rds describe-db-instances --db-instance-identifier mydb

基本写法:删除实例 aws rds delete-db-instance --db-instance-identifier <实例ID> [--skip-final-snapshot]

# 删除实例但不保留最终快照
aws rds delete-db-instance --db-instance-identifier mydb --skip-final-snapshot

实例配置管理

基本写法:修改实例规格 aws rds modify-db-instance --db-instance-identifier <实例ID> --db-instance-class <实例类> --apply-immediately

# 立即将实例规格升级到 t3.medium
aws rds modify-db-instance \
  --db-instance-identifier mydb \
  --db-instance-class db.t3.medium \
  --apply-immediately

基本写法:扩容存储 aws rds modify-db-instance --db-instance-identifier <实例ID> --allocated-storage <GB> --apply-immediately

# 扩容存储至 100GB
aws rds modify-db-instance \
  --db-instance-identifier mydb \
  --allocated-storage 100 \
  --apply-immediately

基本写法:修改参数组 aws rds modify-db-instance --db-instance-identifier <实例ID> --db-parameter-group-name <参数组>

# 应用新的参数组
aws rds modify-db-instance \
  --db-instance-identifier mydb \
  --db-parameter-group-name myparamgroup \
  --apply-immediately

基本写法:重启实例 aws rds reboot-db-instance --db-instance-identifier <实例ID>

# 重启 RDS 实例
aws rds reboot-db-instance --db-instance-identifier mydb

基本写法:查看实例状态 aws rds describe-db-instances --query 'DBInstances[*].[DBInstanceIdentifier,DBInstanceStatus]'

# 列出实例名与状态
aws rds describe-db-instances \
  --query 'DBInstances[*].[DBInstanceIdentifier,DBInstanceStatus]' \
  --output table

快照管理

基本写法:创建手动快照 aws rds create-db-snapshot --db-instance-identifier <实例ID> --db-snapshot-identifier <快照名>

# 为 mydb 实例创建手动快照
aws rds create-db-snapshot \
  --db-instance-identifier mydb \
  --db-snapshot-identifier mydb-snapshot-20260731

基本写法:列出快照 aws rds describe-db-snapshots [--db-instance-identifier <实例ID>]

# 列出所有手动快照
aws rds describe-db-snapshots --snapshot-type manual

基本写法:从快照还原实例 aws rds restore-db-instance-from-db-snapshot --db-instance-identifier <新实例ID> --db-snapshot-identifier <快照名>

# 从快照还原为新实例
aws rds restore-db-instance-from-db-snapshot \
  --db-instance-identifier mydb-restored \
  --db-snapshot-identifier mydb-snapshot-20260731

基本写法:删除快照 aws rds delete-db-snapshot --db-snapshot-identifier <快照名>

# 删除指定快照
aws rds delete-db-snapshot --db-snapshot-identifier mydb-snapshot-20260731

基本写法:将快照复制到另一区域 aws rds copy-db-snapshot --source-db-snapshot-identifier <源ARN> --target-db-snapshot-identifier <目标快照名>

# 跨区域复制快照用于灾备
aws rds copy-db-snapshot \
  --source-db-snapshot-identifier arn:aws:rds:us-east-1:123456789012:snapshot:mydb-snapshot \
  --target-db-snapshot-identifier mydb-snapshot-copy \
  --region us-west-2

安全组与子网

基本写法:修改安全组 aws rds modify-db-instance --db-instance-identifier <实例ID> --vpc-security-group-ids <安全组ID>

# 修改实例所属 VPC 安全组
aws rds modify-db-instance \
  --db-instance-identifier mydb \
  --vpc-security-group-ids sg-12345678 \
  --apply-immediately

基本写法:查看子网组 aws rds describe-db-subnet-groups

# 列出所有 DB 子网组
aws rds describe-db-subnet-groups

基本写法:创建子网组 aws rds create-db-subnet-group --db-subnet-group-name <组名> --db-subnet-group-description <描述> --subnet-ids <子网ID列表>

# 创建 DB 子网组关联多个子网
aws rds create-db-subnet-group \
  --db-subnet-group-name my-subnet-group \
  --db-subnet-group-description "my subnet group" \
  --subnet-ids subnet-abc subnet-def subnet-ghi

基本写法:查看安全组 aws ec2 describe-security-groups --group-ids <安全组ID>

# 查看安全组规则
aws ec2 describe-security-groups --group-ids sg-12345678

参数组管理

基本写法:创建参数组 aws rds create-db-parameter-group --db-parameter-group-name <组名> --db-parameter-group-family <家族> --description <描述>

# 创建 MySQL 8.0 参数组
aws rds create-db-parameter-group \
  --db-parameter-group-name my-param-group \
  --db-parameter-group-family mysql8.0 \
  --description "My custom MySQL params"

基本写法:修改参数 aws rds modify-db-parameter-group --db-parameter-group-name <组名> --parameters <参数列表>

# 修改 max_connections 与 time_zone
aws rds modify-db-parameter-group \
  --db-parameter-group-name my-param-group \
  --parameters "ParameterName=max_connections,ParameterValue=500,ApplyMethod=immediate" \
               "ParameterName=time_zone,ParameterValue=Asia/Shanghai,ApplyMethod=pending-reboot"

基本写法:查看参数组详情 aws rds describe-db-parameters --db-parameter-group-name <组名>

# 查看参数组中所有参数
aws rds describe-db-parameters --db-parameter-group-name my-param-group

基本写法:删除参数组 aws rds delete-db-parameter-group --db-parameter-group-name <组名>

# 删除未被使用的参数组
aws rds delete-db-parameter-group --db-parameter-group-name my-param-group

Aurora 集群

基本写法:创建 Aurora 集群 aws rds create-db-cluster --db-cluster-identifier <集群ID> --engine aurora-mysql --master-username <用户> --master-user-password <密码>

# 创建 Aurora MySQL 集群
aws rds create-db-cluster \
  --db-cluster-identifier my-cluster \
  --engine aurora-mysql \
  --engine-version 8.0.mysql_aurora.3.04.0 \
  --master-username admin \
  --master-user-password 'MyStrongPass123!' \
  --database-name mydb \
  --backup-retention-period 7

基本写法:创建集群实例 aws rds create-db-instance --db-instance-identifier <实例ID> --db-instance-class <类> --engine aurora-mysql --db-cluster-identifier <集群ID>

# 为 Aurora 集群添加实例
aws rds create-db-instance \
  --db-instance-identifier my-cluster-instance-1 \
  --db-instance-class db.r6g.large \
  --engine aurora-mysql \
  --db-cluster-identifier my-cluster

基本写法:故障转移集群 aws rds failover-db-cluster --db-cluster-identifier <集群ID> --target-db-instance-identifier <目标实例>

# 手动故障转移到指定实例
aws rds failover-db-cluster \
  --db-cluster-identifier my-cluster \
  --target-db-instance-identifier my-cluster-instance-2

基本写法:删除集群 aws rds delete-db-cluster --db-cluster-identifier <集群ID> --skip-final-snapshot

# 删除 Aurora 集群及其实例
aws rds delete-db-cluster \
  --db-cluster-identifier my-cluster \
  --skip-final-snapshot

事件与日志

基本写法:查看事件 aws rds describe-events [--source-identifier <资源ID>] [--source-type <类型>]

# 查看指定实例最近 1 小时事件
aws rds describe-events \
  --source-identifier mydb \
  --source-type db-instance \
  --duration 60

基本写法:查看事件订阅 aws rds describe-event-subscriptions

# 列出所有事件订阅
aws rds describe-event-subscriptions

基本写法:创建事件订阅 aws rds create-event-subscription --subscription-name <订阅名> --source-type <类型> --event-categories <分类> --sns-topic-arn <SNS ARN>

# 订阅实例故障事件
aws rds create-event-subscription \
  --subscription-name my-failure-sub \
  --source-type db-instance \
  --event-categories failure \
  --sns-topic-arn arn:aws:sns:us-east-1:123456789012:rds-events

基本写法:下载日志文件 aws rds download-db-log-file-portion --db-instance-identifier <实例ID> --log-file-name <文件名> --output text

# 下载 error.log 日志到本地
aws rds download-db-log-file-portion \
  --db-instance-identifier mydb \
  --log-file-name error/mysql-error-running.log \
  --output text > error.log

多可用区与只读副本

基本写法:开启多可用区 aws rds modify-db-instance --db-instance-identifier <实例ID> --multi-az --apply-immediately

# 为实例开启多 AZ 高可用
aws rds modify-db-instance \
  --db-instance-identifier mydb \
  --multi-az \
  --apply-immediately

基本写法:创建只读副本 aws rds create-db-instance-read-replica --db-instance-identifier <副本ID> --source-db-instance-identifier <源实例>

# 从主实例创建只读副本
aws rds create-db-instance-read-replica \
  --db-instance-identifier mydb-read-replica \
  --source-db-instance-identifier mydb \
  --db-instance-class db.t3.micro

基本写法:将只读副本提升为主实例 aws rds promote-read-replica --db-instance-identifier <副本ID>

# 提升只读副本为独立主实例
aws rds promote-read-replica --db-instance-identifier mydb-read-replica

基本写法:跨区域只读副本 aws rds create-db-instance-read-replica --db-instance-identifier <副本ID> --source-db-instance-identifier <源ARN> --region <区域>

# 创建跨区域只读副本用于灾备
aws rds create-db-instance-read-replica \
  --db-instance-identifier mydb-dr \
  --source-db-instance-identifier arn:aws:rds:us-east-1:123456789012:db:mydb \
  --region us-west-2

备份与维护

基本写法:修改备份保留期 aws rds modify-db-instance --db-instance-identifier <实例ID> --backup-retention-period <天>

# 设置自动备份保留 14 天
aws rds modify-db-instance \
  --db-instance-identifier mydb \
  --backup-retention-period 14 \
  --apply-immediately

基本写法:设置维护窗口 aws rds modify-db-instance --db-instance-identifier <实例ID> --preferred-maintenance-window <窗口>

# 设置每周日凌晨维护窗口
aws rds modify-db-instance \
  --db-instance-identifier mydb \
  --preferred-maintenance-window sun:03:00-sun:05:00

基本写法:立即应用待处理修改 aws rds apply-pending-maintenance-action --resource-id <资源ID> --apply-action <动作> --opt-in-type immediate

# 立即应用待处理的 OS 更新
aws rds apply-pending-maintenance-action \
  --resource-id db:mydb \
  --apply-action system-update \
  --opt-in-type immediate

基本写法:查看待处理维护动作 aws rds describe-pending-maintenance-actions

# 列出所有待处理的维护动作
aws rds describe-pending-maintenance-actions

Performance Insights

基本写法:开启 Performance Insights aws rds modify-db-instance --db-instance-identifier <实例ID> --enable-performance-insights --performance-insights-retention-period <天>

# 开启 PI 并保留 7 天数据
aws rds modify-db-instance \
  --db-instance-identifier mydb \
  --enable-performance-insights \
  --performance-insights-retention-period 7 \
  --apply-immediately

基本写法:获取性能指标 aws pi get-resource-metrics --service-type RDS --identifier <实例ID> --metric-queries <指标> --start-time <开始> --end-time <结束>

# 查询数据库负载指标
aws pi get-resource-metrics \
  --service-type RDS \
  --identifier db-mydb \
  --metric-queries '[{"Metric":"db.load.avg","GroupBy":{"Group":"db.sql"}}]' \
  --start-time 2026-07-31T00:00:00Z \
  --end-time 2026-07-31T01:00:00Z \
  --period-in-seconds 300

基本写法:关闭 Performance Insights aws rds modify-db-instance --db-instance-identifier <实例ID> --no-enable-performance-insights --apply-immediately

# 关闭 PI 节省成本
aws rds modify-db-instance \
  --db-instance-identifier mydb \
  --no-enable-performance-insights \
  --apply-immediately