mcpField
H
huawei-cloud-rds-smart-service

huawei-cloud-rds-smart-service

github.com/huaweicloud数据与数据库59141 次安装2 天前更新
代码仓库

关于 huawei-cloud-rds-smart-service

该技能为华为云 RDS 提供覆盖多种数据库引擎的运维与分析支持,面向开发者、DBA 和 SRE。它通过 hcloud CLI 优先执行操作,并可回退到 Python SDK 或 REST API,涵盖查询、诊断、调优、备份和安全管理。

主要功能

  1. 01查询实例、规格与数据库版本
  2. 02分析慢 SQL、TOP SQL 和错误日志
  3. 03管理实例、参数与读副本
  4. 04配置备份并执行恢复
  5. 05诊断故障与复制状态
  6. 06管理安全组、SSL 和审计日志

适用场景

  1. 01检查 RDS 实例健康状况和备份状态
  2. 02分析慢 SQL 并获取优化建议
  3. 03排查连接、延迟或复制问题
  4. 04调整参数或执行备份恢复

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/huaweicloud/huaweicloud-skills --skill huawei-cloud-rds-smart-service

安装后在 Claude Code 中输入/huawei-cloud-rds-smart-service确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

references/
acceptance-criteria.md
api-paths.md
cli-installation-guide.md
dataflow-diagram.md
iam-policies.md
rds-troubleshooting-guide.md
sql-optimization-guide.md
verification-method.md
scripts/
rds_cli.sh
rds_health_check.py
rds_sdk_fallback.py
templates/
daily-inspection.md
parameter-tuning.md

详细介绍

华为云 RDS 智能服务

面向华为云 RDS 的全场景智能服务——涵盖所有数据库引擎的基础问答、SQL 优化、日常运维、故障诊断、参数调优和备份恢复。


概述

此技能为华为云关系型数据库服务(RDS)提供全面的智能服务。它支持所有数据库引擎(MySQL、PostgreSQL、SQL Server、MariaDB、GaussDB for MySQL、TaurusDB),覆盖六大能力领域:

领域能力
基础问答产品功能咨询、最佳实践、规格/版本查询、实例列表
SQL 优化慢日志分析、Top SQL 查询、执行计划指导、索引优化建议、SQL 限流
日常运维健康检查、实例重启、规格变更、磁盘扩容、主备切换、只读副本管理、自动扩缩容策略
故障诊断错误日志分析、复制状态、连接诊断、可恢复时间范围、实例诊断、智能终止会话
参数调优参数组增删改查、参数应用、实例参数修改、参数变更历史
备份恢复备份策略管理、手动创建/删除备份、恢复到新/现有实例、时间点恢复、备份使用情况汇总
安全安全组修改、SSL 配置、审计日志管理
架构
User Request → Skill Trigger Matching → Capability Domain Routing
  → CLI (hcloud RDS) → [fallback] → SDK (huaweicloudsdkrds.v3) → [fallback] → API (REST)
  → Result Formatting → Intelligent Analysis & Recommendations
适用场景
  • 日常巡检:DBA 检查实例健康状况、资源使用情况和备份状态
  • SQL 优化:开发者/DBA 分析慢 SQL 并获取优化建议
  • 故障排查:SRE/DBA 诊断实例不可达、高延迟、连接耗尽等问题
  • 参数调优:DBA 调整数据库参数以提升性能
  • 备份恢复:DBA/运维人员管理备份策略并执行恢复演练
  • 基础问答:开发者/初级 DBA 咨询 RDS 功能和最佳实践

前置条件

  1. 已安装并完成认证的 hcloud CLI — 参考:https://support.huaweicloud.com/qs-hcli/hcli_02_003.html
  2. Python 3.8+ 和 huaweicloudsdkrds 包 — pip install huaweicloudsdkrds
  3. 华为云 AK/SK 环境变量(HUAWEI_ACCESS_KEY / HUAWEI_SECRET_KEY 或 HWC_AK / HWC_SK)
  4. 默认区域:cn-north-4(使用 --cli-region 覆盖)
  5. IAM 权限:RDS 读写权限(参见 references/iam-policies.md)

工作流

