Amazon Relational Database Service
用户指南 (API Version 2014-10-31)
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。请点击 Amazon AWS 入门,可查看中国地区的具体差异

故障排除

以下部分可帮助您使用 Amazon RDS 排查您遇到的问题。

无法连接到 Amazon RDS 数据库实例

当您无法连接到数据库实例时,常见原因如下:

  • 由本地防火墙强制执行的访问规则与您在数据库实例的安全组中授权用于访问该实例的入口 IP 地址不同步。此问题很可能是由安全组中的入口规则所致。默认情况下,数据库实例不允许访问;访问权限是通过安全组授予的。若要授予访问权限,您必须使用针对您的情况的入口和出口规则创建自己的安全组。有关设置安全组的更多信息,请参阅通过创建安全组提供对 VPC 中的数据库实例的访问

  • 由于您的本地防火墙限制,无法使用您在创建数据库实例时指定的端口来发送和接收通信。在此情况下,请向您的网络管理员咨询以便确定您的网络是否允许指定端口用于入站和出站通信。

  • 您的数据库实例仍在创建中,尚不可用。根据数据库实例的大小,可能要用最长 20 分钟,实例才可用。

测试与 Amazon RDS 数据库实例的连接

您可使用常见 Linux 或 Windows 工具测试与数据库实例的连接。

可以从 Linux 或 Unix 终端测试此连接,方式为键入以下命令 (将 <DB-instance-endpoint> 替换为终端节点并将 <port> 替换为您的数据库实例的端口):

$nc -zv <DB-instance-endpoint> <port>

例如,下面显示了示例命令和返回值:

$nc -zv postgresql1.c6c8mn7tsdgv0.us-west-2.rds.amazonaws.com 8299 Connection to postgresql1.c6c8mn7tsdgv0.us-west-2.rds.amazonaws.com 8299 port [tcp/vvr-data] succeeded!

Windows 用户可使用 Telnet 测试与数据库实例的连接。请注意,Telnet 操作不支持除测试连接之外的用途。如果连接成功,则此操作不返回任何消息。如果连接失败,则您将收到一条错误消息,诸如以下内容:

C:\>telnet sg-postgresql1.c6c8mntzhgv0.us-west-2.rds.amazonaws.com 819 Connecting To sg-postgresql1.c6c8mntzhgv0.us-west-2.rds.amazonaws.com...Could not open connection to the host, on port 819: Connect failed

如果 Telnet 操作返回成功值,则您的安全组配置正确。

对连接身份验证进行故障排除

如果您可以连接到数据库实例,但收到身份验证错误,则您可能需要重置数据库实例的主用户密码。您可以通过修改 RDS 实例来做到这一点;有关更多信息,请参阅下列主题之一:

Amazon RDS 安全性问题

若要避免安全性问题,切勿使用用户账户的主 AWS 用户名和密码。最佳做法是使用您的主 AWS 账户来创建 IAM 用户并将这些用户分配给数据库用户账户。您还可使用您的主账户创建其他用户账户 (如有必要)。有关创建 IAM 用户的更多信息,请参阅创建 IAM 用户

错误消息“Failed to retrieve account attributes, certain console functions may be impaired.”

出现此错误的原因有多种;可能是因为您的账户缺少权限,或者您的账户未正确设置。如果您的账户是新账户,可能该账户还没准备好。如果是现有账户,您的访问策略中可能缺少执行特定操作的权限 (如,创建数据库实例)。要修复该问题,您的 IAM 管理员需要为您的账户提供必要的角色。有关更多信息,请参阅 IAM 文档。

重置数据库实例拥有者角色密码

您可以通过重置主密码来重置已为数据库实例分配的权限。例如,如果您将自己锁在 SQL Server 数据库上的 db_owner 角色之外,则可以通过修改数据库实例主密码来重置 db_owner 角色密码。通过更改数据库实例密码,您可以重新获取对数据库实例的访问权限、使用 db_owner 的已修改密码访问数据库以及为 db_owner 角色还原可能意外撤消的权限。您可以使用 Amazon RDS 控制台、AWS CLI 命令 modify-db-instance 或者使用 ModifyDBInstance 操作更改数据库实例密码。有关修改 SQL Server 数据库实例的更多信息,请参阅 修改运行 Microsoft SQL Server 数据库引擎的数据库实例

