Amazon DocumentDB 集群管理 #

一、集群管理概述 #

1.1 管理内容 #

text
集群管理包括:
├── 实例管理
│   ├── 创建实例
│   ├── 修改实例
│   └── 删除实例
│
├── 参数管理
│   ├── 参数组配置
│   └── 参数修改
│
├── 扩缩容
│   ├── 纵向扩展
│   └── 横向扩展
│
└── 维护操作
    ├── 版本升级
    └── 维护窗口

1.2 管理工具 #

text
管理工具:
├── AWS管理控制台
├── AWS CLI
├── AWS SDK
└── CloudFormation

二、实例管理 #

2.1 创建实例 #

bash
# 创建主实例
aws docdb create-db-instance \
  --db-instance-identifier my-primary \
  --db-instance-class db.r6g.large \
  --engine docdb \
  --db-cluster-identifier my-cluster

# 创建只读副本
aws docdb create-db-instance \
  --db-instance-identifier my-replica-1 \
  --db-instance-class db.r6g.large \
  --engine docdb \
  --db-cluster-identifier my-cluster

2.2 查看实例 #

bash
# 查看集群实例
aws docdb describe-db-instances \
  --db-cluster-identifier my-cluster

# 查看特定实例
aws docdb describe-db-instances \
  --db-instance-identifier my-primary

2.3 修改实例 #

bash
# 修改实例规格
aws docdb modify-db-instance \
  --db-instance-identifier my-primary \
  --db-instance-class db.r6g.xlarge \
  --apply-immediately

# 修改实例配置
aws docdb modify-db-instance \
  --db-instance-identifier my-primary \
  --preferred-maintenance-window "sun:03:00-sun:04:00" \
  --apply-immediately

2.4 删除实例 #

bash
# 删除实例
aws docdb delete-db-instance \
  --db-instance-identifier my-replica-1

# 注意:不能删除集群中最后一个实例

2.5 故障转移优先级 #

bash
# 设置故障转移优先级
aws docdb modify-db-instance \
  --db-instance-identifier my-replica-1 \
  --promotion-tier 1 \
  --apply-immediately

# 优先级范围:0-15,数字越小优先级越高

三、参数组管理 #

3.1 创建参数组 #

bash
# 创建参数组
aws docdb create-db-cluster-parameter-group \
  --db-cluster-parameter-group-name custom-params \
  --db-parameter-group-family docdb5.0 \
  --description "Custom parameter group"

3.2 修改参数 #

bash
# 修改参数
aws docdb modify-db-cluster-parameter-group \
  --db-cluster-parameter-group-name custom-params \
  --parameters "ParameterName=audit_logs,ParameterValue=enabled,ApplyMethod=immediate"

3.3 常用参数 #

参数 说明 默认值
tls TLS加密 enabled
audit_logs 审计日志 disabled
profiler 性能分析 disabled
slow_op_threshold_ms 慢查询阈值 100
max_connections 最大连接数 自动计算

3.4 应用参数组 #

bash
# 应用参数组到集群
aws docdb modify-db-cluster \
  --db-cluster-identifier my-cluster \
  --db-cluster-parameter-group-name custom-params \
  --apply-immediately

3.5 查看参数 #

bash
# 查看参数组
aws docdb describe-db-cluster-parameters \
  --db-cluster-parameter-group-name custom-params

四、扩缩容 #

4.1 纵向扩展(实例规格) #

bash
# 扩展主实例
aws docdb modify-db-instance \
  --db-instance-identifier my-primary \
  --db-instance-class db.r6g.2xlarge \
  --apply-immediately

# 扩展副本
aws docdb modify-db-instance \
  --db-instance-identifier my-replica-1 \
  --db-instance-class db.r6g.2xlarge \
  --apply-immediately

4.2 横向扩展(添加副本) #

bash
# 添加只读副本
aws docdb create-db-instance \
  --db-instance-identifier my-replica-2 \
  --db-instance-class db.r6g.large \
  --engine docdb \
  --db-cluster-identifier my-cluster \
  --availability-zone us-east-1b

4.3 缩容 #

bash
# 缩小实例规格
aws docdb modify-db-instance \
  --db-instance-identifier my-primary \
  --db-instance-class db.r6g.large \
  --apply-immediately

# 删除副本
aws docdb delete-db-instance \
  --db-instance-identifier my-replica-2

4.4 扩缩容注意事项 #

text
扩缩容注意:
├── 纵向扩展会有短暂中断
├── 横向扩展不影响可用性
├── 建议在维护窗口执行
├── 扩容前评估需求
└── 监控扩容后性能

五、版本升级 #

5.1 查看可用版本 #

bash
# 查看引擎版本
aws docdb describe-db-engine-versions \
  --engine docdb

5.2 升级集群版本 #

bash
# 升级引擎版本
aws docdb modify-db-cluster \
  --db-cluster-identifier my-cluster \
  --engine-version 5.0.0 \
  --apply-immediately

5.3 升级注意事项 #