1. 基础问答 — 产品知识与实例查询
# List all RDS instances
hcloud RDS ListInstances --cli-region=cn-north-4

# List instances filtered by engine type
hcloud RDS ListInstances --cli-region=cn-north-4 --datastore_type=MySQL

# List available flavors for a specific engine
hcloud RDS ListFlavors --cli-region=cn-north-4 --database_name=MySQL --version_name=8.0

# List available database versions
hcloud RDS ListDatastores --cli-region=cn-north-4 --database_name=MySQL

# Show available upgrade versions for an instance
hcloud RDS ShowAvailableVersion --cli-region=cn-north-4 --instance_id={instance_id}

# List engine flavors (available flavors for resizing)
hcloud RDS ListEngineFlavors --cli-region=cn-north-4 --instance_id={instance_id} --ha_mode=ha --availability_zone_ids=cn-north-4a

# Show instance quotas
hcloud RDS ShowQuotas --cli-region=cn-north-4
2. SQL 性能优化
# Query slow SQL logs (within last 30 days)
hcloud RDS ListSlowLogs --cli-region=cn-north-4 --instance_id={instance_id} \
  --start_date=$(date -d '7 days ago' +%Y-%m-%dT00:00:00%z) --end_date=$(date +%Y-%m-%dT%H:%M:%S%z)

# Download slow log file
hcloud RDS DownloadSlowlog --cli-region=cn-north-4 --instance_id={instance_id} \
  --file_name={file_name}

# Query TOP SQL statements
hcloud RDS ListTopSqls --cli-region=cn-north-4 --instance_id={instance_id} --limit=10

# Query historical TOP SQL
hcloud RDS ListHistoryTopSqls --cli-region=cn-north-4 --instance_id={instance_id} \
  --start_time=$(($(date -d '7 days ago' +%s)*1000)) --end_time=$(($(date +%s)*1000))

# Query historical wait events
hcloud RDS ListHistoryWaitEvents --cli-region=cn-north-4 --instance_id={instance_id} \
  --start_time=$(($(date -d '7 days ago' +%s)*1000)) --end_time=$(($(date +%s)*1000))

# Query top objects (tables/indexes with high load)
hcloud RDS ShowTopObjects --cli-region=cn-north-4 --instance_id={instance_id}

# Set SQL limit (control SQL concurrency)
hcloud RDS CreateSqlLimit --cli-region=cn-north-4 --instance_id={instance_id} --db_name={db_name} --max_concurrency=10 --max_waiting=5
3. 日常运维 — 实例管理
# Restart instance
hcloud RDS StartInstanceRestartAction --cli-region=cn-north-4 --instance_id={instance_id} \
  --restart.restart_server=true

# Resize flavor (specification change)
hcloud RDS StartResizeFlavorAction --cli-region=cn-north-4 --instance_id={instance_id} --resize_flavor.spec_code={spec_code}

# Enlarge disk volume
hcloud RDS StartInstanceEnlargeVolumeAction --cli-region=cn-north-4 --instance_id={instance_id} \
  --enlarge_volume.size=200

# Reduce disk volume
hcloud RDS StartInstanceReduceVolumeAction --cli-region=cn-north-4 --instance_id={instance_id} --reduce_volume.size=100 --reduce_volume.is_delay=false

# Primary-standby switchover
hcloud RDS StartFailover --cli-region=cn-north-4 --instance_id={instance_id}

# Set read-only switch
hcloud RDS SetReadOnlySwitch --cli-region=cn-north-4 --instance_id={instance_id} --readonly=true

# Update instance alias
hcloud RDS UpdateInstanceAlias --cli-region=cn-north-4 --instance_id={instance_id} --alias=new_name

# List tasks (async operation status)
hcloud RDS ListTasks --cli-region=cn-north-4 --start_time=$(($(date -d '7 days ago' +%s)*1000)) --end_time=$(($(date +%s)*1000))

# Show task detail
hcloud RDS ShowTaskDetail --cli-region=cn-north-4 --instance_id={instance_id} --workflow_id={workflow_id} --workflow_name={workflow_name}

# Set auto disk expansion policy
hcloud RDS SetAutoEnlargePolicy --cli-region=cn-north-4 --instance_id={instance_id} --switch_option=true --limit_size=500 --trigger_threshold=15