Amazon RDS 数据库实例中断或重启

在以下情况下可能出现数据库实例中断:重新引导数据库实例,将数据库实例置于某种禁止对其访问的状态,以及重新启动数据库。当您手动重新引导数据库实例时或当您更改需要在重新引导后才生效的数据库实例设置时,可能会发生重新引导。 

当您修改数据库实例的设置时,您可通过使用“立即应用”设置来确定应用更改的时间。要查看显示数据库实例操作的表以及设置“立即应用”值的效果,请参阅修改 Amazon RDS 数据库实例和使用“Apply Immediately”参数

仅当您更改需要重新引导的设置或手动引起重新引导时,才会发生数据库实例重新引导。如果您更改某个设置并请求此更改立即生效,则可能会立即发生重新引导;或者,可能在数据库实例的维护时段内发生重新引导。

在出现下列情况之一时,会立即发生数据库实例重新引导:

  • 将数据库实例的备份保留期从 0 更改为非零值或从非零值更改为 0 并将“立即应用”设置为 true

  • 更改数据库实例类,并将“立即应用”设置为 true

  • 将存储类型从 Magnetic (Standard) 更改为 General Purpose (SSD) 或 Provisioned IOPS (SSD),或是从 Provisioned IOPS (SSD)General Purpose (SSD) 更改为 Magnetic (Standard)。从标准到 PIOPS。

在维护时段内,如果出现下列情况之一,则会发生数据库实例重新引导:

  • 将数据库实例的备份保留期从 0 更改为非零值或从非零值更改为 0 并将“立即应用”设置为 false

  • 更改数据库实例类,并将“立即应用”设置为 false

当您更改数据库参数组中的静态参数时,在与该参数组关联的数据库实例重新引导之前,此更改将不会生效。更改需要手动重新引导;数据库实例在维护时段间将不会自动重新引导。

Amazon RDS 数据库参数更改未生效

如果更改数据库参数组中的参数,但未看到更改生效,则您很可能需要重新引导与数据库参数组关联的数据库实例。当您更改动态参数时,更改将立即生效;当您更改静态参数时,更改将在您重新引导与参数组关联的数据库实例后生效。

您可通过使用 RDS 控制台或显式调用 RebootDbInstance API 操作来重新引导数据库实例 (没有故障转移,前提是数据库实例处于Multi-AZ deployment中)。在静态参数更改后重新引导关联的数据库实例的要求可帮助缓解影响 API 调用的参数误配置的风险,例如调用 ModifyDBInstance 来更改数据库实例类或扩展存储。有关更多信息,请参阅 修改数据库参数组中的参数

Amazon RDS 数据库实例用尽存储空间

如果数据库实例用尽存储空间,则该实例可能不再可用。我们强烈建议您持续监控 CloudWatch 内发布的 FreeStorageSpace 指标,以确保数据库实例具有足够的可用存储空间。

如果数据库实例用尽存储空间,它的状态会变为 Storage-full。例如,为存储空间已用尽的数据库实例调用 DescribeDBInstances 操作将输出:

aws rds describe-db-instances --db-instance-identifier mydbinstance DBINSTANCE mydbinstance 2009-12-22T23:06:11.915Z db.m3.large mysql5.6 50 sa storage-full mydbinstance.clla4j4jgyph.us-east-1.rds.amazonaws.com 3306 us-east-1b 3 SECGROUP default active PARAMGRP default.mysql5.6 in-sync

要从这种情况下恢复,请使用 ModifyDBInstance 操作或以下 AWS CLI 命令为实例添加更多存储空间:

针对 Linux、OS X 或 Unix:

aws rds modify-db-instance \ --db-instance-identifier mydbinstance \ --allocated-storage 60 \ --apply-immediately

对于 Windows:

aws rds modify-db-instance ^ --db-instance-identifier mydbinstance ^ --allocated-storage 60 ^ --apply-immediately
DBINSTANCE mydbinstance 2009-12-22T23:06:11.915Z db.m3.large mysql5.6 50 sa storage-full mydbinstance.clla4j4jgyph.us-east-1.rds.amazonaws.com 3306 us-east-1b 3 60 SECGROUP default active PARAMGRP default.mysql5.6 in-sync