text
升级注意:
├── 备份数据
├── 检查兼容性
├── 测试环境验证
├── 计划维护窗口
└── 准备回滚方案

六、维护窗口 #

6.1 设置维护窗口 #

bash
# 设置集群维护窗口
aws docdb modify-db-cluster \
  --db-cluster-identifier my-cluster \
  --preferred-maintenance-window "sun:03:00-sun:04:00" \
  --apply-immediately

# 设置实例维护窗口
aws docdb modify-db-instance \
  --db-instance-identifier my-primary \
  --preferred-maintenance-window "sun:03:00-sun:04:00" \
  --apply-immediately

6.2 维护操作 #

text
维护窗口操作:
├── 系统补丁
├── 版本升级
├── 配置更新
├── 安全更新
└── 性能优化

七、集群删除保护 #

7.1 启用删除保护 #

bash
# 启用删除保护
aws docdb modify-db-cluster \
  --db-cluster-identifier my-cluster \
  --deletion-protection \
  --apply-immediately

7.2 删除集群 #

bash
# 删除集群(需先禁用保护)
aws docdb delete-db-cluster \
  --db-cluster-identifier my-cluster \
  --skip-final-snapshot

# 删除并创建最终快照
aws docdb delete-db-cluster \
  --db-cluster-identifier my-cluster \
  --final-db-snapshot-identifier my-cluster-final-snapshot

八、标签管理 #

8.1 添加标签 #

bash
# 添加标签
aws docdb add-tags-to-resource \
  --resource-name arn:aws:docdb:us-east-1:123:cluster:my-cluster \
  --tags Key=Environment,Value=Production Key=Owner,Value=TeamA

8.2 查看标签 #

bash
# 查看标签
aws docdb list-tags-for-resource \
  --resource-name arn:aws:docdb:us-east-1:123:cluster:my-cluster

8.3 删除标签 #

bash
# 删除标签
aws docdb remove-tags-from-resource \
  --resource-name arn:aws:docdb:us-east-1:123:cluster:my-cluster \
  --tag-keys Environment Owner

九、CloudFormation管理 #

9.1 集群模板 #

yaml
AWSTemplateFormatVersion: '2010-09-09'
Description: DocumentDB Cluster

Resources:
  DocDBCluster:
    Type: AWS::DocDB::DBCluster
    Properties:
      DBClusterIdentifier: my-cluster
      Engine: docdb
      EngineVersion: 5.0.0
      MasterUsername: admin
      MasterUserPassword: !Ref MasterPassword
      DBSubnetGroupName: !Ref DocDBSubnetGroup
      VpcSecurityGroupIds:
        - !Ref DocDBSecurityGroup
      BackupRetentionPeriod: 7
      PreferredMaintenanceWindow: sun:03:00-sun:04:00

  DocDBPrimaryInstance:
    Type: AWS::DocDB::DBInstance
    Properties:
      DBClusterIdentifier: !Ref DocDBCluster
      DBInstanceClass: db.r6g.large
      DBInstanceIdentifier: my-primary

  DocDBReplicaInstance:
    Type: AWS::DocDB::DBInstance
    Properties:
      DBClusterIdentifier: !Ref DocDBCluster
      DBInstanceClass: db.r6g.large
      DBInstanceIdentifier: my-replica-1

Outputs:
  ClusterEndpoint:
    Value: !GetAtt DocDBCluster.Endpoint

十、最佳实践 #

10.1 实例规划 #

text
实例规划建议:
├── 生产环境至少2个副本
├── 跨多个可用区部署
├── 根据负载选择规格
├── 预留扩展空间
└── 定期评估需求

10.2 参数配置 #

text
参数配置建议:
├── 启用TLS加密
├── 配置审计日志
├── 设置慢查询阈值
├── 合理设置连接数
└── 定期审查参数

10.3 维护建议 #

text
维护建议:
├── 设置合理的维护窗口
├── 启用删除保护
├── 使用标签管理资源
├── 定期备份
└── 监控集群健康

十一、常见问题 #

11.1 实例创建慢 #

text
原因:
├── 存储初始化
├── 参数组配置
├── 网络配置
└── 安全组配置

解决:
├── 耐心等待
├── 检查配置
└── 查看事件日志

11.2 扩容失败 #

text
原因:
├── 资源配额限制
├── 可用区资源不足
├── 网络问题
└── 权限问题

解决:
├── 检查配额
├── 更换可用区
├── 检查网络
└── 确认权限

十二、总结 #

12.1 管理要点 #

操作 命令
创建实例 create-db-instance
修改实例 modify-db-instance
删除实例 delete-db-instance
创建参数组 create-db-cluster-parameter-group
修改参数 modify-db-cluster-parameter-group
升级版本 modify-db-cluster

12.2 最佳实践总结 #

text
集群管理最佳实践:
├── 合理规划实例数量和规格
├── 配置适当的参数组
├── 设置维护窗口
├── 启用删除保护
├── 使用标签管理
└── 定期审查和优化

下一步,让我们学习备份与恢复!

最后更新:2026-03-27