# Show auto disk expansion policy
hcloud RDS ShowAutoEnlargePolicy --cli-region=cn-north-4 --instance_id={instance_id}

# Show storage used space
hcloud RDS ShowStorageUsedSpace --cli-region=cn-north-4 --instance_id={instance_id}

# List volume info
hcloud RDS ListVolumeInfo --cli-region=cn-north-4 --instance_id={instance_id}
4. 故障诊断与排查
# Query error logs
hcloud RDS ListErrorLogs --cli-region=cn-north-4 --instance_id={instance_id} \
  --start_date=$(date -d '7 days ago' +%Y-%m-%dT00:00:00%z) --end_date=$(date +%Y-%m-%dT%H:%M:%S%z)

# Query error logs (v3.1 enhanced)
hcloud RDS ListErrorLogsNew --cli-region=cn-north-4 --instance_id={instance_id} \
  --start_date=$(date -d '7 days ago' +%Y-%m-%dT00:00:00%z) --end_date=$(date +%Y-%m-%dT%H:%M:%S%z)

# Download error log file
hcloud RDS DownloadErrorlog --cli-region=cn-north-4 --instance_id={instance_id}

# Show replication status (primary-standby)
hcloud RDS ShowReplicationStatus --cli-region=cn-north-4 --instance_id={instance_id}

# Show recovery time window (for point-in-time recovery)
hcloud RDS ShowRecoveryTimeWindow --cli-region=cn-north-4 --instance_id={instance_id}

# List instance diagnosis results
hcloud RDS ListInstanceDiagnosis --cli-region=cn-north-4 --engine=mysql

# List instance diagnosis info
hcloud RDS ListInstancesInfoDiagnosis --cli-region=cn-north-4 --engine=mysql --diagnosis=high_pressure

# Query historical sessions
hcloud RDS ListHistorySessions --cli-region=cn-north-4 --instance_id={instance_id} \
  --start_time=$(($(date -d '7 days ago' +%s)*1000)) --end_time=$(($(date +%s)*1000)) --limit=10 --offset=0

# Intelligent kill session (kill problematic sessions)
hcloud RDS CreateIntelligentKillSession --cli-region=cn-north-4 --instance_id={instance_id} --auto_add_sql_limit_rule=false

# Show intelligent kill session history
hcloud RDS ShowIntelligentKillSessionHistory --cli-region=cn-north-4 --instance_id={instance_id} \
  --start_time=$(($(date -d '7 days ago' +%s)*1000)) --end_time=$(($(date +%s)*1000)) --page_num=1 --page_size=10

# Show second-level monitoring
hcloud RDS ShowSecondLevelMonitoring --cli-region=cn-north-4 --instance_id={instance_id}

# Validate instance connection (RDS for SQL Server only; requires user_info)
hcloud RDS ValidateInstanceConnection --cli-region=cn-north-4 --instance_id={instance_id} \
  --user_info.login_user_name=dbuser --user_info.login_user_password=*** \
  --user_info.server_ip=1.2.3.4 --user_info.server_port=3306
5. 参数调优
# List all parameter groups
hcloud RDS ListConfigurations --cli-region=cn-north-4

# Show parameter group details
hcloud RDS ShowConfiguration --cli-region=cn-north-4 --config_id={config_id}

# Show instance parameter configuration
hcloud RDS ShowInstanceConfiguration --cli-region=cn-north-4 --instance_id={instance_id}

# Create parameter group
hcloud RDS CreateConfiguration --cli-region=cn-north-4 \
  --name=custom_param_group --datastore.type=MySQL --datastore.version=8.0

# Update parameter group
hcloud RDS UpdateConfiguration --cli-region=cn-north-4 --config_id={config_id} \
  --values.max_connections=100

# Apply parameter group to instance (async)
hcloud RDS ApplyConfigurationAsync --cli-region=cn-north-4 --config_id={config_id} \
  --instance_ids.1={instance_id}

# Update instance parameter directly
hcloud RDS UpdateInstanceConfiguration --cli-region=cn-north-4 --instance_id={instance_id} \
  --values.max_connections=100