现在,当您描述您的数据库实例时,您将看到数据库实例处于“正在修改”状态,这表示正在扩展存储。

aws rds describe-db-instances --db-instance-identifier mydbinstance
DBINSTANCE mydbinstance 2009-12-22T23:06:11.915Z db.m3.large mysql5.6 50 sa modifying mydbinstance.clla4j4jgyph.us-east-1.rds.amazonaws.com 3306 us-east-1b 3 60 SECGROUP default active PARAMGRP default.mysql5.6 in-sync

存储扩展完成后,您的数据库实例状态将变为“可用”

aws rds describe-db-instances --db-instance-identifier mydbinstance
DBINSTANCE mydbinstance 2009-12-22T23:06:11.915Z db.m3.large mysql5.6 60 sa available mydbinstance.clla4j4jgyph.us-east-1.rds.amazonaws.com 3306 us-east-1b 3 SECGROUP default active PARAMGRP default.mysql5.6 in-sync

请注意,当您的存储空间用尽后,您可以使用 DescribeEvents 操作接收通知。例如,在这种情况下,如果在完成这些操作后执行 DescribeEvents 调用,您将看到以下输出:

aws rds describe-events --source-type db-instance --source-identifier mydbinstance
2009-12-22T23:44:14.374Z mydbinstance Allocated storage has been exhausted db-instance 2009-12-23T00:14:02.737Z mydbinstance Applying modification to allocated storage db-instance 2009-12-23T00:31:54.764Z mydbinstance Finished applying modification to allocated storage

Amazon RDS 数据库实例容量不足

如果在尝试修改数据库实例类时遇到 InsufficientDBInstanceCapacity 错误,可能是由于数据库实例位于 EC2-Classic 平台上,因此不在 VPC 中。有些数据库实例类需要 VPC。例如,如果您在 EC2-Classic 平台上,并尝试通过切换到需要 VPC 的数据库实例类来增加容量,则会导致此错误。有关仅在 VPC 中可用的 Amazon Elastic Compute Cloud 实例类型的信息,请参阅 Amazon Elastic Compute Cloud 用户指南 中的仅在 VPC 中可用的实例类型

要更正此问题,您可以将数据库实例移到 VPC。有关更多信息,请参阅 将不在 VPC 中的数据库实例移动到 VPC 中

有关修改 数据库实例的信息,请参阅修改 Amazon RDS 数据库实例和使用“Apply Immediately”参数。有关排查 Amazon EC2 的实例容量问题的信息,请参阅 Amazon Elastic Compute Cloud 用户指南 中的排查实例的容量问题

Amazon RDS MySQL 和 MariaDB 问题

索引合并优化返回错误结果

此问题仅适用于 MySQL 数据库实例。

使用索引合并优化的查询可能因 MySQL 5.5.37 中引入的 MySQL 查询优化程序而返回错误结果。当您发出针对一个带多条索引的表的查询时,此优化程序将基于多条索引扫描一系列行,但无法正确地合并这些结果。有关查询优化程序错误的详细信息,请转至 MySQL 错误数据库中的 http://bugs.mysql.com/bug.php?id=72745http://bugs.mysql.com/bug.php?id=68194

例如,假设发出针对一个带两条索引的表的查询,其中搜索参数会引用索引列。

SELECT * FROM table1 WHERE indexed_col1 = 'value1' AND indexed_col2 = 'value2';

在此情况下,搜索引擎将搜索这两条索引。但由于出现错误,导致合并结果不正确。

要解决此问题,您可以执行下列操作之一:

  • 在 MySQL 数据库实例的数据库参数组中将 optimizer_switch 参数设置为 index_merge=off。有关设置数据库参数组参数的信息,请参阅使用数据库参数组

  • 将 MySQL 数据库实例升级到 MySQL 版本 5.6 或 5.7。有关更多信息,请参阅升级 MySQL 数据库快照

  • 如果无法升级实例或更改 optimizer_switch 参数,您可以通过显式标识查询的索引来纠正错误,例如:

    SELECT * FROM table1 USE INDEX covering_index WHERE indexed_col1 = 'value1' AND indexed_col2 = 'value2';

