针对 Amazon RDS Custom for SQL Server 排查数据库的问题
RDS Custom 的责任共担模型提供了操作系统外壳级别的访问权限和数据库管理员访问权限。RDS Custom 会在您的账户中运行资源,与 Amazon RDS 不同,因为后者会在系统账户中运行资源。访问权限更多,责任也更大。在下面的各个部分中,您可以了解如何排查 Amazon RDS Custom for SQL Server 数据库实例的问题。
注意
本节介绍如何排查 RDS Custom for SQL Server 的问题。有关排查 RDS Custom for Oracle 的问题,请参阅针对 Amazon RDS Custom for Oracle 排查数据库问题。
主题
查看 RDS Custom 事件
对于 RDS Custom 和 Amazon RDS 数据库实例而言,查看事件的流程是相同的。有关更多信息,请参阅 查看 Amazon RDS 事件。
要使用 Amazon CLI 查看 RDS Custom 事件通知,请使用 describe-events
命令。RDS Custom 推出了几项新事件。事件类别与 Amazon RDS 的事件类别相同。有关事件列表,请参阅 的 Amazon RDS 事件类别和事件消息。
以下示例检索指定 RDS Custom 数据库实例发生的事件的详细信息。
aws rds describe-events \ --source-identifier my-custom-instance \ --source-type db-instance
订阅 RDS Custom 事件
对于 RDS Custom 和 Amazon RDS 数据库实例而言,订阅事件的流程是相同的。有关更多信息,请参阅 订阅 Amazon RDS 事件通知。
要使用 CLI 订阅 RDS Custom 事件通知,请使用 create-event-subscription
命令。包括以下必需参数:
-
--subscription-name
-
--sns-topic-arn
以下示例为当前的 Amazon 账户中的 RDS Custom 数据库实例创建了备份和恢复事件的订阅。您也可以将通知发送到 --sns-topic-arn
指定的 Amazon Simple Notification Service (Amazon SNS) 主题。
aws rds create-event-subscription \ --subscription-name my-instance-events \ --source-type db-instance \ --event-categories '["backup","recovery"]' \ --sns-topic-arn arn:aws:sns:us-east-1:123456789012:interesting-events
RDS Custom for SQL Server 的 CEV 错误故障排除
当您尝试创建 CEV 时,可能会失败。在这种情况下,RDS Custom 会发出 RDS-EVENT-0198
事件消息。有关查看 RDS 事件的更多信息,请参阅 的 Amazon RDS 事件类别和事件消息。
以下信息可帮助您解决可能的原因。
消息 | 故障排除建议 |
---|---|
|
在您从 AMI 创建的 EC2 实例上运行 Sysprep。有关使用 Sysprep 准备 AMI 的更多信息,请参阅使用 Sysprep 创建标准化的 Amazon 机器映像(AMI)。 |
|
验证您用于创建的账户和配置文件对所选 AMI 的 |
|
确认 |
|
确保 AMI 存在于同一个客户账户中。 |
|
AMI 的名称不正确。确保提供正确的 AMI ID。 |
|
选择支持的 AMI,该 AMI 具有 Windows Server 以及 SQL Server Enterprise、Standard 或 Web 版。从 EC2 Marketplace 选择具有以下使用情况操作代码之一的 AMI:
|
|
使用包含支持的 SQL Server 版本的 AMI。有关更多信息,请参阅 RDS Custom for SQL Server CEV 的版本支持。 |
|
不支持经典 RDS Custom for SQL Server 引擎版本。例如,版本 15.00.4073.23.v1。使用支持的版本号。 |
|
CEV 必须处于 |
|
目标 CEV 无效。检查对有效升级路径的要求。 |
|
遵循所需的 CEV 命名约定。有关更多信息,请参阅 RDS Custom for SQL Server CEV 的要求。 |
|
提供了不支持的数据库引擎版本。使用支持的数据库引擎版本。 |
|
使用基于 x86_64 架构构建的 AMI。 |
|
从您拥有权限的 AMI 创建 EC2 实例。在 EC2 实例上运行 Sysprep 以创建和保存基本映像。 |
|
使用在 Windows 平台上构建的 AMI。 |
|
使用 EBS 设备类型创建 AMI。 |
|
选择支持的 AMI,该 AMI 具有 Windows Server 以及 SQL Server Enterprise、Standard 或 Web 版。从 EC2 Marketplace 选择具有以下使用情况操作代码之一的 AMI:
|
|
确保 AMI 的状态为 |
|
使用支持的 Windows 操作系统。 |
|
确认日志文件在 |
|
使用操作系统编译版本最低为 14393 的 AMI。 |
|
使用最低操作系统主版本为 10.0 或更高版本的 AMI。 |
修复 RDS Custom for SQL Server 中不支持的配置
由于责任共担模式,您应负责修复导致 RDS Custom for SQL Server 数据库实例进入 unsupported-configuration
状态的配置问题。如果问题与 Amazon 基础设施有关,则您可以使用控制台或 Amazon CLI 修复该问题。如果问题与操作系统或数据库配置有关,则您可以登录到主机进行修复。
注意
本节介绍如何修复 RDS Custom for SQL Server 中不支持的配置。有关 RDS Custom for Oracle 的信息,请参阅修复 RDS Custom for Oracle 中不支持的配置。
在下表中,您可以找到支持外围所发送的通知和事件以及如何修复这些问题的说明。这些通知和支持外围可能会更改。有关支持外围的背景,请参阅RDS Custom 支持外围。有关事件描述,请参阅 的 Amazon RDS 事件类别和事件消息。
事件代码 | 配置区域 | RDS 事件消息 | 验证过程 |
---|---|---|---|
|
手动不支持的配置 |
|
要解决此问题,请创建支持案例。 |
Amazon 资源(基础设施) | |||
|
EC2 实例状态 |
|
要检查数据库实例的状态,请使用控制台或运行以下 Amazon CLI 命令:
|
|
EC2 实例状态 |
|
使用 Amazon CLI 命令检查数据库实例的状态:
您还可以使用 EC2 控制台检查 EC2 实例的状态。 要启动数据库实例,请使用控制台或运行以下 Amazon CLI 命令:
|
|
EC2 实例类 |
|
使用以下 CLI 命令可检查预期的数据库实例类:
|
|
无法访问 EBS 存储卷 |
|
|
|
EBS 存储卷已分离 |
|
重新附加 EBS 卷后,使用以下 CLI 命令检查 EBS 卷“volume-id”是否已正确附加到 RDS 实例:
|
|
EBS 存储卷大小 |
|
使用以下 CLI 命令比较 EBS 卷“volume-id”详细信息和 RDS 实例详细信息的卷大小:
使用以下 CLI 命令查看实际分配的卷大小:
|
|
EBS 存储卷配置 |
|
使用以下 CLI 命令比较 EBS 卷“volume-id”详细信息和 RDS 实例详细信息的卷类型。确保 EBS 级别的值与 RDS 级别的值相匹配:
要获取 RDS 级别的存储吞吐量的预期值,请执行以下操作:
要获取 RDS 级别的卷 IOPS 的预期值,请执行以下操作:
要获取 EC2 级别的当前存储类型,请执行以下操作:
要获取 EC2 级别的存储吞吐量的当前值,请执行以下操作:
要获取 EC2 级别的卷 IOPS 的当前值,请执行以下操作:
|
|
EBS 存储卷大小和配置 |
|
使用以下 CLI 命令比较 EBS 卷“volume-id”详细信息和 RDS 实例详细信息的卷类型。确保 EBS 级别的值与 RDS 级别的值相匹配:
要获取 RDS 级别的存储吞吐量的预期值,请执行以下操作:
要获取 RDS 级别的卷 IOPS 的预期值,请执行以下操作:
要获取 EC2 级别的当前存储类型,请执行以下操作:
要获取 EC2 级别的存储吞吐量的当前值,请执行以下操作:
要获取 EC2 级别的卷 IOPS 的当前值,请执行以下操作:
要获得预期的分配卷大小,请执行以下操作:
要获取实际的分配卷大小,请执行以下操作:
|
|
SQS 权限 |
|
|
|
SQS VPC 端点 |
|
|
操作系统 | |||
|
SQL 服务状态 |
|
|
|
RDS Custom 代理状态 |
|
|
|
SQS 权限 |
|
|
|
SQS VPC 端点 |
|
|
操作系统 | |||
|
SQL 服务状态 |
|
|
|
RDS Custom 代理状态 |
|
登录到主机并确保 RDS Custom 代理正在运行。 您可以使用以下命令来查看代理状态。
如果状态不是
如果代理无法启动,请检查 Windows 事件以了解其无法启动的原因。代理需要 Windows 用户才能启动该服务。确保 Windows 用户存在并且具有运行该服务的权限。 |
|
SSM 代理状态 |
|
有关更多信息,请参阅 SSM 代理故障排除。 要对 SSM 端点进行故障排除,请参阅无法连接到 SSM 端点和使用 ssm-cli 排查托管式节点可用性问题。 |
|
RDS Custom 代理登录 |
|
|
|
时区 |
|
运行 有关更多信息,请参阅 RDS Custom for SQL Server 数据库实例的本地时区。 |
|
高可用性软件解决方案版本 |
|
|
|
高可用性软件解决方案配置 |
|
|
数据库 | |||
|
SQL Server 共享内存协议 |
|
您可以通过检查 SQL Server 配置管理器 > SQL Server 网络配置 > MSSQLSERVER 的协议> 共享内存为“已启用”来验证这一点。启用协议后,重启 SQL Server 进程。 |
|
服务主密钥 |
|
|
|
服务主密钥 |
|
|
|
数据库引擎版本 |
|
运行以下查询以获取 SQL 版本:
运行以下 Amazon CLI 命令以获取 RDS SQL 引擎版本:
有关更多信息,请参阅修改 RDS Custom for SQL Server 数据库实例 和升级数据库实例引擎版本。 |
|
数据库引擎版本 |
|
运行以下查询可获取 SQL 版本:
运行以下 Amazon CLI 命令以获取 RDS SQL 引擎版本:
|
|
数据库引擎版本 |
|
运行以下查询以获取 SQL 版本:
运行以下 Amazon CLI 命令以获取 RDS SQL 引擎版本:
有关更多信息,请参阅修改 RDS Custom for SQL Server 数据库实例 和升级数据库实例引擎版本。 |
|
数据库文件位置 |
|
运行以下查询以列出不在默认路径中的数据库文件的位置:
|
在 RDS Custom for SQL Server 中排查 Storage-Full
问题
RDS Custom 会监控 RDS Custom for SQL Server 数据库实例的根(C:)和数据(D:)卷上的可用空间。当任一卷的可用磁盘空间低于 500 MiB 时,RDS Custom 会将实例状态更改为 Storage-Full
。要扩展实例存储,请参阅修改 RDS Custom for SQL Server 数据库实例的存储。
注意
扩展存储空间后,Storage-Full
中的实例可能需要花费 30 分钟时间来消除此问题。
对 RDS Custom for SQL Server 中启用 TDE 的数据库的 PENDING_RECOVERY 状态进行故障排除
如果自动解密遇到问题,启用了透明数据加密(TDE)的 SQL Server 数据库可能会保持 PENDING_RECOVERY
状态。如果源数据库实例服务主密钥(SMK)备份文件(存储在您账户的 RDS Custom 托管式 S3 存储桶中)在还原完成之前已被删除,则通常会在数据库实例还原后发生这种情况。
要启用自动解密并使启用 TDE 的数据库联机,需要使用密码打开数据库主密钥(DMK),然后使用 SMK 对 DMK 进行加密。
使用以下 SQL Server 命令作为参考:
-- Identify PENDING_RECOVERY TDE databases USE MASTER; GO SELECT name, is_encrypted, state_desc FROM sys.databases; GO -- Open DMK using password OPEN MASTER KEY DECRYPTION BY PASSWORD = '<password>'; GO -- Encrypt DMK using SMK ALTER MASTER KEY ADD ENCRYPTION BY SERVICE MASTER KEY; GO -- Close SMK CLOSE MASTER KEY; GO -- Bring the TDE databases online ALTER DATABASE <database_name> SET ONLINE; GO -- Verify TDE databases are now in ONLINE state SELECT name, is_encrypted, state_desc FROM sys.databases; GO