# List parameter change history
hcloud RDS ListInstanceParamHistories --cli-region=cn-north-4 --instance_id={instance_id}

# Compare parameter configurations
hcloud RDS CompareConfiguration --cli-region=cn-north-4 --source_id={source_id} --target_id={target_id}
6. 备份与恢复
# Show backup policy
hcloud RDS ShowBackupPolicy --cli-region=cn-north-4 --instance_id={instance_id}

# Set backup policy
hcloud RDS SetBackupPolicy --cli-region=cn-north-4 --instance_id={instance_id} \
  --backup_policy.keep_days=7 --backup_policy.start_time=00:00-01:00 --backup_policy.period=1,2,3,4,5,6,7

# Show backup configuration
hcloud RDS ShowBackupConfig --cli-region=cn-north-4 --instance_id={instance_id}

# Change backup configuration
hcloud RDS ChangeBackupConfig --cli-region=cn-north-4 --instance_id={instance_id} --default_backup_method=EBACKUP

# List backups
hcloud RDS ListBackups --cli-region=cn-north-4 --instance_id={instance_id}

# Create manual backup
hcloud RDS CreateManualBackup --cli-region=cn-north-4 \
  --instance_id={instance_id} --name=manual_backup_20240101

# Delete manual backup
hcloud RDS DeleteManualBackup --cli-region=cn-north-4 --backup_id={backup_id}

# Batch delete manual backups
hcloud RDS BatchDeleteManualBackup --cli-region=cn-north-4 --backup_ids.1={backup_id_1} --backup_ids.2={backup_id_2}

# Show backup download link
hcloud RDS ShowBackupDownloadLink --cli-region=cn-north-4 --backup_id={backup_id}

# Restore to new instance
hcloud RDS CreateRestoreInstance --cli-region=cn-north-4 \
  --restore_point.backup_id={backup_id} --name=restored_instance --flavor_ref={flavor_id} \
  --availability_zone=cn-north-4a,cn-north-4g --volume.size=100 --volume.type=CLOUDSSD
# 注意: `--password` 与 KooCLI 系统参数同名冲突,无法直接传参。需用 `echo 'b' |` 管道选择"API参数"绕过,或用 `--cli-jsonInput=jsonFile` 传入整份 JSON body。恢复实例磁盘不能小于源实例(报 DBS.200073)。

# Restore to existing instance
hcloud RDS RestoreToExistingInstance --cli-region=cn-north-4 --target.instance_id={target_instance_id} --source.instance_id={source_instance_id} --source.backup_id={backup_id} --source.type=backup

# Restore tables (table-level recovery)
hcloud RDS RestoreTables --cli-region=cn-north-4 --instance_id={instance_id} --restoreTables.1.database={db_name} --restoreTables.1.tables.1.oldName={old_table} --restoreTables.1.tables.1.newName={new_table} --restoreTime=$(($(date -d '1 day ago' +%s)*1000))

# List instance backup summary
hcloud RDS ListInstanceBackupSummary --cli-region=cn-north-4

# Show backup usage (by engine)
hcloud RDS ShowBackupUsage --cli-region=cn-north-4 --engine=MySQL
7. 安全管理
# Set security group
hcloud RDS SetSecurityGroup --cli-region=cn-north-4 --instance_id={instance_id} \
  --security_group_id={sg_id}

# Switch SSL configuration
hcloud RDS SwitchSsl --cli-region=cn-north-4 --instance_id={instance_id} --ssl_option=true

# List audit logs
hcloud RDS ListAuditlogs --cli-region=cn-north-4 --instance_id={instance_id} \
  --start_time=$(date -d '7 days ago' +%Y-%m-%dT00:00:00%z) --end_time=$(date +%Y-%m-%dT%H:%M:%S%z) --limit=10 --offset=0

# Show audit log policy
hcloud RDS ShowAuditlogPolicy --cli-region=cn-north-4 --instance_id={instance_id}

# Set audit log policy
hcloud RDS SetAuditlogPolicy --cli-region=cn-north-4 --instance_id={instance_id} --keep_days=30 --audit_types.1=CREATE_USER