有关更多信息,请转至索引合并优化

诊断并解决只读副本之间的滞后

在创建一个 MySQL 或 MariaDB 只读副本且该只读副本可用后,Amazon RDS 首先将复制自只读副本操作启动以来对源数据库实例所做的更改。在此期间,只读副本的复制滞后时间将大于 0。您可在 Amazon CloudWatch 中通过查看 Amazon RDS ReplicaLag 指标来监控此滞后时间。

ReplicaLag 指标报告 MySQL 或 MariaDB SHOW SLAVE STATUS 命令的 Seconds_Behind_Master 字段的值。想要了解更多信息,请参阅 SHOW SLAVE STATUS。当 ReplicaLag 指标达到 0 时,即表示副本已赶上源数据库实例进度。如果 ReplicaLag 指标返回 -1,则副本可能为未激活状态。要纠正复制错误,请参阅诊断并解决 MySQL 或 MariaDB 读取复制失败ReplicaLag 值为 -1 还可能意味着 Seconds_Behind_Master 值无法确定或为 NULL

ReplicaLag 指标将在网络中断期间或在维护时段内应用修补程序时返回 -1。在这种情况下,在再次检查 ReplicaLag 指标之前,需等待网络连接恢复或维护时段结束。

由于 MySQL 和 MariaDB 读取复制技术为异步式,因此预计源数据库实例上的 BinLogDiskUsage 指标和只读副本上的 ReplicaLag 指标偶尔会增加。例如,可并行向源数据库实例执行大量写入操作,同时使用一个 IO 线程将向只读副本执行的写入操作序列化,这会导致源实例与只读副本之间产生滞后。有关只读副本和 MySQL 的更多信息,请转至 MySQL 文档中的复制实施详细信息。有关只读副本和 MariaDB 的更多信息,请转到 MariaDB 文档中的复制概述

您可降低对源数据库实例的更新与对只读副本的后续更新之间的滞后,方式如下:

  • 将只读副本的数据库实例类的存储大小设置为与源数据库实例的类似。

  • 确保源数据库实例和只读副本使用的数据库参数组中的参数设置兼容。有关更多信息和示例,请参阅下一部分中有关 max_allowed_packet 参数的讨论。

  • 禁用查询缓存。对于经常修改的表,使用查询缓存可能会加大副本滞后,因为缓存已锁定且会频繁刷新。如果是这样的话,您可能会发现在禁用查询缓存的情况下副本滞后较少。您可通过在数据库实例的数据库参数组中将 query_cache_type parameter 设置为 0 来禁用查询缓存。有关查询缓存的更多信息,请参阅查询缓存配置

  • 在只读副本上为适用于 MySQL 的 InnoDB 或适用于 MariaDB 的 XtraDB 预热。如果您有少量要经常更新的表,并且您使用的是 InnoDB 或 XtraDB 表架构,则在只读副本上转储这些表。这样做将促使数据库引擎从磁盘扫描这些表的行,然后将它们缓存到缓冲池中,从而减少副本滞后。下面是一个示例。

    针对 Linux、OS X 或 Unix:

    PROMPT> mysqldump \ –h <endpoint> \ --port=<port> \ -u=<username> \ -p <password> \ database_name table1 table2 > /dev/null

    对于 Windows:

    PROMPT> mysqldump ^ –h <endpoint> ^ --port=<port> ^ -u=<username> ^ -p <password> ^ database_name table1 table2 > /dev/null

诊断并解决 MySQL 或 MariaDB 读取复制失败

Amazon RDS 监控只读副本的复制状态,如果由于任何原因停止复制,则将只读副本实例的 Replication State 字段更新为 Error。您可通过查看 Replication Error 字段,检查 MySQL 或 MariaDB 引擎引发的关联错误的详细信息。还生成指示只读副本状态的事件,包括 RDS-EVENT-0045RDS-EVENT-0046RDS-EVENT-0047。有关这些事件和事件订阅的详细信息,请参阅 使用 Amazon RDS 事件通知。如果返回 MySQL 错误消息,则检查 MySQL 错误消息文档中的错误。如果返回 MariaDB 错误消息,则检查 MariaDB 错误消息文档中的错误。

可导致复制出错的常见情况包括:

  • 只读副本的 max_allowed_packet 参数的值小于源数据库实例的 max_allowed_packet 参数。

    max_allowed_packet 参数是一个自定义参数,可在数据库参数组中设置它,用于指定可在数据库上执行的数据操作语言 (DML) 的最大大小。如果源数据库实例的 max_allowed_packet 参数值小于只读副本的 max_allowed_packet 参数值,则复制过程会引发错误并停止复制。最常见的错误是 packet bigger than 'max_allowed_packet' bytes。可通过让源和只读副本使用 max_allowed_packet 参数值相同的数据库参数组来纠正该错误。

  • 对只读副本上的表进行写入操作。如果是在只读副本上创建索引,则需要将 read_only 参数设置为 0 才能创建索引。如果对只读副本上的表进行写入操作,则会中断复制。

  • 使用非事务性存储引擎,如 MyISAM。只读副本需要使用事务性存储引擎。只有适用于 MySQL 的 InnoDB 存储引擎和适用于 MariaDB 的 XtraDB 存储引擎支持复制。

    您可使用以下命令将 MyISAM 表转换为 InnoDB:

    alter table <schema>.<table_name> engine=innodb;

  • 使用不安全的非确定性查询,如 SYSDATE()。有关详细信息,请参阅 Determination of Safe and Unsafe Statements in Binary Logging (确定二进制日志记录中的安全和不安全语句)。

下列步骤可帮助您纠正复制错误:

  • 如果您遇到逻辑错误并且您可安全跳过此错误,则可执行跳过当前的复制错误中所述的步骤。您的 MySQL 或 MariaDB 数据库实例必须运行包括 mysql_rds_skip_repl_error 过程的版本。有关更多信息,请参阅 mysql.rds_skip_repl_error

  • 如果您遇到二进制日志位置问题,则可使用 mysql_rds_next_master_log 命令更改从属重播位置。您的 MySQL 或 MariaDB 数据库实例必须运行支持 mysql_rds_next_master_log 命令的版本以便更改从属重播位置。有关版本信息,请参阅mysql.rds_next_master_log

  • 如果您遇到因高 DML 负载导致的临时性能问题,则可在只读副本的数据库参数组中将 innodb_flush_log_at_trx_commit 参数设置为 2。这样做有助于只读副本保持同步,但这会临时降低原子性、一致性、隔离和持久性 (ACID) 属性。

  • 您可删除只读副本,然后使用相同的数据库实例标识符创建实例,以使终端节点保持与旧只读副本的终端节点相同。

如果复制错误得到纠正,则 Replication State 将更改为 replicating。有关更多信息,请参阅 解决 MySQL 或 MariaDB 只读副本问题

在启用二进制日志记录的情况下创建触发器需要 SUPER 权限

当尝试在 RDS MySQL 或 MariaDB 数据库实例中创建触发器时,您可能会收到以下错误:

"You do not have the SUPER privilege and binary logging is enabled"

在启用了二进制日志记录时使用触发器需要 SUPER 权限 (对于 RDS MySQL 和 MariaDB 数据库实例会限制该权限)。您可以通过将 log_bin_trust_function_creators 参数设置为 true,在启用了二进制日志记录时创建触发器而无需 SUPER 权限。要将 log_bin_trust_function_creators 设置为 true,请创建新的数据库参数组或修改现有数据库参数组。

要创建允许您在启用了二进制日志记录的情况下在 RDS MySQL 或 MariaDB 数据库实例中创建触发器的新数据库参数组,请使用以下 CLI 命令。要修改现有参数组,请从步骤 2 开始。