# Show audit log download link
hcloud RDS ShowAuditlogDownloadLink --cli-region=cn-north-4 --instance_id={instance_id} --ids.1={auditlog_id}

KooCLI 命令格式规范

hcloud RDS <Operation> --cli-region=<region> [--key=value ...]
特性说明示例
服务名称RDS(大写)hcloud RDS ListInstances
操作名称PascalCaseListInstances、ShowBackupPolicy、CreateManualBackup
区域参数--cli-region=<value>--cli-region=cn-north-4
简单参数--key=value--instance_id=xxx
带索引的参数--key.1=value1--instance_ids.1=xxx
嵌套对象参数--parent.child=value--backup_policy.keep_days=7、--datastore.type=MySQL

注意:hcloud CLI 的 body/嵌套参数不支持整体 JSON 传参(--param='{"k":"v"}' 会报 仅支持参数 X 的值为 {} 或 [])。必须按 --parent.child=value 拆分传参。数组使用下标 --instance_ids.1=xxx。

SDK 备用方案(Python)

CLI 不可用时,使用 Python SDK:

from huaweicloudsdkcore.auth.credentials import BasicCredentials
from huaweicloudsdkcore.http.http_config import HttpConfig
from huaweicloudsdkrds.v3.rds_client import RdsClient
from huaweicloudsdkrds.v3.model.list_instances_request import ListInstancesRequest

credentials = BasicCredentials() \
    .with_ak(os.environ.get('HUAWEI_ACCESS_KEY')) \
    .with_sk(os.environ.get('HUAWEI_SECRET_KEY')) \
    .with_project_id('{project_id}')

client = RdsClient.new_builder() \
    .with_credentials(credentials) \
    .with_region(HwRegion.CN_NORTH_4) \
    .build()

request = ListInstancesRequest()
response = client.list_instances(request)
print(response)
API 备用方案(REST)

CLI 和 SDK 都不可用时,直接使用 REST API:

curl -X GET "https://rds.cn-north-4.myhuaweicloud.com/v3/{project_id}/instances" \
  -H "X-Auth-Token: {token}" \
  -H "Content-Type: application/json"

核心命令

命令用途模式
hcloud RDS ListInstances列出所有 RDS 实例CLI
hcloud RDS ListFlavors列出可用规格CLI
hcloud RDS ListDatastores列出数据库版本CLI
hcloud RDS ListSlowLogs查询慢 SQL 日志CLI
hcloud RDS ListTopSqls查询 TOP SQLCLI
hcloud RDS ListErrorLogs查询错误日志CLI
hcloud RDS ShowReplicationStatus检查复制状态CLI
hcloud RDS ListInstanceDiagnosis实例诊断CLI
hcloud RDS ListConfigurations列出参数组CLI
hcloud RDS ShowInstanceConfiguration查看实例参数CLI
hcloud RDS ListBackups列出备份CLI
hcloud RDS ShowBackupPolicy查看备份策略CLI
hcloud RDS CreateManualBackup创建手动备份CLI
hcloud RDS CreateRestoreInstance恢复到新实例CLI
hcloud RDS SetSecurityGroup修改安全组CLI
hcloud RDS SwitchSsl配置 SSLCLI
hcloud RDS ListAuditlogs列出审计日志CLI

参数确认(Parameter Confirmation)

参数必填描述示例
--cli-region是华为云区域cn-north-4
--instance_id是(大多数操作)RDS 实例 IDrds-xxxxx
--project_id自动项目 ID(从凭据自动获取)自动
--datastore_type否按引擎类型筛选MySQL
--config_id是(参数操作)参数组 IDxxxxx
--backup_id是(备份操作)备份 IDxxxxx
--resize_flavor.spec_code是(调整规格)目标规格代码rds.mysql.n1.large.4.ha
--start_date / --end_date是(日志操作)日期范围(ISO 8601,仅限最近 30 天)$(date -d '7 days ago' +%Y-%m-%dT00:00:00%z)
--enlarge_volume.size是(磁盘操作)目标磁盘大小,单位为 GB200
需要用户确认的变更操作