使用 CLI 创建新参数组以允许在启用了二进制日志记录时使用触发器

  1. 创建新的参数组。

    针对 Linux、OS X 或 Unix:

    aws rds create-db-parameter-group \ --db-parameter-group-name allow-triggers \ --db-parameter-group-family mysql15.5 \ --description "parameter group allowing triggers"

    对于 Windows:

    aws rds create-db-parameter-group ^ --db-parameter-group-name allow-triggers ^ --db-parameter-group-family mysql15.5 ^ --description "parameter group allowing triggers"
  2. 修改数据库参数组以允许使用触发器。

    针对 Linux、OS X 或 Unix:

    aws rds modify-db-parameter-group \ --db-parameter-group-name allow-triggers \ --parameters "name=log_bin_trust_function_creators,value=true, method=pending-reboot"

    对于 Windows:

    aws rds modify-db-parameter-group ^ --db-parameter-group-name allow-triggers ^ --parameters "name=log_bin_trust_function_creators,value=true, method=pending-reboot"
  3. 修改数据库实例以使用新的数据库参数组。

    针对 Linux、OS X 或 Unix:

    aws rds modify-db-instance \ --db-instance-identifier mydbinstance \ --db-parameter-group-name allow-triggers \ --apply-immediately

    对于 Windows:

    aws rds modify-db-instance ^ --db-instance-identifier mydbinstance ^ --db-parameter-group-name allow-triggers ^ --apply-immediately
  4. 要使更改生效,请手动重启数据库实例。

    aws rds reboot-db-instance mydbinstance

诊断并解决时间点还原失败

还原包含临时表的数据库实例

在尝试对 MySQL 或 MariaDB 数据库实例进行时间点还原 (PITR) 时,您可能遇到以下错误:

Database instance could not be restored because there has been incompatible database activity for restore functionality. Common examples of incompatible activity include using temporary tables, in-memory tables, or using MyISAM tables. In this case, use of Temporary table was detected.

PITR 依靠 MySQL 或 MariaDB 中的备份快照和二进制日志将数据库实例还原为特定时间的状态。二进制日志中的临时表信息不可靠,并且可能导致 PITR 失败。如果您在 MySQL 或 MariaDB 数据库实例中使用临时表,则可通过执行更频繁的备份来最大程度地降低 PITR 失败的可能性。在创建临时表和下一次备份快照之间的时间点最可能发生 PITR 失败。

还原包含内存表的数据库实例

在还原具有内存表的数据库时,您可能会遇到问题。重新启动过程中将清空内存表。因此,您的内存表在重新启动后可能为空。我们建议在使用内存表时,构建解决方案以便在重新启动时处理空表。如果您将内存表用于复制的数据库实例,则当只读副本重新引导且无法从空内存表还原数据时,可能需要在重新启动后重新创建只读副本。

有关备份和 PITR 的更多信息,请参阅使用备份将数据库实例还原至指定时间

从属关闭或禁用错误

调用 mysql.rds_skip_repl_error 命令时,您可能会收到以下错误消息:Slave is down or disabled.

出现此错误消息是由于复制已停止且无法重新启动。

如果您需要跳过大量错误,复制滞后时间可能会超出二进制日志文件的默认保留期。在这种情况下,您可能会遇到一个因二进制日志文件在副本上进行重放之前被清除而引发的严重错误。此清除会导致复制停止,而您将无法再调用 mysql.rds_skip_repl_error 命令以跳过复制错误。

您可以通过增加二进制日志文件在复制主体上保留的小时数来缓解此问题。在增加二进制日志保留时间后,您可以重启复制进程,并根据需要调用 mysql.rds_skip_repl_error 命令。

要设置二进制日志保留时间,请使用 mysql.rds_set_configuration 过程,并指定二进制日志保留小时数的配置参数以及要在数据库群集上保留二进制日志文件的小时数 (最多 720 个小时,即 30 天)。以下示例将二进制日志文件的保留期设置为 48 个小时:

CALL mysql.rds_set_configuration('binlog retention hours', 48);

只读副本创建失败或复制中断,出现严重错误 1236

在更改 MySQL 或 MariaDB 数据库实例的默认参数值后,您可能会遇到下列问题之一:

  • 您无法创建数据库实例的只读副本。

  • 复制失败,出现 fatal error 1236

MySQL 或 MariaDB 数据库实例的一些默认参数值可帮助您确保数据库与 ACID 兼容,并且读取副本是崩溃安全的,方式是通过在提交事务之前将事务写入二进制日志来确保每次提交均完全同步。在尚未将事务写入二进制日志的情况下,如果更改这些参数的默认值来提高性能,则可能会导致复制失败。