以下操作会修改 RDS 资源,执行前必须提示用户明确确认:

  • 实例:重启、调整规格、扩容/缩容磁盘、故障转移、停止(删除实例属于高风险操作,本技能不支持,请通过华为云控制台操作)
  • 备份:创建手动备份、删除备份、恢复实例
  • 参数:创建/更新/删除配置、应用配置、更新实例参数
  • 安全:设置安全组、切换 SSL、设置审计日志策略
  • 会话:智能终止会话

输出格式(Output Format)

所有命令输出均以结构化 JSON 格式返回。该技能会将结果整理为易读的表格,并提供智能分析:

CLI 输出
{
  "instances": [
    {"id": "rds-xxxxx", "name": "my-db", "status": "ACTIVE", "type": "Single", "engine": "MySQL"}
  ]
}
分析输出
字段描述
status实例健康状态(ACTIVE/FAILED/BUILD)
recommendation根据分析给出的建议操作
risk_level风险评估(低/中/高)

验证方法(Verification)

  • CLI 验证:运行 hcloud RDS ListInstances --cli-region=cn-north-4 并确认 JSON 输出
  • SDK 验证:执行 Python SDK 代码片段,并检查 response.status_code == 200
  • API 验证:发送 REST 请求,并验证返回 200 OK 响应及有效的 JSON 正文
  • 端到端:创建测试实例、查询其状态,然后清理
  • 参考:详细测试步骤请参见验证方法

参考文档


最佳实践

  • 始终显式指定 --cli-region,避免区域混淆
  • 列出实例时使用 --datastore_type 过滤器缩小结果范围
  • 分析慢日志时,将日期范围限制为 7 天,以提升性能
  • 调整规格前,使用 ListEngineFlavors 检查可用规格
  • 恢复前,使用 ShowRecoveryTimeWindow 确认恢复时间范围
  • 参数更改应先在非生产实例上测试
  • 删除备份不可撤销 — 删除前务必核实备份 ID
  • 使用审计日志进行合规和安全调查

注意事项

  • 所有会更改数据的操作(Create/Update/Delete/Restart/Resize/Restore)都需要用户明确确认
  • 凭证(AK/SK)从环境变量读取;禁止硬编码
  • CLI 是主要执行模式;CLI 命令不可用时,SDK 和 API 是备用方案
  • 日期格式:日志命令(--start_date/--end_date)使用带时区偏移的 ISO 8601 格式(例如 2026-08-04T00:00:00+0800);任务命令(--start_time/--end_time)使用 UTC epoch 毫秒
  • 日志/慢SQL 查询仅支持查询当前时间前一个月内的数据。日期格式使用带时区偏移的 ISO 8601(如 2026-08-04T00:00:00+0800),用 $(date -d '7 days ago' +%Y-%m-%dT00:00:00%z) 动态生成;注意不要使用 UTC 的 Z 结尾(...T00:00:00Z),实测会导致 DBS.01010023 报错。ListTasks/ListHistory* 等任务类命令的 --start_time/--end_time 需传 UTC 毫秒时间戳($(($(date -d '7 days ago' +%s)*1000)))。不要照抄过期的静态示例日期
  • 慢日志查询仅限最近 30 天
  • 此技能支持所有 RDS 引擎:MySQL、PostgreSQL、SQL Server、MariaDB、GaussDB(for MySQL)、TaurusDB
  • 引擎功能限制(MySQL) — 在 MySQL 上,以下读取命令会返回 DBS.280343(数据库引擎不允许此操作);这些命令仅在其他引擎上受支持,并非此技能存在缺陷:ListTopSqls、ShowTopObjects、ListVolumeInfo、ShowAvailableVersion、ValidateInstanceConnection(仅限 SQL Server)、ListHistoryTopSqls、ListHistorySessions、ListHistoryWaitEvents。在 MySQL 上,ShowBackupConfig/ShowRecoveryTimeWindow 也会返回 DBS.280238/DBS.280235。
  • 白名单权限限制 — ListInstanceBackupSummary/ShowBackupUsage 会返回 DBS.01280003(域名不在白名单中);这些命令需要由 Huawei Cloud 开通白名单权限。
  • ListEngineFlavors 要求使用单个 AZ(--availability_zone_ids=cn-north-4a);用逗号分隔的多个 AZ 会返回 DBS.280244。

评论

支持 Markdown