要解决此问题,请设置以下参数值:

  • sync-binlog = 1

  • innodb_support_xa = 1

  • innodb_flush_log_at_trx_commit = 1

Amazon Aurora 问题

设备上无剩余空间错误

您可能会遇到 Amazon Aurora 发出的以下错误消息:

ERROR 3 (HY000): Error writing file '/rdsdbdata/tmp/XXXXXXXX' (Errcode: 28 - No space left on device)

Amazon Aurora 数据库群集中的每个数据库实例都使用本地 SSD 存储为会话存储临时表。临时表的此本地存储不会像 Aurora 群集卷一样自动增长。相反,本地存储量是有限的。该限制取决于数据库群集中的数据库实例的数据库实例类。要了解 R3 数据库实例类型的本地 SSD 存储量,请参阅内存优化 R3 实例

如果无法修改工作负载以减少所需的临时存储容量,则您可以扩展数据库实例以使用具有更多本地 SSD 存储的数据库实例类。

Amazon RDS Oracle GoldenGate 问题

将日志保留足够的时间

源数据库必须保留存档重做日志。日志保留持续时间是以小时为单位指定的。持续时间应超过源实例的任何可能的停机时间或者源实例的任何可能的通信或联网问题的持续时间,以便 Oracle GoldenGate 能够根据需要从源实例恢复日志。所需的绝对最小值是将日志保留一 (1) 小时。如果未启用日志保留,或者保留值太小,则将收到以下消息:

2014-03-06 06:17:27 ERROR OGG-00446 error 2 (No such file or directory) opening redo log /rdsdbdata/db/GGTEST3_A/onlinelog/o1_mf_2_9k4bp1n6_.log for sequence 1306Not able to establish initial position for begin time 2014-03-06 06:16:55.

无法连接到 Amazon RDS SQL Server 数据库实例

如果您在使用 SQL Server Management Studio 连接到数据库实例时遇到问题,通常有如下原因:

  • 由本地防火墙强制执行的访问规则与您在数据库实例的安全组中授权用于访问该实例的 IP 地址不同步。如果您将数据库实例的终端节点和端口与 Microsoft SQL Server Management Studio 结合使用且无法连接,则问题很可能是由防火墙上的入口和出口规则所致。若要授予访问权限,您必须使用针对您的情况的入口和出口规则创建自己的安全组。有关安全组的更多信息,请参阅 Amazon RDS 个安全组

  • 由于您的本地防火墙限制,无法使用您在创建数据库实例时指定的端口来发送和接收通信。在此情况下,请向您的网络管理员咨询以便确定您的网络是否允许指定端口用于入站和出站通信。

  • 您的数据库实例仍在创建中,尚不可用。根据数据库实例的大小,可能要用最长 20 分钟,实例才可用。

如果您可以通过所指定的端口发送和接收通信,请查看以下 SQL Server 错误:

  • 无法打开与 SQL Server 的连接 - Microsoft SQL Server,错误: 53 – 如果使用 Microsoft SQL Server Management Studio,则在指定服务器名称时必须包含端口号。例如,数据库实例的服务器名称 (包括端口号) 可以为:sqlsvr-pdz.c6c8mdfntzgv0.region.rds.amazonaws.com,1433

  • 无法连接,因为目标计算机主动拒绝连接 - Microsoft SQL Server,错误: 10061 – 在此情况下,您能够访问数据库实例,但是连接被拒绝。此错误通常是由用户名或密码不正确所致。

无法连接到 Amazon RDS PostgreSQL 数据库实例

尝试连接到 PostgreSQL 数据库实例时最常出现的问题是,分配给该数据库实例的安全组具有不正确的访问规则。默认情况下,数据库实例不允许访问;访问权限是通过安全组授予的。若要授予访问权限,您必须使用针对您的情况的入口和出口规则创建自己的安全组。有关为数据库实例创建安全组的更多信息,请参阅通过创建安全组提供对 VPC 中的数据库实例的访问

最常见的错误是 could not connect to server: Connection timed out。如果发生此错误,则确认主机名是该数据库实例的终端节点,并且端口号正确无误。确认分配给该数据库实例的安全组具有必要的规则以允许通过您的本地防火墙进行访问。