Amazon Microsoft SQL Server, MySQL, Oracle Database Instance Relational Database Services 用户指南
PDF
Document
Advertisement
Advertisement
Amazon Relational Database
Service
用户指南
API Version 2013-05-15
Amazon Relational Database Service 用户指南
Amazon Relational Database Service: 用户指南
Copyright © 2013 Amazon Web Services, Inc. and/or its affiliates. All rights reserved.
The following are trademarks or registered trademarks of Amazon: Amazon, Amazon.com, Amazon.com
Design, Amazon DevPay, Amazon EC2, Amazon Web Services Design, AWS, CloudFront, EC2, Elastic
Compute Cloud, Kindle, and Mechanical Turk. In addition, Amazon.com graphics, logos, page headers,
button icons, scripts, and service names are trademarks, or trade dress of Amazon in the U.S. and/or other
countries. Amazon's trademarks and trade dress may not be used in connection with any product or service
that is not Amazon's, in any manner that is likely to cause confusion among customers, or in any manner
that disparages or discredits Amazon.
All other trademarks not owned by Amazon are the property of their respective owners, who may or may
not be affiliated with, connected to, or sponsored by Amazon.
Amazon Relational Database Service 用户指南
什么是 Amazon Relational Database Service? ..................................................................................... 1
Amazon RDS 最佳实践 ........................................................................................................................... 6
Amazon RDS 入门 .................................................................................................................................. 8
Amazon RDS 术语和概念 ..................................................................................................................... 32
数据库实例 ............................................................................................................................................ 32
数据库实例类 ......................................................................................................................................... 34
Amazon RDS 存储 ................................................................................................................................ 35
地区和可用区域 ..................................................................................................................................... 37
高可用性 ................................................................................................................................................ 38
数据库实例维护 ..................................................................................................................................... 39
Amazon RDS 和 Amazon Virtual Private Cloud 服务 ............................................................................ 40
数据库实例备份 ..................................................................................................................................... 42
复制数据库实例 ..................................................................................................................................... 45
AWS Identity and Access Management ................................................................................................ 46
管理对 Amazon RDS 资源和数据库的访问 ........................................................................................... 48
使用 AWS Identity and Access Management (IAM) 管理对 Amazon RDS 资源的访问 ........................ 49
Amazon RDS 安全组 ............................................................................................................................. 60
在 Amazon RDS 上使用 MySQL ........................................................................................................... 64
使用 MySQL 数据库实例 ....................................................................................................................... 69
创建运行 MySQL 数据库引擎的数据库实例 ................................................................................. 69
与运行 MySQL 数据库引擎的数据库实例连接 ............................................................................. 76
修改运行 MySQL 数据库引擎的数据库实例 ................................................................................. 78
从 MySQL 数据库实例导入和导出数据 ........................................................................................ 80
从现有 MySQL 数据库导入离线数据 .................................................................................. 83
从不在 Amazon RDS 中运行的 MySQL 数据库导入数据 ................................................... 83
从任意源将数据导入 MySQL 数据库实例 ........................................................................... 85
使用复制导出 MySQL 5.6 数据 ........................................................................................... 88
使用只读副本 ............................................................................................................................... 91
附录:MySQL 的数据库管理员常见任务 ............................................................................................... 97
附录:MySQL 数据库引擎选项 ........................................................................................................... 101
附录:MySQL Amazon RDS SQL 参考 .............................................................................................. 104
mysql.rds_set_external_master ................................................................................................. 104
mysql.rds_reset_external_master .............................................................................................. 105
mysql.rds_start_replication ........................................................................................................ 106
mysql.rds_stop_replication ......................................................................................................... 106
mysql_rds_skip_repl_error ......................................................................................................... 107
mysql.rds_next_master_log ....................................................................................................... 107
在 Amazon RDS 上使用 Oracle .......................................................................................................... 109
使用 Oracle 数据库实例 ...................................................................................................................... 113
创建运行 Oracle 数据库引擎的数据库实例 ................................................................................ 113
与运行 Oracle 数据库引擎的数据库实例连接 ............................................................................ 120
修改运行 Oracle 数据库引擎的数据库实例 ................................................................................ 122
在 Amazon RDS 上将数据导入到 Oracle ................................................................................... 124
附录:Oracle 数据库引擎选项 ............................................................................................................. 129
附录:Oracle 的数据库管理员常用任务 .............................................................................................. 137
附录:Amazon RDS 内支持的 Oracle 字符集 ..................................................................................... 143
附录:Oracle 数据库引擎修补程序构成信息 ....................................................................................... 145
在 Amazon RDS 上使用 Microsoft SQL Server ................................................................................... 149
使用 SQL Server 数据库实例 .............................................................................................................. 155
创建运行 Microsoft SQL Server 数据库引擎的数据库实例 ........................................................ 156
连接运行 Microsoft SQL Server 数据库引擎的数据库实例 ........................................................ 162
修改运行 Microsoft SQL Server 数据库引擎的数据库实例 ........................................................ 166
将数据导入 Amazon RDS 上的 SQL Server .............................................................................. 168
附录:Microsoft SQL Server 的数据库管理员常见任务 ...................................................................... 175
所有 Amazon RDS 数据库引擎的常用任务 ......................................................................................... 181
更改数据库实例 ................................................................................................................................... 181
重命名数据库实例 ...................................................................................................................... 181
删除数据库实例 .......................................................................................................................... 184
API Version 2013-05-15
3
Amazon Relational Database Service 用户指南
重启数据库实例 .......................................................................................................................... 187
为 Amazon RDS 资源加标签 ..................................................................................................... 188
升级数据库实例 .......................................................................................................................... 196
备份和还原数据库实例 ........................................................................................................................ 198
使用自动备份 ............................................................................................................................. 199
创建数据库快照 .......................................................................................................................... 202
从数据库快照中还原 .................................................................................................................. 204
复制数据库快照 .......................................................................................................................... 206
将数据库实例还原至指定时间 .................................................................................................... 208
使用 Amazon RDS 功能 ...................................................................................................................... 209
使用选项组 ................................................................................................................................. 210
创建选项组 ....................................................................................................................... 211
将选项添加到选项组 ......................................................................................................... 212
列出选项组的选项和选项设置 ........................................................................................... 214
修改选项设置 .................................................................................................................... 214
从选项组中移除选项 ......................................................................................................... 215
使用数据库参数组 ...................................................................................................................... 218
数据库参数值 .................................................................................................................... 226
使用数据库安全组 ...................................................................................................................... 229
创建数据库安全组 ............................................................................................................. 229
列出可用的数据库安全组 .................................................................................................. 233
查看数据库安全组 ............................................................................................................. 233
从 IP 范围向数据库安全组授予网络访问权限 ................................................................... 235
授权从 Amazon EC2 实例通过网络访问数据库实例 ........................................................ 237
撤消从 IP 范围到数据库实例的网络访问权限 ................................................................... 239
使用预留数据库实例 .................................................................................................................. 242
描述可用预留数据库实例服务 ........................................................................................... 243
购买预留数据库实例 ......................................................................................................... 246
描述预留数据库实例 ......................................................................................................... 248
将 Amazon RDS 与 Amazon Virtual Private Cloud 结合使用 .................................................... 252
确定是否具有默认 VPC .................................................................................................... 252
在 VPC 中创建数据库实例 ................................................................................................ 253
步骤 1:创建 Virtual Private Cloud (VPC) .............................................................. 253
步骤 2:创建数据库子网组 ..................................................................................... 254
步骤 3:创建 VPC 安全组 ....................................................................................... 255
步骤 4:在 VPC 中创建数据库实例 ........................................................................ 255
使用预置 IOPS 存储 ................................................................................................................... 257
修改数据库实例以使用预置 IOPS 存储 ............................................................................ 260
修改使用预置 IOPS 存储的数据库实例的 IOPS 和存储设置 ............................................ 262
创建使用预置 IOPS 存储的数据库实例 ............................................................................ 263
创建使用预置 IOPS 存储的只读副本 ................................................................................ 265
调整首选维护时段 ...................................................................................................................... 266
监视数据库实例 ................................................................................................................................... 269
查看数据库实例指标 ............................................................................................................................ 270
使用 Amazon RDS 事件通知 ............................................................................................................... 273
查看 Amazon RDS 事件 ...................................................................................................................... 286
使用数据库日志文件 ............................................................................................................................ 288
使用 MySQL 数据库日志文件 .................................................................................................... 288
使用 Oracle 数据库日志文件 ...................................................................................................... 290
使用 SQL Server 数据库日志文件 .............................................................................................. 292
查看和列出数据库日志文件 ........................................................................................................ 293
下载数据库日志文件 .................................................................................................................. 296
监视数据库日志文件 .................................................................................................................. 299
使用 Amazon RDS API ....................................................................................................................... 302
使用查询 API ....................................................................................................................................... 302
使用 SOAP API ................................................................................................................................... 304
可用的库 .............................................................................................................................................. 308
对应用程序进行问题排查 ..................................................................................................................... 308
API Version 2013-05-15
4
Amazon Relational Database Service 用户指南
文档历史记录 ....................................................................................................................................... 310
Amazon RDS 资源 .............................................................................................................................. 313
API Version 2013-05-15
5
Amazon Relational Database Service 用户指南
什么是 Amazon Relational Database
Service?
Topics
• Amazon RDS 组件 (p. 2)
• 可用 RDS 接口 (p. 3)
• Amazon RDS 付费方法 (p. 4)
• 监控 Amazon RDS 数据库实例 (p. 5)
• 接下来做什么? (p. 5)
Amazon Relational Database Service (Amazon RDS) 是一种 Web 服务,可让用户更轻松地在云中设置、
操作和扩展关系数据库。它可以为行业标准关系数据库提供有成本效益的可调容量,并可以应对常见的数
据库管理任务。
为什么需要托管的关系数据库服务?因为 Amazon RDS 接收许多关系数据库的困难或繁琐的管理任务。
• 购买服务器时,您将获得的服务器已将 CPU、内存、存储和 IOPS 都捆绑在一起。利用 Amazon RDS,
您可以将这些部分进行拆分,以便单独对其进行扩展。因此,举例来说,如果您需要更多 CPU、更少
IOPS 或者更多存储,则可轻松进行分配。
• Amazon RDS 用于管理备份、软件修补,自动故障检测和恢复。
• 为了让用户获得托管式服务体验,Amazon RDS 未提供对数据库实例的 Shell 访问权限,并且限制对需
要高级特权的某些系统程序和表的访问权限。
• 您可以在需要时执行自动备份,或创建自己的备份快照。这些备份可用于还原数据库,而 Amazon RDS
的还原进程能够高效可靠地完成任务。
• 采用主实例和出现问题时可以故障转移的辅助同步实例,您可以实现高性能。您还可以使用 MySQL 只
读副本扩展读取。
• 您可以使用您熟悉的数据库产品:MySQL、Oracle 和 Microsoft SQL Server。
• 除了数据库软件包的安全,您可以使用 AWS IAM 定义用户和权限,用于控制可以访问 RDS 数据库的
用户。您还可以将数据库置于虚拟私有云中,这样有助于保护数据库。
开始了解更多信息:
• 如果您是初次使用 RDS,但您熟悉其他 Amazon Web Services,请参阅从简介到 Amazon RDS 组
件 (p. 2) 的内容。本部分讨论 Amazon RDS 的关键组件以及它们如何映射到您当前在本地网络中使用
的资源。
API Version 2013-05-15
1
Amazon Relational Database Service 用户指南
Amazon RDS 组件
• 有关所有 AWS 产品的概述,请参阅何为“云计算”?
• Amazon Web Services 提供了大量数据库服务。要获得如何选择最适合您环境的服务的指导,请参阅
在 AWS 上运行数据库。
Amazon RDS 组件
Topics
• 数据库实例 (p. 2)
• 地区和可用区域 (p. 2)
• 安全组 (p. 3)
• 数据库参数组 (p. 3)
• 数据库选项组 (p. 3)
数据库实例
Amazon RDS 的基本构建块是数据库实例。数据库实例是在云中运行的独立数据库环境。一个数据库实
例可以包含多个由用户创建的数据库,并且可以使用与独立数据库实例相同的工具和应用程序进行访问。
您可以使用 Amazon RDS 命令行界面、Amazon RDS API 或 AWS 管理控制台创建和修改数据库实例。
每个数据库实例运行一个数据库引擎。Amazon RDS 目前支持 MySQL、Oracle 和 Microsoft SQL Server
数据库引擎。每个数据库引擎都有其自己支持的功能,且各个数据库引擎版本可能包括特定功能。此外,
每个数据库引擎包含一组可以控制它所管理的数据库行为的参数。
数据库实例的计算和内存容量由数据库实例类决定。您可以选择最符合您需求的数据库实例。如果您的需
求随时间而改变,您可以更改数据库实例。有关数据库实例类的信息,请参阅“数据库实例类”部分。有关
数据库实例类的定价信息,请转到 Amazon Relational Database Service (Amazon RDS) 产品页面的“定
价”部分。
对于每个数据库实例,您可以选择从 5 GB 到 3 TB 的关联存储容量。每个数据库实例类对使用它创建的
数据库实例具有最小和最大存储要求。务必要注意提供足够的存储空间,以便为数据库留出增长空间,并
为数据库引擎提供写入内容或日志条目的空间。
数据库实例存储包含两种类型,即标准和预配置 IOPS。标准存储在 Amazon EBS 卷上分配并连接到您
的数据库实例。预配置 IOPS 使用经过优化的 EBS 卷和配置堆栈,可为 EBS I/O 提供额外的专用容量。
这些优化处理使实例能充分利用在 EBS 卷上预配置的 IOPS。有关预配置 IOPS 的详细信息,请参阅 使
用预置 IOPS 存储 (p. 257)。
使用 Amazon 的 Virtual Private Cloud (VPC) 服务,可以运行虚拟私有云中的数据库实例。如果使用虚拟
私有云,您就可以控制您的虚拟联网环境:您可以选择自己的 IP 地址范围、创建子网以及配置路由和访
问控制列表。无论是否在 VPC 中运行,Amazon RDS 的基本功能都相同;Amazon RDS 用于管理备份、
软件修补、自动故障检测和恢复。在 VPC 中运行数据库实例不会产生额外费用。有关 VPC 和 RDS 的更
多信息,请参阅将 Amazon RDS 与 Amazon Virtual Private Cloud 结合使用 (p. 252)。
地区和可用区域
Amazon 云计算资源存储在位于全球不同区域(例如,北美、欧洲和亚洲)的高度可用的数据中心设施
中。每个数据中心位置称为一个“地区”。
每个地区包含许多不同的称为“可用区域”(或 AZ)的位置。每个可用区域都被设计成不受其他可用区域
故障的影响,并提供低价、低延迟的网络连接,以连接到同一地区的其他可用区域。通过启动独立可用区
域内的实例,您可以保护您的应用程序不受单一位置故障的影响。有关地区和可用区域的列表,请参阅
地区和可用区域 (p. 37)。
API Version 2013-05-15
2
Amazon Relational Database Service 用户指南
安全组
您可以使用名为多可用区域部署的选项在多个可用区域运行您的数据库实例。选择此选项后,Amazon 会
自动在不同的可用区域预配置和维护数据库实例的同步备用副本。主数据库实例可以跨可用区域同步复制
到备用副本,从而在系统备份期间提供数据冗余、故障转移支持、消除 I/O 冻结和最大程度地降低延迟峰
值。
安全组
安全组可控制数据库实例的访问权限。它通过允许访问您指定的 IP 地址范围或 Amazon EC2 实例来实现
访问控制。
Amazon RDS 使用数据库安全组、VPC 安全组和 EC2 安全组。简单来说,数据库安全组会控制不在 VPC
中的数据库实例的访问权限,VPC 安全组控制 VPC 中的数据库实例的访问权限,而 Amazon EC2 安全
组控制 EC2 实例的访问权限。有关安全组的更多信息,请参阅 Amazon RDS 安全组 (p. 60)。
数据库参数组
您可使用数据库参数组管理数据库引擎的配置。数据库参数组包含可应用于一个或多个相同实例类型的数
据库实例的引擎配置值。如果您创建数据库实例时未指定数据库参数组,Amazon RDS 会应用默认数据
库参数组。默认组包含特定数据库引擎和数据库实例类的默认值。
数据库选项组
一些数据库引擎提供可简化数据库管理和充分利用数据的工具。Amazon RDS 可通过选项组提供这些工
具。目前,选项组仅可用于 Oracle 数据库实例。有关 Amazon RDS 提供的各个 Oracle 选项的更多信息,
请转到 附录:Oracle 数据库引擎选项 (p. 129)。
可用 RDS 接口
Topics
• Amazon RDS 控制台 (p. 3)
• 命令行接口 (p. 3)
• 编程接口 (p. 3)
您可以采用多种方式与 Amazon RDS 交互。
Amazon RDS 控制台
Amazon RDS 控制台是一个简单的基于 Web 的用户界面。通过此控制台,您无需编程即可执行需要从
RDS 控制台执行的几乎所有任务。要访问 Amazon RDS 控制台,请登录 AWS 管理控制台,通过以下网
址打开 Amazon RDS 控制台:https://console.aws.amazon.com/rds/。
命令行接口
Amazon RDS 提供基于 Java 命令行的界面,可访问 Amazon RDS API 中的许多功能。有关更多信息,
请参阅 Amazon RDS 命令行工具包。
编程接口
以下表格列出了您可以通过编程方式用于访问 Amazon RDS 的资源。
API Version 2013-05-15
3
Amazon Relational Database Service 用户指南
Amazon RDS 付费方法
资源
描述
AWS 软件开发工具包
AWS 软件开发工具包包含示例代码、库、工具、文档和模板。要下载 AWS
软件开发工具包,请转至 AWS 软件开发工具包 (SDK)。
库
AWS 为倾向于使用语言特有的 API 而非 Amazon Relational Database Service
的 SOAP and Query APIs 来构建应用程序的软件开发者提供库文件、示例代
码、教程和其他资源。这些库文件提供基本功能(不包括在 Amazon Relational
Database Service 的 SOAP and Query APIs 中),例如请求身份验证、请求
重试和错误处理,以便您更轻松地开始使用。库文件和资源可供下列语言使
用:
• Java
• PHP
• Python
• Ruby
• Windows 和 .NET
有关以所有语言推出的库和示例代码,请转到 Sample Code & Libraries。
Amazon RDS API
如果您愿意,您可以直接将代码发布到 Amazon RDS API。有关更多信息,请
参阅 使用 Amazon RDS API (p. 302) 和 Amazon Relational Database Service
API Reference。
Amazon RDS 付费方法
使用 Amazon RDS 时,仅按实际使用量收费,无最低费用或设置费用。按照以下标准计费。
• 实例类 – 基于数据库实例使用的类(例如微型、小型、大型、超大型)进行定价。
• 运行时间 – 按实例小时数计费,即单个实例运行 1 小时。例如,单个实例运行两小时和两个实例运行
一小时使用的实例小时数都是 2。如果数据库实例运行的时间在一个小时以内,则按一个实例小时收
费。
• 存储 – 您的数据库实例预配置的存储容量按每月每 GB 计费。如果您在计费期内扩展了预配置的存储容
量,则将按相应比例计费。
• 每月的 I/O 请求数 – 您在账单周期中发出的存储 I/O 请求总数。
• 备份存储 – 备份存储是指与自动数据库备份和拍摄的有效数据库快照相关联的存储。延长备份保留期或
增加快照拍摄数量,将增加数据库所消耗的备份存储。Amazon RDS 免费提供与您预配置的数据库存
储同等大小的备份存储。例如,如果您每月预配置的数据库存储为 10 GB,我们每月将在不另行收费的
情况下提供多达 10 GB 的备份存储。大多数数据库需要的原始备份存储比主数据集少,因此,如果您
未保留多个备份,则不需要对备份存储付费。仅有效数据库实例的备份存储免费。
• 数据传输 – 传入和传出数据库实例的 Internet 数据传输。
除了常规 RDS 定价之外,您还可以购买预留数据库实例。预留数据库实例能让您以极低的费率支付一次
性前期费用,并可预留数据库实例一年或三年。有关预留数据库实例的更多信息,请参阅 使用预留数据
库实例 (p. 242)。
有关 Amazon RDS 定价信息,请参阅 Amazon RDS 产品页面。
API Version 2013-05-15
4
Amazon Relational Database Service 用户指南
监控 Amazon RDS 数据库实例
监控 Amazon RDS 数据库实例
跟踪数据库实例的性能和运行状况有多种方法。您可以使用免费的 Amazon CloudWatch 服务监控数据库
实例的性能和运行状况;性能图将在 Amazon RDS 控制台中显示。您可以订阅 Amazon RDS 事件,以
便在数据库实例、数据库快照、数据库参数组或数据库安全组发生更改时收到通知。有关 Amazon
CloudWatch 的更多信息,请参阅 查看数据库实例指标 (p. 270)。有关 Amazon RDS 事件通知的更多信
息,请参阅 使用 Amazon RDS 事件通知 (p. 273)
接下来做什么?
本节为您介绍了 RDS 提供的基本的基础设施组件。您下一步该做什么?
入门
按照 Amazon RDS 入门 (p. 8) 部分的说明创建数据库实例。
数据库引擎专题
您可以在以下部分中查看特定数据库引擎的特定信息:
• 在 Amazon RDS 上使用 Oracle (p. 109)
• 在 Amazon RDS 上使用 MySQL (p. 64)
• 在 Amazon RDS 上使用 Microsoft SQL Server (p. 149)
API Version 2013-05-15
5
Amazon Relational Database Service 用户指南
Amazon RDS 基本操作指南
Amazon RDS 最佳实践
此部分概述使用 Amazon RDS 的最佳实践。随着新的最佳实践的确定,我们将持续更新此部分。
Topics
• Amazon RDS 基本操作指南 (p. 6)
• Amazon RDS 安全最佳实践 (p. 7)
• MySQL 存储引擎使用最佳实践 (p. 7)
Amazon RDS 基本操作指南
下文提供了一些基本操作指南,在使用 Amazon RDS 时,所有人都必须遵循这些指南。请注意,Amazon
RDS 服务等级协议要求您遵循以下指南:
• 监视您的内存、CPU 和存储使用。您可以将 Amazon CloudWatch 设置为在使用模式发生变化或者当
您接近部署容量限制时向您发送通知,以便维护系统性能和可用性。
• 当您接近存储容量限制时,请扩展数据库实例。您应当在存储和内存中保留一定的缓冲区,以便满足预
料之外的应用程序增长需求。
• 在一个数据库实例中,如果使用预配置的 IOPS,创建的表不应超过 10,000 个,如果使用标准存储,
创建的表不应超过 1000 个。大量表将显著增加故障转移或数据库崩溃后的数据库恢复时间。有关使用
MySQL 表的信息,请参阅 使用 InnoDB 表空间缩短崩溃恢复时间 (p. 98)。
• 如果您的数据库工作负载需要的 I/O 多于预配置的 I/O,在故障转移或数据库故障后进行恢复会变得非
常缓慢。要提高数据库实例的 I/O 容量,请执行以下任一或所有操作:
• 迁移到具有较高 I/O 容量的数据库实例类。
• 从标准存储转换为预配置的 IOPS 存储,并使用已针对预配置 IOPS 进行优化的数据库实例类。
• 如果您已在使用预配置 IOPS 存储,请预配置额外的吞吐量容量。
• 如果您的客户端应用程序正在缓存数据库实例的 DNS 数据,请将 TTL 设置为低于 30 秒。由于数据库
实例的基础 IP 地址可能会在故障转移后更改,如果应用程序尝试连接到不再可用的 IP 地址,长时间缓
存 DNS 数据可能导致连接故障。
• 针对您的数据库实例对故障转移进行测试,以便了解此过程在您的使用案例中所需的时间,并确保访问
数据库实例的应用程序可以在故障转移后自动连接到新的数据库实例。
API Version 2013-05-15
6
Amazon Relational Database Service 用户指南
Amazon RDS 安全最佳实践
Amazon RDS 安全最佳实践
使用 AWS IAM 账户控制访问 Amazon RDS API 操作,特别是创建、修改或删除数据库实例、安全组、
选项组或参数组等 RDS 资源的操作,以及执行备份和还原数据库实例或配置预配置 IOPS 存储等常见管
理操作的操作。
• 为管理 RDS 资源的每个人员分配单独的 IAM 账户。切勿使用 AWS 根证书管理 Amazon RDS;您应
当为所有人(包括您自己)创建 IAM 用户。
• 向每个用户授予执行其职责所需的最小权限集。
• 使用 IAM 组有效管理多个用户的权限。
• 定期交替轮换 IAM 证书。
有关 IAM 的更多信息,请参阅 AWS Identity and Access Management。有关 IAM 最佳实践的信息,请
参阅 IAM 最佳实践。
MySQL 存储引擎使用最佳实践
适用于 MySQL 的 Amazon RDS 的时间点恢复和快照恢复功能要求使用崩溃恢复存储引擎,且仅支持
InnoDB 存储引擎。虽然 MySQL 支持功能不同的多种存储引擎,但并非所有引擎都为崩溃恢复和数据耐
久性而进行了优化。例如,MyISAM 存储引擎不支持可靠的崩溃恢复,并且可能使时间点恢复或快照恢复
无法按预期工作。这可能导致在崩溃后重启 MySQL 时丢失或损坏数据。
不过,如果您仍然选择对 Amazon RDS 使用 MyISAM,遵循 使用不支持的 MySQL 存储引擎进行自动备
份 (p. 44) 中概述的这些步骤可能在某些情况下对执行快照恢复功能会有所帮助。
如果您希望将现有 MyISAM 表转换为 InnoDB 表,您可以使用 MySQL 文档中概述的过程。MyISAM 和
InnoDB 各有优缺点,所以请在执行转换前充分评估转换可能对您的应用程序造成的影响。
此外,适用于 MySQL 的 Amazon RDS 当前不支持联合存储引擎。
API Version 2013-05-15
7
Amazon Relational Database Service 用户指南
注册 Amazon RDS
Amazon RDS 入门
Topics
• 注册 Amazon RDS (p. 8)
• 授权访问:创建安全组 (p. 9)
• 创建数据库实例并连接到数据库实例上的数据库 (p. 12)
• 删除数据库实例 (p. 30)
此部分显示如何使用 Amazon RDS 创建数据库实例,然后连接到该数据库实例上的数据库。作为此过程
的一部分,您将创建可访问数据库实例的数据库安全组。然后创建数据库实例,并使用创建的数据库安全
组连接到该数据库实例上的数据库。最后,您将删除该数据库实例。
注册 Amazon RDS
要使用 Amazon Relational Database Service (Amazon RDS),必须先注册此服务。注册此服务后,您就
可以获得用户证书并开始使用 Amazon RDS 服务。
Important
您即将启动的数据库实例将是活跃的(且未在沙盒中运行)。您需要为实例支付标准的 Amazon
RDS 使用费,直到您终止该实例。如果您一鼓作气完成此处描述的练习并在使用完毕后立即删除
您的数据库实例,总体费用将会微乎其微。有关 Amazon RDS 使用费率的更多信息,请转到
Amazon RDS 产品页面。
您需要一个 AWS 账户才能使用 Amazon RDS。如果您还没有账户,系统会在您注册 Amazon RDS 时提
示您创建一个账户。
注册 Amazon RDS
1.
请转到 http://aws.amazon.com/rds,然后单击立即注册 Amazon RDS。
2.
按照屏幕上的说明进行操作。
API Version 2013-05-15
8
Amazon Relational Database Service 用户指南
授权访问:创建安全组
授权访问:创建安全组
当创建数据库实例时,该实例具有可防止对它的任何访问的防火墙。必须创建指定具有访问权限的 IP 地
址或 EC2 实例的安全组。在 Amazon RDS 中创建数据库实例之前必须完成的较难任务之一是创建安全
组。此过程本身并不难;难点在于尝试确定如何通过防火墙连接到数据库实例上的数据库。访问数据库实
例上的数据库所通过的防火墙必须允许通过传入和传出操作。请向网络管理员咨询以便确定您应使用的
IP 地址和端口。
如果您是 Amazon RDS 的新客户,或者您是使用新区域的现有客户,您将具有默认的 VPC。如果您具有
默认 VPC,您创建的所有数据库实例都将位于默认 VPC 中。要确定您是否具有默认 VPC,请参阅下面
的步骤 2。无法使用数据库安全组访问 VPC 中的数据库实例上的数据库;必须创建 VPC 安全组才能提供
访问。
要为数据库实例创建数据库安全组,必须先创建数据库安全组,然后为您将允许连接到数据库实例的一个
IP 地址或 IP 地址范围指定 CIDR(无类域间路由)值。由于这些 IP 地址将获得访问权限,请注意仅向正
确的 IP 地址授予访问权限。
创建数据库安全组
1.
2.
Sign in to the AWS Management Console and open the Amazon RDS console at
https://console.aws.amazon.com/rds/.
确定在当前区域中您的 AWS 账户支持的平台。
如果推荐的平台指示 EC2,VPC,在当前区域中,您的 AWS 账户不会使用默认 VPC。您可以继续完
成本教程,并创建将允许访问数据库实例的数据库安全组。
API Version 2013-05-15
9
Amazon Relational Database Service 用户指南
授权访问:创建安全组
如果推荐的平台指示 VPC,在当前区域中,您的 AWS 账户会使用默认 VPC。这意味着您必须创建
VPC 安全组以允许访问数据库实例,而不是创建数据库安全组。在创建 VPC 安全组之后,您可以返
回到本教程的以下部分 创建数据库实例并连接到数据库实例上的数据库 (p. 12)。有关创建 VPC 安全
组的信息,请参阅您的 VPC 的安全组。
3.
单击窗口左侧导航窗格中的安全组。
4.
单击创建数据库安全组。
API Version 2013-05-15
10
Amazon Relational Database Service 用户指南
授权访问:创建安全组
5.
在名称和说明文本框中键入新数据库安全组的名称和说明。请注意,安全组名称不包含空格,且不能
以数字开头。
6.
单击是,创建。随即将创建数据库安全组。默认情况下,新创建的数据库安全组不会提供对数据库实
例的访问。必须指定可访问数据库实例的 IP 地址范围或 EC2 安全组。
7.
选择您刚刚创建的数据库安全组的详细信息图标。
8.
在安全组详细信息部分中,选择连接类型下拉列表中的 CIDR/IP,在 CIDR 文本框中键入想要添加到
此数据库安全组的传入规则的 CIDR 范围,然后单击添加。
Tip
AWS 管理控制台根据 CIDR 文本字段下的连接显示 CIDR IP。如果您不是从防火墙后访问
数据库实例,这可以是您可使用的 CIDR IP。
API Version 2013-05-15
11
Amazon Relational Database Service 用户指南
创建数据库实例并连接到数据库实例上的数据库
9.
传入规则的状态将是正在授权,直到新的传入规则应用到与修改的数据库安全组关联的所有数据库实
例。在成功应用了传入规则后,状态将更改为已授权。在下一部分创建数据库实例时,即可使用数据
库安全组。
创建数据库实例并连接到数据库实例上的数据库
可以使用所选区域中提供的任何数据库引擎版本创建数据库实例。MySQL、Oracle 和 Microsoft SQL
Server 的版本已在所有区域提供。对于各数据库引擎而言,创建数据库实例并连接到数据库实例上的数
据库略不相同;在下面选择要创建的数据库引擎,以便获取有关创建数据库实例的详细信息。
• 创建 MySQL 数据库实例并连接至 MySQL 数据库实例上的数据库 (p. 12)
• 创建 Oracle 数据库实例并连接到 Oracle 数据库实例上的数据库 (p. 17)
• 创建和连接到 SQL Server 数据库实例 (p. 22)
创建 MySQL 数据库实例并连接至 MySQL 数据库实例
上的数据库
Topics
• 创建运行 MySQL 数据库引擎的数据库实例 (p. 12)
• 与运行 MySQL 数据库引擎的数据库实例上的数据库连接 (p. 16)
创建数据库实例最简单的方法是使用 Amazon RDS 控制台。在创建数据库实例之后,您即可使用标准
MySQL 实用工具(例如,MySQL Workbench)连接到数据库实例上的数据库。
创建运行 MySQL 数据库引擎的数据库实例
Amazon RDS 的基本构建块是数据库实例。这是您将运行 MySQL 数据库的环境。
在此示例中,您将创建一个数据库实例,它会运行名为 west2-mysql-instance1 的 MySQL 数据库引擎,
并拥有 db.m1.small 数据库实例类、5 GB 的存储空间和保留期为 1 天的自动备份。
启动 MySQL 数据库实例
1.
Sign in to the AWS Management Console and open the Amazon RDS console at
https://console.aws.amazon.com/rds/.
API Version 2013-05-15
12
Amazon Relational Database Service 用户指南
创建 MySQL 数据库实例并连接至 MySQL 数据库实例上的
数据库
2.
3.
4.
在 Amazon RDS 控制台的右上角,选择您要在其中创建数据库实例的区域。
在导航窗格中,单击实例。
单击启动数据库实例。数据库实例启动向导随即在引擎选择页面上打开。
5.
在引擎选择页面上,针对 MySQL 数据库引擎单击选择。
6.
在数据库实例详细信息页面上,指定数据库实例信息。下表显示示例数据库实例的设置。根据需要设
置完毕后,单击继续。
对于此参数...
...请执行此操作:
许可模式
选择默认的 General-Public-License,使用 MySQL
一般许可协议。MySQL 只有一个许可模式。
数据库引擎版本
选择 MySQL 的默认版本。请注意,Amazon RDS 在某些
区域中支持多个 MySQL 版本。
数据库实例类
选择 db.m1.small 以选择相当于 1.7 GB 内存、1 ECU
(一个带 1 ECU 的虚拟核心)、64 位平台和中度 I/O 容量
的配置。
多可用区域部署
选择 在单个可用区域中创建数据库实例。
自动次要版本升级
选择 ,以便在次要数据库引擎版本可用时,让数据库实例
能够自动接收这些次要升级。
API Version 2013-05-15
13
Amazon Relational Database Service 用户指南
创建 MySQL 数据库实例并连接至 MySQL 数据库实例上的
数据库
7.
对于此参数...
...请执行此操作:
分配的存储空间
键入 5 为您的数据库分配 5 GB 的存储空间。
使用预配置 IOPS
将复选框留为未选中状态。该选项打开预配置的 IOPS(每
秒 I/O 操作)这一 Amazon RDS 中针对 I/O 密集型事务处
理 (OLTP) 数据库工作负载进行了优化的高性能存储选项。
数据库实例标识符
为该数据库实例键入一个名称,该名称在您所选区域中对
于您的账户是唯一的。您可以选择对该名称进行一些巧妙
处理,例如将您所选的区域和数据库引擎包括在名称中,
如 west2-mysql-instance1。
主用户名
使用字母和数字字符键入一个名称,该名称将用作您登录
数据库实例的主用户名。这将是您首次登录数据库实例上
的数据库时使用的用户名。
主用户密码
输入一个包含 8 到 16 位可打印 ASCII 字符(的密码用不
包括 /、"、和 @)用作您的主用户密码。这将是您使用该
用户名登录数据库时将使用的密码。
在其他配置页面上,提供 RDS 启动 MySQL 数据库实例所需的其他信息。下表显示示例数据库实例
的设置。指定数据库实例信息,然后单击 继续.
API Version 2013-05-15
14
Amazon Relational Database Service 用户指南
创建 MySQL 数据库实例并连接至 MySQL 数据库实例上的
数据库
8.
对于此参数...
...请执行此操作:
数据库名称
为您的数据库输入一个含有达 8 位字母和数字字符的名称。
如果您未提供名称,Amazon RDS 将不会自动在您创建的
数据库实例上创建数据库。
数据库端口
将默认值 3306 保持不变,除非您有通过其访问数据库的
特定端口。MySQL 安装默认为端口 3306。
选择 VPC
将默认值 VPC 保持不变。
可用区域
将默认值 保持不变,除非您想指定特定的可用区域。
选项组
选择默认值 default:mysql-5-5,因为该选项组用于您
在上一页面中选择的 MySQL 版本。
参数组
将默认值 default.mysql5.5 保持不变,除非您创建了
自己的数据库参数组。有关参数组的更多信息,请参阅 使
用数据库参数组 (p. 218)。
数据库安全组
选择您在“入门”部分中的前面步骤中创建的数据库安全组。
在管理选项页面上,您可以为数据库实例指定备份和维护选项。接受默认值,然后单击继续。
API Version 2013-05-15
15
Amazon Relational Database Service 用户指南
创建 MySQL 数据库实例并连接至 MySQL 数据库实例上的
数据库
9.
在审核页面上,核查您的数据库实例选项。如果您需要做出任何更改,单击返回返回相应页面,然后
做出必要的更正。根据需要全部设置完毕后,单击启动数据库实例。
10. 在此向导的最后一个页面上,单击关闭。
11. 在 RDS 控制台中,新数据库实例显示在数据库实例列表中。数据库实例将为 creating 状态,直到该
数据库实例完成创建并可供使用。当状态更改为可用时,您即可连接到数据库实例上的数据库。根据
所分配的数据库实例类和存储的不同,新数据库实例可能需要数分钟时间才能变得可用。
与运行 MySQL 数据库引擎的数据库实例上的数据库连接
在 Amazon RDS 预配置了您的数据库实例后,您即可使用任何标准 SQL 客户端应用程序与该数据库实
例上的数据库连接。使用 MySQL 监视器命令将您在此实例中创建的终端节点连接至 MySQL 数据库实例
上的数据库。在基于 GUI 的应用程序中,您可以使用 MySQL Workbench 进行连接;有关更多信息,请
转到下载 MySQL Workbench 页面。有关使用 MySQL 的更多信息,请转到 MySQL 文档。
使用 MySQL 监视器与数据库实例上的数据库连接
•
使用 MySQL 监视器在客户端计算机上的命令提示符下键入以下命令,以便连接至 MySQL 数据库实
例的数据库。使用数据库实例的 DNS 名称替换 <endpoint>,使用主用户名替换 <mymasteruser>,
并使用所用主密码替换 <password>。
API Version 2013-05-15
16
Amazon Relational Database Service 用户指南
创建 Oracle 数据库实例并连接到 Oracle 数据库实例上的数
据库
PROMPT> mysql -h <endpoint> -P 3306 -u <mymasteruser> -p <password>
您会看到类似以下内容的输出。
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 350
Server version: 5.1.32-log MySQL Community Server (GPL)
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql>
创建 Oracle 数据库实例并连接到 Oracle 数据库实例
上的数据库
Topics
• 创建运行 Oracle 数据库引擎的数据库实例 (p. 17)
• 与运行 Oracle 数据库引擎的数据库实例连接 (p. 21)
创建 Oracle 数据库实例最简单的方法是使用 RDS 控制台。在创建数据库实例之后,您即可使用标准
Oracle 客户端实用工具(例如,SQL Developer)连接到该实例。
在此示例中,您将创建一个数据库实例,它会运行名为 west2-oracle1 的 Oracle 数据库引擎,并拥有
db.m1.small 数据库实例类、10 GB 的存储空间和保留期为 1 天的自动备份。
创建运行 Oracle 数据库引擎的数据库实例
启动 Oracle 数据库实例
1.
2.
3.
4.
Sign in to the AWS Management Console and open the Amazon RDS console at
https://console.aws.amazon.com/rds/.
在 Amazon RDS 控制台的右上角,选择您要在其中创建数据库实例的区域。
在导航窗格中,单击数据库实例。
单击启动数据库实例以启动数据库实例启动向导。
该向导随即在引擎选择页面上打开。
API Version 2013-05-15
17
Amazon Relational Database Service 用户指南
创建 Oracle 数据库实例并连接到 Oracle 数据库实例上的数
据库
5.
6.
在数据库实例启动向导窗口中,针对 Oracle 数据库引擎单击选择按钮。
在数据库实例详细信息页面上,指定数据库实例信息。下表显示示例数据库实例的设置。完成后,请
单击继续。
对于此参数...
...请执行此操作:
许可模式
选择 ,提供您自己的许可证以便使用 Oracle。一些地
区支持 Oracle 的其他许可选项。
数据库引擎版本
选择 Oracle 的默认版本。
数据库实例类
选择 db.m1.small 以选择相当于 1.7 GB 内存、1 ECU
(一个带 1 ECU 的虚拟核心)、64 位平台和中度 I/O 容量
的配置。
多可用区域部署
选择 在单个可用区域中创建数据库实例。
自动次要版本升级
选择 ,以便在次要数据库引擎版本可用时,让数据库实例
能够自动接收这些次要升级。
分配的存储空间
键入 10 以便为您的数据库分配 10 GB 的存储空间。有时,
为数据库实例分配的存储空间高于数据库大小时可提高 I/O
性能。
API Version 2013-05-15
18
Amazon Relational Database Service 用户指南
创建 Oracle 数据库实例并连接到 Oracle 数据库实例上的数
据库
7.
对于此参数...
...请执行此操作:
使用预配置 IOPS
将复选框留为未选中状态。该选项开启预配置的 IOPS(每
秒输入/输出操作)这一 RDS 中针对 I/O 密集型事务处理
(OLTP) 数据库工作负载进行了优化的高性能存储选项。
数据库实例标识符
为该数据库实例键入一个名称,该名称在您所选区域中对
于您的账户是唯一的。您可以选择对该名称进行一些巧妙
处理,例如将您所选的地区和数据库引擎包括在名称中,
如 oracle-unstance1。
主用户名
键入一个名称,该名称将用作您拥有全部数据库权限、用
来登录到数据库实例的主用户名。此用户账户用于登录数
据库实例并被授予“数据库管理员”角色。
主用户密码
输入一个包含 8 到 30 位可打印 ASCII 字符(的密码用不
包括 /、"、和 @)用作您的主用户密码。
在其他配置页面上,提供 RDS 启动 Oracle 数据库实例所需的其他信息。下表显示示例数据库实例
的设置。指定数据库实例信息,然后单击 继续.
对于此参数...
...请执行此操作:
数据库名称
输入一个名称,该名称以字母起始且包含达 8 位字母和数
字字符。如果您未提供名称,Amazon RDS 将不会在您创
建的数据库实例上创建数据库。
API Version 2013-05-15
19
Amazon Relational Database Service 用户指南
创建 Oracle 数据库实例并连接到 Oracle 数据库实例上的数
据库
8.
对于此参数...
...请执行此操作:
数据库端口
将默认值 1521 保持不变,除非您有通过其访问数据库的
特定端口。Oracle 默认为端口 1521。
选择 VPC
将默认值 VPC 保持不变。
可用区域
将默认值 保持不变。
字符集名称
选择表示 Unicode 5.0 UTF-8 Universal 字符集的默认值
AL32UTF8。请注意,您不能在数据库实例创建后更改字符
集。
选项组
选择默认值 default:oracle-ee-11-2。
数据库参数组
将默认值 default.oracle-ee-11.2 保持不变。
数据库安全组
选择您在上一部分中创建的数据库安全组。
在管理选项页面上,您可以为数据库实例指定备份和维护选项。在此示例中,接受默认值,然后单击
继续。
API Version 2013-05-15
20
Amazon Relational Database Service 用户指南
创建 Oracle 数据库实例并连接到 Oracle 数据库实例上的数
据库
根据需要设定好所有设置后,单击继续。
9. 在审核页面上,核查您的数据库实例选项。如果您需要做出任何更改,单击返回返回相应页面,然后
做出必要的更正。根据需要全部设置完毕后,单击启动数据库实例。
10. 在此向导的最后一个页面上,单击关闭。
11. 在 RDS 控制台中,新数据库实例显示在数据库实例列表中。数据库实例将为 creating 状态,直到该
数据库实例完成创建并可供使用。当状态更改为可用时,您即可连接到数据库实例。根据所分配的数
据库实例类和存储的不同,新实例可能需要数分钟时间才能变得可用。
与运行 Oracle 数据库引擎的数据库实例连接
在 Amazon RDS 预配置了您的数据库实例后,就可以使用任何标准 SQL 客户端应用程序与该实例连接。
在此示例中,使用 Oracle 命令行工具与运行 Oracle 数据库引擎的数据库实例连接。有关使用 Oracle 的
更多信息,请转到 Oracle 网站。
此示例使用了 Oracle sqlplus 命令行实用工具。此实用工具是 Oracle 软件发布版的一部分。要下载此实
用工具的独立版本,请转到 SQL*Plus 用户指南和参考。
1.
打开 RDS 控制台,然后在左列中选择实例以显示数据库实例列表。
API Version 2013-05-15
21
Amazon Relational Database Service 用户指南
创建和连接到 SQL Server 数据库实例
2.
3.
在 Oracle 数据库实例所在的行中,选择对应的箭头以显示实例的摘要信息。
终端节点字段包含数据库实例的连接信息的一部分。终端节点字段包含两个使用冒号 (:) 分隔的部分。
冒号前的部分是实例的 DNS 名称,冒号后的部分是端口。
4.
使用 sqlplus 实用工具在命令提示符下的一行中键入以下命令,以便连接到数据库实例。Host 的值
将为数据库实例的 DNS 名称,Port 的值将为您分配给数据库实例的端口,Oracle SID 的值将是您
在创建数据库实例时指定的数据库实例的数据库名称,而不是数据库实例的名称。
PROMPT>sqlplus 'mydbusr@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=<endpoint>)
(PORT=<port number>))(CONNECT_DATA=(SID=<database name>)))'
您会看到类似以下内容的输出。
SQL*Plus: Release 11.1.0.7.0 - Production on Wed May 25 15:13:59 2011
SQL>
创建和连接到 SQL Server 数据库实例
Topics
• 创建 SQL Server 数据库实例 (p. 23)
• 使用 Microsoft SQL Server Management Studio 连接到 SQL Server 数据库实例 (p. 27)
• 排除运行 SQL Server 的数据库实例的连接的故障 (p. 30)
API Version 2013-05-15
22
Amazon Relational Database Service 用户指南
创建和连接到 SQL Server 数据库实例
创建数据库实例最简单的方法是使用 RDS 控制台。在创建数据库实例之后,您即可使用标准 SQL Server
实用工具连接到数据库实例,例如,Microsoft SQL Server Management Studio 实用工具。
创建 SQL Server 数据库实例
创建运行 Microsoft SQL Server 数据库引擎的数据库实例
1.
Sign in to the AWS Management Console and open the Amazon RDS console at
https://console.aws.amazon.com/rds/.
2.
3.
4.
在 Amazon RDS 控制台的右上角,选择您要在其中创建数据库实例的区域。
在导航窗格中,单击实例。
单击启动数据库实例以启动数据库实例启动向导。
该向导随即在引擎选择页面上打开。
5.
6.
在数据库实例启动向导窗口中,针对要使用的 SQL Server 数据库引擎单击选择按钮。
在数据库实例详细信息页面上,指定数据库实例信息。下表显示使用 SQL Server 标准版的示例数据
库实例的设置。完成后,请单击继续。
对于此参数...
...请执行此操作:
许可模式
选择 以使用 Microsoft SQL Server 的一般许可协议。
数据库引擎版本
选择 SQL Server 的默认版本。
API Version 2013-05-15
23
Amazon Relational Database Service 用户指南
创建和连接到 SQL Server 数据库实例
对于此参数...
...请执行此操作:
数据库实例类
选择 db.m1.small 以选择相当于 1.7 GB 内存、1 ECU
(一个带 1 ECU 的虚拟核心)、64 位平台和中度 I/O 容量
的配置。有关所有数据库实例类选项的更多信息,请参阅
数据库实例类 (p. 34)。
多可用区域部署
此功能仅适用于 Oracle 和 MySQL 数据库实例。
自动次要版本升级
选择 ,以便在次要数据库引擎版本可用时,让数据库实例
能够自动接收这些次要升级。
分配的存储空间
键入 200 为您的数据库分配 200 GB 的存储空间。有时,
为数据库实例分配的存储空间高于数据库大小时可提高 I/O
性能。有关存储空间分配的更多信息,请参阅 Amazon
Relational Database Service 功能。
使用预配置 IOPS
将复选框留为未选中状态。该选项开启预配置的 IOPS(每
秒输入/输出操作)这一 RDS 中针对 I/O 密集型事务处理
(OLTP) 数据库工作负载进行了优化的高性能存储选项。有
关高性能存储的更多信息,请参阅 使用预置 IOPS 存
储 (p. 257)。
数据库实例标识符
为该数据库实例键入一个最多包含 15 位字母和数字字符的
名称,该名称在您所选区域中对于您的账户是唯一的。您
可以选择对该名称进行一些巧妙处理,例如将您所选的地
区和数据库引擎包括在名称中,如 sqlsv-instance1。
主用户名
键入一个名称,该名称将用作您拥有全部数据库权限、用
来登录到数据库实例的主用户名。主用户名是作为
processadmin、public 和 setupadmin 固定服务器角色成
员的 SQL Server 身份验证登录名。
主用户密码
输入一个包含 8 到 128 位可打印 ASCII 字符(的密码用不
包括 /、"、和 @)用作您的主用户密码。
API Version 2013-05-15
24
Amazon Relational Database Service 用户指南
创建和连接到 SQL Server 数据库实例
7.
在其他配置页面上,提供 RDS 启动 SQL Server 数据库实例所需的其他信息。下表显示示例数据库
实例的设置。指定数据库实例信息,然后单击 继续.
对于此参数...
...请执行此操作:
数据库端口
将默认值 1433 保持不变,除非您有通过其访问数据库的
特定端口。SQL Server 安装默认为端口 1433。
可用区域
将默认值 保持不变,除非您想指定特定的可用区域。
选择 VPC
将默认值 VPC 保持不变,除非您使用数据库子网组在
虚拟私有云内创建此数据库实例。有关 VPC 的更多信息,
请参阅 Amazon RDS 和 Amazon Virtual Private Cloud 服
务 (p. 40)。
数据库参数组
请使用默认值,除非您已创建了您自己的数据库参数组。
有关参数组的更多信息,请参阅使用数据库参数组(p.218)。
数据库安全组
选择要使用的安全组。有关安全组的更多信息,请参阅 使
用数据库安全组 (p. 229)。
API Version 2013-05-15
25
Amazon Relational Database Service 用户指南
创建和连接到 SQL Server 数据库实例
8.
在管理选项页面上,您可以为数据库实例指定备份和维护选项。在此示例中,接受默认值,然后单击
继续。请注意将备份保留期设置为零,以禁用自动备份。有关维护时段的更多信息,请参阅 调整首
选维护时段 (p. 266)。有关备份和备份保留期的更多信息,请参阅 数据库实例备份 (p. 42)。
根据需要设定好所有设置后,单击继续。
9.
在审核页面上,核查您的数据库实例选项。如果您需要做出任何更改,单击返回返回相应页面,然后
做出必要的更正。根据需要全部设置完毕后,单击启动数据库实例。
10. 在此向导的最后一个页面上,单击关闭。
API Version 2013-05-15
26
Amazon Relational Database Service 用户指南
创建和连接到 SQL Server 数据库实例
11. 在 RDS 控制台中,新数据库实例显示在数据库实例列表中。数据库实例将为 creating 状态,直到该
数据库实例完成创建并可供使用。当状态更改为可用时,您即可连接到数据库实例。根据所分配的数
据库实例类和存储的不同,新实例可能需要数分钟时间才能变得可用。
使用 Microsoft SQL Server Management Studio 连接到 SQL
Server 数据库实例
此示例介绍如何使用 Microsoft SQL Server Management Studio 实用工具。此实用工具是 Microsoft SQL
Server 软件发布版的一部分。要下载此实用工具的独立版本,请转到 Microsoft 下载中心 - Microsoft SQL
Server Management Studio Express。
使用 Microsoft SQL Server Management Studio 连接数据库实例
1.
找到您的数据库实例的 DNS 名称和端口。
a.
b.
c.
打开 RDS 控制台,然后在左列中选择实例以显示数据库实例列表。
在 Oracle 数据库实例所在的行中,选择对应的箭头以显示实例的摘要信息。
终端节点字段包含两个使用冒号 (:) 分隔的部分。冒号前的部分是实例的 DNS 名称,冒号后的
部分是端口。
API Version 2013-05-15
27
Amazon Relational Database Service 用户指南
创建和连接到 SQL Server 数据库实例
2.
3.
运行 Microsoft SQL Server Management Studio。
此时将显示连接到服务器对话框。
4.
在服务器类型:下拉列表框中,选择 。
5.
在服务器名称:文本字段中,为运行 Microsoft SQL Server 数据库引擎的数据库实例输入或粘贴 DNS
名称,后面加一个逗号,再后面是该数据库实例的端口号。例如,服务器名称可以是:
sqlsv-instance1.cg034hpkmmjt.us-east-1.rds.amazonaws.com 1433。
6.
从身份验证下拉列表框中,选择 SQL Server 。
7.
8.
9.
在登录: 文本框中,输入数据库实例的主用户名。
在密码: 文本框中输入主用户的密码输入数据库实例的主用户名。
单击连接按钮。
稍等几分钟后,Microsoft SQL Server Management Studio 会连接到您的数据库实例。
10. 单击 SQL Server Management Studio 窗口左上角的新建查询按钮。
将会显示一个新的“SQL 查询”窗口。
API Version 2013-05-15
28
Amazon Relational Database Service 用户指南
创建和连接到 SQL Server 数据库实例
11. 键入以下 SQL 查询:
select @@VERSION
12. 单击位于 SQL Enterprise Manager 工具栏上的 !执行按钮以运行该查询。
在输出窗口中,您会看到 Microsoft SQL Server 数据库实例返回的版本字符串。
API Version 2013-05-15
29
Amazon Relational Database Service 用户指南
删除数据库实例
排除运行 SQL Server 的数据库实例的连接的故障
如果您在连接到 SQL Server 数据库实例时遇到问题,这些问题具有两个常见原因:您的防火墙强制的访
问规则和您授权访问数据库安全组(如果数据库实例在 VPC 内,则为 VPC 安全组)中的数据库实例的
IP 地址。如果您已使用 Microsoft SQL Server Management Studio 且已遵循上述步骤中指定的设置,但
您仍无法连接,此问题很可能是由防火墙中的传出或传入规则所致。如果无法通过您创建数据库实例时指
定的端口向外发送或接收通信,您将无法连接到数据库实例。请向您的网络管理员咨询以便确定您为数据
库实例指定的端口是否可以用于入站和出站通信。
如果您确定可以通过您在创建数据库实例时指定的端口的防火墙发送和接收通信,您需要查看以下事项。
• 无法建立与 SQL Server - Microsoft SQL Server 的连接,错误:53 - 在使用 Microsoft SQL Server
Management Studio 指定服务器名称时,必须包括端口号。例如,数据库实例的服务器名称(包括端
口号)可以是:sqlsvr-pdz.c6c8mdfntzgv0.us-west-2.rds.amazonaws.com 1433。
• 无法连接,因为目标计算机有效拒绝连接 - Microsoft SQL Server,错误:10061 - 您可以访问数据库实
例,但已拒绝连接。这通常是由用户名或密码错误所致。
删除数据库实例
在连接到您创建的示例数据库实例之后,您应当删除数据库实例,因此您无需为其付费。
删除无最终数据库快照的数据库实例
1.
2.
Sign in to the AWS Management Console and open the Amazon RDS console at
https://console.aws.amazon.com/rds/.
在数据库实例列表中,选中要删除的数据库实例旁边的复选框。
3.
单击实例操作,然后从下拉菜单中选择删除。
API Version 2013-05-15
30
Amazon Relational Database Service 用户指南
删除数据库实例
4.
5.
在创建最终快照? 下拉列表框中选择 No。
单击是,删除。
API Version 2013-05-15
31
Amazon Relational Database Service 用户指南
数据库实例
Amazon RDS 术语和概念
Topics
• 数据库实例 (p. 32)
• 数据库实例类 (p. 34)
• Amazon RDS 存储 (p. 35)
• 地区和可用区域 (p. 37)
• 高可用性 (p. 38)
• 数据库实例维护 (p. 39)
• Amazon RDS 和 Amazon Virtual Private Cloud 服务 (p. 40)
• 数据库实例备份 (p. 42)
• 复制数据库实例 (p. 45)
• AWS Identity and Access Management (p. 46)
本章介绍 Amazon Relational Database Service (RDS) 术语和概念。本章中介绍的许多概念将在后面的
章节中更深入地探讨。
数据库实例
数据库实例是在云中运行的独立数据库环境。它是 Amazon RDS 的基本构建数据块。一个数据库实例可
以包含多个由用户创建的数据库,并且可以使用与独立数据库实例相同的客户端工具和应用程序进行访
问。创建和修改数据库实例非常简单,使用 Amazon RDS 命令行工具、API 或 AWS 管理控制台即可。
Note
Amazon RDS 支持从任一标准 SQL 客户端应用程序访问。Amazon RDS 不允许直接通过 Telnet、
安全外壳 (SSH) 或 Windows 远程桌面连接访问主机。
您最多可以购买 40 个 Amazon RDS 数据库实例。在这 40 个实例中,最多 10 个实例可以是“附带许可”
模式下的 Oracle 或 SQL Server 数据库实例。40 个数据库实例全都可用于“BYOL”模式下的 MySQL、SQL
Server 或 Oracle。如果您的应用程序需要更多数据库实例,可以使用
https://aws.amazon.com/support/createCase?type=service_limit_increase&serviceLimitIncreaseType=rds-instances
申请表申请更多数据库实例。
API Version 2013-05-15
32
Amazon Relational Database Service 用户指南
数据库实例
每个数据库实例都有一个数据库实例标识符。在与 Amazon RDS API 和命令交互时,此客户提供配置唯
一的名称标识数据库实例。对于 AWS 地区的客户,数据库实例标识符必须具有唯一性。
在创建数据库实例时,这些数据库引擎类型需要指定数据库名称。此值取决于数据库引擎类型:
• 对于 MySQL 数据库引擎,数据库名称是 Amazon 数据库实例中托管的数据库的名称。一个 Amazon
数据库实例可以托管多个数据库。由同一个数据库实例托管的数据库在此实例内必须有一个唯一的名
称。
• 对于 Oracle 数据库引擎,数据库名称用于设置 ORACLE_SID 值,连接 Oracle RDS 实例时必须提供
此值。
• 对于 Microsoft SQL Server 数据库引擎,数据库名称不是一个受到支持的参数。
Amazon RDS 会为您的数据库实例创建一个主用户账户,这也是创建过程的一部分。此主用户具有创建
数据库以及在主用户创建的表上执行创建、删除、选择、更新和插入操作的权限。创建数据库实例时,必
须设置主用户密码,但可以使用 Amazon RDS 命令行工具、API 或 AWS 管理控制台随时进行更改。还
可以使用标准 SQL 命令更改主用户密码并管理用户。
数据库实例的状况表示实例的运行状况。您可以使用 RDS 控制台、CLI 命令
rds-describe-db-instances 或 API 操作 DescribeDBInstances 查看数据库实例的状态。
数据库实例状态
描述
可用
实例正常和可用。
支持
当前正在备份实例。
正在创建
正在创建实例。无法访问正在创建的实例。
删除
正在删除实例。
失败
实例已失败,Amazon RDS 无法恢复它。将时间点还原至上次还原
实例的时间以恢复这些数据。
不兼容网络
Amazon RDS 正尝试恢复实例,但却无法执行此操作,因为 VPC 正
处于一种阻止此操作完成的状态。例如,如果子网的所有可用 IP 地
址正在使用中或 Amazon RDS 无法获得数据库实例的 IP 地址时,这
种状态可能会出现。
不兼容选项组
Amazon RDS 尝试应用选项组更改,但却无法执行,并且 Amazon
RDS 无法回滚到选项组之前的状态。请参阅数据库实例的近期事件
列表,了解更多信息。例如,如果选项组包含一个诸如 TDE 的选项
以及数据库实例不包含加密信息时,上述情况可能会发生。
不兼容参数
Amazon RDS 无法启动数据库实例,因为在实例的数据库参数组中
指定的参数不兼容。恢复参数更改或使这些更改与实例相兼容以重新
访问实例。请参阅数据库实例的近期事件列表,了解有关不兼容参数
的更多信息。
不兼容恢复
Amazon RDS 无法执行时间点恢复。引起不兼容恢复的常见原因包
括使用临时表或使用 MyISAM 表。
正在修改
按照客户请求正在修改实例。
重启中
按照客户请求或需要重启实例的 Amazon RDS 实例过程正在重启实
例。
正在重命名
按照客户请求正在重命名实例。
正在重置主证书
按照客户请求正在重置实例的主证书。
API Version 2013-05-15
33
Amazon Relational Database Service 用户指南
数据库实例类
数据库实例状态
描述
存储已满
实例超出了其存储分配容量。这种情况很关键,应立即进行修改。您
应通过修改数据库实例扩展存储。将 CloudWatch 警报设置为在存储
空间逐渐减小时为您发送提醒。
数据库实例类
数据库实例的计算和内存容量由数据库实例类决定。您可通过更改数据库实例的数据库实例类来更改 CPU
和内存。有关数据库实例类的定价信息,请访问 Amazon Relational Database Service (Amazon RDS)。
在数据库实例类范围较小的一端,db.t1.micro 数据库实例类足以满足测试要求,但不应将其用于生产应
用。使用 Oracle 的 db.t1.micro 实例为有限测试配置。我们建议您仅在测试设置和连接时使用 db.t1.micro
实例与 Oracle。适用于 db.t1.micro 实例的系统资源不符合 Oracle 推荐的配置要求。db.t1.micro 实例不
支持 Oracle 选项。
在数据库实例范围的上端,db.cr1.8xlarge 数据库实例类(仅适用于 MySQL 5.6)可与需要高内存实例的
主机应用程序一起使用,如社交媒体或游戏。db.cr1.8xlarge 实例可以访问具有 32 个超线程内核(88 个
ECU)的扩展网络带宽。与 MySQL 5.6 和预配置 IOPS 一起使用时,该数据库实例类可以最多实现 20,000
IOPS。
下表描述了可用的实例类。一个弹性计算单位 (ECU) 提供的 CPU 计算能力相当于 1.0–1.2 GHz 2007
Opteron 或 2007 Xeon 处理器。
名称
描述
db.t1.micro
微型数据库实例:613 MB 内存,最多 1 个 ECU,
64 位平台,低 I/O 容量。
db.m1.small
小型数据库实例:1.7 GB 内存,1 个 ECU(1 个虚
拟内核具有 1 个 ECU),64 位平台,中等 I/O 容
量
db.m1.medium
中型数据库实例:3.75 GB 内存,2 个 ECU(1 个
虚拟内核具有 2 个 ECU),64 位平台,中等 I/O
容量
db.m1.large
大型数据库实例:7.5 GB 内存,4 个 ECU(2 个虚
拟内核分别具有 2 个 ECU),64 位平台,高 I/O
容量
db.m1.xlarge
超大型数据库实例:15 GB 内存,8 个 ECU(4 个
虚拟内核分别具有 2 个 ECU),64 位平台,高 I/O
容量。
db.m2.xlarge
内存增强型超大型实例:17.1 GB 内存,6.5 个 ECU
(2 个虚拟内核分别具有 3.25 个 ECU),64 位平
台,高 I/O 容量
db.m2.2xlarge
内存增强型双倍超大型数据库实例:34 GB 内存,
13 个 ECU(4 个虚拟内核分别具有 3.25 个
ECU),64 位平台,高 I/O 容量。
db.m2.4xlarge
内存增强型四倍超大型数据库实例:68 GB 内存,
26 个 ECU(8 个虚拟内核分别具有 3.25 个
ECU),64 位平台,高 I/O 容量。
API Version 2013-05-15
34
Amazon Relational Database Service 用户指南
Amazon RDS 存储
名称
描述
db.cr1.8xlarge
八倍超大型内存增强型集群数据库实例:244 GB
内存,88 个 ECU(32 个虚拟内核分别具有 2.75
个 ECU),64 位平台,高 I/O 容量。
Note
本类仅适用于 MySQL 5.6 数据库实例,并
在美国东部(弗吉尼亚北部)、美国西部
(俄勒冈)、欧洲(爱尔兰)和亚太(东
京)地区可用。
Amazon RDS 存储
通过提供存储大小 (GB) 并在创建新数据库实例时有选择性地选择预配置 IOPS 来指定 Amazon RDS 中
的数据存储。通过仅指定存储大小分配标准存储。标准存储不为数据库实例预留,因此存储性能会因置于
其他客户的共享资源上的需求不同而差别很大。此种存储自 Amazon RDS 开始推出后就一直可用,在
2012 年 9 月推出预配置 IOPS 存储之前,它是唯一适用于 Amazon RDS 的存储类型。
您可通过指定存储大小和选择预配置 IOPS 来为数据库实例分配预配置 IOPS 存储。预配置 IOPS 与标准
存储的区别在于是否为数据库实例保留指定的 IO 容量。Amazon RDS 通过为实例保留 IO 容量来确保磁
盘资源在需要对其他客户活动保持独立时可用。
您可从标准存储更改为预配置 IOPS 存储,或从预配置 IOPS 存储更改为标准存储,还可以增加存储,并
且在此期间很少或无需停机。
性能指标
Amazon RDS 为您提供两种用于确定性能的指标类型:磁盘指标和数据库指标。
磁盘指标
• IOPS – 每秒完成的 IO 操作数量。该指标报告为特定时间间隔内的平均 IOPS。Amazon RDS 每隔一分
钟会分别报告读取和写入 IOPS。总 IOPS 是读取和写入 IOPS 的总和。IOPS 的典型值在零到每秒数
万次之间。
• 延迟 – 从提交 IO 请求到完成请求之间的已用时间。该指标报告为特定时间间隔内的平均延迟。Amazon
RDS 每隔一分钟会分别报告读取和写入延迟(以秒为单位)。延迟的典型值以毫秒 (ms) 为单位;例
如,Amazon RDS 将 2 毫秒报告为 0.002 秒。
• 吞吐量 – 每秒从磁盘传出或传入的字节数。该指标报告为特定时间间隔内的平均吞吐量。Amazon RDS
每隔一分钟会分别报告读取和写入吞吐量(以兆字节每秒 (MB/s) 为单位)。吞吐量的典型值在零到 IO
通道的最大带宽延迟之间。
• –队列深度 – 队列中等待处理的 IO 请求数量。这些是由应用程序提交但由于设备忙于处理其他 IO 请求
而尚未发送到设备的 IO 请求。在队列中等待的时间是延迟和服务时间的一部分(不可作为指标)。该
指标报告为特定时间间隔内的平均队列深度。Amazon RDS 每隔一分钟报告一次队列深度。队列深度
的典型值在零到数百之间。
数据库指标
• 提交延迟 – 从提交请求到收到确认之间的已用时间。该指标与磁盘指标写入延迟密切相关。磁盘写入延
迟低可能会导致提交延迟低。
API Version 2013-05-15
35
Amazon Relational Database Service 用户指南
关于 Amazon RDS 存储的情况
• 事务速率 – 在特定时间间隔内完成的事务数量,通常用 TPM(每分钟事务数)或 TPS(每秒钟事务
数)表示。事务速率的另一个常用术语是数据库吞吐量,不应将其与磁盘指标的吞吐量混淆。这两个指
标不一定有关系;数据库具有高事务速率,因此存在极少或根本就没有磁盘吞吐量,例如,包含缓存读
取的工作负载。
关于 Amazon RDS 存储的情况
以下几点是您应该了解的关于 Amazon RDS 存储的重要情况:
• 当前可用的最大全双工通道带宽为 1000 兆位每秒 (Mbps)。对于读取和写入吞吐量指标,这相当于大
约为每方向每秒 105 兆字节 (MB/s)。50% 为写入且 50% 为读取的完全平衡的工作负载可以获得的最
大组合吞吐量为 210 MB/s。请注意,这是通道吞吐量,其中包括协议开销,因此,实际的数据吞吐量
可能更少。
• 预配置 IOPS 与 16 KB IO 请求大小配合使用。小于 16 KB 的 IO 请求将作为单个 IO 进行处理;例如,
1000 个 8 KB IO 请求的处理方式与 1000 个 16 KB 请求的处理方式相同。超过 16 KB 的 IO 请求将使
用多个 IO 请求;预配置 IOPS 占用是处理超过 16 KB 的 IO 请求的线性函数。例如,24 KB IO 请求占
用存储容量的 1.5 个 IO 请求;32 KB IO 请求占用 2 个 IO 请求,依此类推。有关预配置 IOPS 的更多
信息,请参阅 使用预置 IOPS 存储 (p. 257)
请注意,IO 大小不影响指标报告的 IOPS 值,IOPS 值仅基于随时间变化的 IO 数量。也就是说,如果
IO 大小超过 16 KB,则可能占用使用比指定 I/O 更少的 I/O 预配置的所有 IOPS。例如,预配置 5,000
IOPS 的系统最多可实现使用 32 KB IO 的 2,500 IOPS 或使用 64 KB IO 的 1,250 IOPS。
请注意,标准存储未预配置 IO 容量,因此,任何大小的 IO 都被视为单个 IO。
• 首次启动数据库实例并访问磁盘区域时,访问进程所需的时间比后续访问相同磁盘区域的时间长。这称
为“首次接触处罚”。某个磁盘区域遭受首次接触处罚后,该磁盘区域在实例的整个生命周期中不会再遭
受这种处罚,即使数据库实例重启或数据库实例类发生更改,也是如此。请注意,通过快照、时间点还
原或只读副本创建的数据库实例是新实例,一定会遭受首次接触处罚。
• 预配置 IOPS 提供了一种通过指定 IOPS 来预留 IO 容量的方法。和其他任何系统容量属性一样,负载
的最大吞吐量将受到首先占用的资源限制。此类资源可以是 IOPS、通道带宽、CPU、内存或数据库内
部资源。
影响存储性能的其他因素
以下所有系统的相关活动都会占用 IO 容量,在运行期间可能会降低数据库实例的性能:
• 创建数据库快照
• 夜间备份
• 创建多可用区域对等体
• 创建只读副本
• 扩展存储
您可以查看数据库实例的读取和写入 IO 指标,将这些指标相加,得到的结果不如您预期的总和。可能的
情况是您的数据库实例未达到通道吞吐量上限,您的队列深度始终较低,您的 CPU 利用率低于 80%,因
此,您还有可用的内存空间,未执行交换活动,并且具有大量可用的磁盘空间。此外,您的应用程序拥有
许多线程,所有这些线程提交事务的速度与数据库获取事务的速度一样快,而您显然还有未使用的 IO 容
量。
如果没有任何一个系统资源达到或接近限额,并且添加线程未增加数据库事务速率,存在的瓶颈很可能是
数据库中的资源争用。最常见的形式是行锁定和索引页面锁定争用,但也存在许多其他的可能性。如果您
遇到的是这种情况,应该征询数据库性能优化专家的意见。
API Version 2013-05-15
36
Amazon Relational Database Service 用户指南
地区和可用区域
地区和可用区域
Amazon 云计算资源存储在位于全球不同区域(例如,北美、欧洲和亚洲)的具有高度可用性的数据中心
设施中。每个数据中心位置称为一个“地区”。
每个地区包含许多不同的称为“可用区域”(或 AZ)的位置。每个可用区域都被设计成不受其他可用区域
故障的影响,并提供低价、低延迟的网络连接,以连接到同一地区其他可用区域。通过启动独立可用区域
内的实例,您可以保护您的应用程序不受单一位置故障的影响。
请务必记住每个地区都是完全独立的。您启动的任何 Amazon RDS 活动(如创建数据库实例或列出可用
的数据库实例)都只会在您当前的默认地区中运行。可在控制台中更改默认地区,具体方式如下:设置
EC2_REGION 环境变量,或者通过命令行界面使用 --url 参数将其覆盖。有关更多信息,请参阅
Common Options for API Tools。
Amazon RDS 支持名为 GovCloud 的特殊 AWS 地区,此地区允许美国政府机构和客户将较为敏感的工
作负载移到云中,从而满足特定的法规和合规性要求。有关 GovCloud 的更多信息,请访问 AWS GovCloud
(US) 主页。
要在特定地区中创建或使用 Amazon RDS 数据库实例,请使用相应的地区服务终端节点。
Amazon RDS 支持下表中列出的终端节点。
Region
Name
tniopdn
E
美国东部(弗吉尼亚北部)地区
a
m
1
.a
-o
zn
a
cm
w
e
a
tsu
.-s1d
.s-r/ts/aep
:s-tsu
h
t
US West (Northern California) Region
a
m
1
.a
o
z-n
w
cm
u
-e
st.1d
.sr-/t/sw
e
p
:s-tsu
h
t
US West (Oregon) Region
a
m
2
.a
o
z-n
w
cm
u
-e
st.2d
.sr-/t/sw
e
p
:s-tsu
h
t
EU (Ireland) Region
a
m
1
.a
o
z-n
cw
m
e
u
-t.s1d
.sr-/t/sw
e
p
:st-ue
h
t
Asia Pacific (Tokyo) Region
a
m
1
.-a
o
zh
n
e
a
o
cw
m
tsn
.so
a
1
rp
-d
.-srts/a
e
h/tp
:sro
nt-p
h
a
t
Asia Pacific (Singapore) Region
a
m
1
.a
-o
zn
h
a
cm
e
w
tso
u
t.a
sp
1
-d
.s-rt/sa
e
h/p
tu
:sot-p
h
a
t
Asia Pacific (Sydney) Region
a
m
2
.a
-o
zn
h
a
cm
e
w
tso
u
t.a
sp
2
-d
.s-rt/sa
e
h/p
tu
:sot-p
h
a
t
South America (Sao Paulo) Region
a
m
1
.a
-o
zn
a
cm
w
e
a
ts.-1d
.s-r/ts/aep
:s-tas
h
t
GovCloud
a
m
1
.a
-o
w
zn
ca
m
g
w
o
-ve
tsu
-.1d
.s-r/tw
se/-vo
p
:g
st-su
h
t
如果您未明确指定终端节点,则默认使用美国西部(俄勒冈)终端节点。
API Version 2013-05-15
37
Amazon Relational Database Service 用户指南
相关主题
相关主题
• 数据库实例 (p. 32)
高可用性
Amazon RDS 可以为数据库实例提供高性能和故障转移支持。Oracle 和 MySQL 数据库实例可以采用多
可用区域部署,Amazon 将自动在不同的可用区域预配置和维护同步备用副本。利用这两个多可用区域,
主数据库实例可以跨可用区域同步复制到备用副本,从而在系统备份期间提供数据冗余、故障转移支持、
消除 I/O 冻结和最大程度地降低延迟峰值。在计划内的系统维护期间,运行高性能的数据库实例可以提高
可用性,并帮助保护数据库以防数据库实例发生故障和可用区域中断。
请注意,高可用性功能不是面向只读情况的扩展解决方案;您不能使用备用副本处理读取流量。要处理只
读流量,您应当使用只读副本。
如果主数据库实例出现计划内或计划外的中断,Amazon RDS 会自动切换到其他可用区域的备用副本。
自动故障转移机制只是更改了主数据库实例的别名记录 (CNAME),将其指向备用数据库实例。请注意,
高可用性并不表示 Amazon 能让两个数据库保持并行运行状态;它只是复制磁盘上的数据。如果主数据
库实例变得不可用,则会启动故障转移,并启动备用副本上的数据库软件。完成故障转移所花费的时间取
决于数据库活动以及主数据库实例变得不可用时的其他情况。完成故障转移后,RDS 控制台 UI 还需要一
段时间才能反映新的可用区域。
Amazon RDS 会自动处理故障转移,因此您可以尽快恢复数据库操作而无需管理干预。如果出现以下任
一情况,主数据库实例会自动切换到备用副本:
• 可用区域中断
• 主数据库实例发生故障
• 数据库实例的服务器类型已更改
• 数据库实例正在应用修补软件
创建数据库实例时,只需指定多可用区域即可创建多可用区域部署。通过修改数据库实例和指定多可用区
域选项,即可将现有的数据库实例转换为多可用区域部署。请注意,您在使用高可用性功能时仍需采用最
佳实践。
RDS 控制台会显示备用副本的可用区域(称为辅助可用区域),您也可以使用命令
rds-describe-db-instances 或 API 操作 DescribeDBInstances 查找辅助可用区域。使用 BYOL 许可模型
时,您必须具备主实例和备用副本的许可。
API Version 2013-05-15
38
Amazon Relational Database Service 用户指南
数据库实例维护
与单可用区域部署相比,使用多可用区域的数据库实例由于执行同步数据复制,因此增加了延迟。尽管
AWS 设计用于处理可用区域之间的低延迟网络连接,但如果您的部署故障转移到备用副本,延迟可能会
发生更改。
数据库实例维护
在用户可定义的维护时段,Amazon RDS 系统会定期对数据库实例进行维护。您可以将维护时段视为在
请求或要求的情况下控制何时执行数据库实例修改(例如对数据库实例的存储或 CPU 类实施待定更改)
及修补软件的机会。如果在给定的周内安排了维护事件,将在您确定的 30 分钟维护时段内的某个时间点
启动和完成维护。
唯一需要使用 Amazon RDS 将数据库实例脱机的情况是扩展计算操作(从始至终通常只需要几分钟时间)
或要求修补软件的情况。只有安全和耐久的补丁会自动安排要求的修补。这种修补很少发生(通常几个月
一次),并且几乎不会需要过长的维护时段。如果创建数据库实例时未指定首选周维护时段,将分配默认
值 30 分钟。如果希望在代您执行维护时进行修改,您可以通过 AWS 管理控制台或使用 ModifyDBInstance
API 修改数据库实例来执行该操作。如果选择这样操作,您的各个数据库实例可以执行不同的首选维护时
段。
采用多可用区域部署的方式运行数据库实例可进一步降低维护事件的影响,这是因为 Amazon RDS 将通
过以下步骤执行维护:1) 对备用实例执行维护;2) 将备用实例提升为主要实例;3) 对旧的主实例执行维
护,该实例将成为新的备用实例。有关多可用区域部署的更多信息,请参阅 高可用性 (p. 38)。
这个 30 分钟维护时段是随机从每个地区的 8 小时时间段中选择出来的。如果创建数据库实例时未指定首
选的维护时段,Amazon RDS 会在每周随机选定一个日期,并指定一个 30 分钟的维护时段。
下表列出了每个地区分配默认维护时段的时间段。
Region
Time Block
美国东部(弗吉尼亚北部)地 03:00-11:00 UTC
区
US West (Northern California) 06:00-14:00 UTC
Region
US West (Oregon) Region
06:00-14:00 UTC
EU (Ireland) Region
22:00-06:00 UTC
Asia Pacific (Tokyo) Region
17:00-03:00 UTC
Asia Pacific (Sydney) Region 12:00-20:00 UTC
Asia Pacific (Singapore)
Region
14:00-22:00 UTC
South America (São Paulo)
Region
00:00-08:00 UTC
GovCloud
06:00-14:00 UTC
相关主题
• 调整首选维护时段 (p. 266)
API Version 2013-05-15
39
Amazon Relational Database Service 用户指南
Amazon RDS 和 Amazon Virtual Private Cloud 服务
Amazon RDS 和 Amazon Virtual Private Cloud 服
务
您可以使用 Amazon Virtual Private Cloud (VPC) 服务创建可从中启动 Amazon RDS 数据库实例的虚拟
私有云。如果使用虚拟私有云,您就可以控制您的虚拟联网环境:您可以选择自己的 IP 地址范围、创建
子网以及配置路由和访问控制列表。无论是否在 VPC 中运行,Amazon RDS 的基本功能都保持不变:
Amazon RDS 用于管理备份、软件修补,自动故障检测和恢复。在 VPC 中运行数据库实例不会产生额外
费用。
Amazon RDS 在每个地区都支持两个 VPC 平台:EC2,VPC 支持的平台要求使用 Amazon VPC 服务创
建 VPC,VPC 支持的平台可为 AWS 账户提供某个地区的默认 VPC。要确定您的账户中在特定地区支持
的平台,请参阅 确定是否具有默认 VPC (p. 252)。
下图为在选定区域没有默认 VPC 的 AWS 账户显示了 EC2,VPC 支持的平台的信息。
借助 VPC 平台,可为 AWS 账户分配可以启动数据库实例的默认 VPC,也可以使用 Amazon VPC 创建
自己的 VPC。如果您的 AWS 账户支持某个地区的 VPC 平台,您的所有数据库实例都将在 VPC(默认
VPC 或您创建的 VPC)内创建。
在任何 VPC(包括默认 VPC)中启动 RDS 实例时,您可以指定您创建的数据库实例是否包含使用
PubliclyAccessible 参数解析到公有 IP 地址的 DNS。即使 VPC 有公有 IP 地址,该参数也会控制数据库
实例的公开访问权限。如果希望可公开访问 VPC 中的数据库实例,则必须启用 VPC 属性 DNS 主机名
和 DNS 解析。有关创建 VPC 的更多信息,请参阅 为 RDS 实例创建 VPC 时需要考虑的事项 (p. 41)。
下图显示了数据库实例启动向导中的可公开访问 参数。
API Version 2013-05-15
40
Amazon Relational Database Service 用户指南
为 RDS 实例创建 VPC 时需要考虑的事项
您可能在 VPC 内部署 Amazon RDS,以运行后端服务器不可公开访问的面向公众的 Web 应用程序。例
如,您可以创建包含公有子网和私有子网的 VPC。充当 Web 服务器的 Amazon EC2 实例可以在公有子
网中部署,Amazon RDS 数据库实例在私有子网中部署。在此部署方案中,只有 Web 服务器才能访问数
据库实例。
为 RDS 实例创建 VPC 时需要考虑的事项
使用 Amazon VPC 情景记录了最常见的 VPC 使用情景。其中的每个情景都包含详细说明情景的链接。
本部分末尾的实施情景链接为您提供了如何为该情景创建 VPC 的说明。有关 Amazon VPC 的更多信息,
请参阅 Amazon Virtual Private Cloud User Guide 了解创建 VPC 的详细说明。
如果您在 EC2 平台上或要创建自己的 VPC,则需要了解这些事项。
• 在要部署数据库实例的地区中,您的 VPC 必须至少拥有其中两个可用区域的一个子网。
• 如果希望可公开访问 VPC 中的数据库实例,则必须启用 VPC 属性“DNS 主机名”和“DNS 解析”。
• VPC 必须包含数据库子网组。通过指定您在上一步中创建的子网创建数据库子网组。然后,Amazon
RDS 使用该数据库子网组和您首选的可用区域来选择子网及该子网内的 IP 地址,从而将其分配给您的
数据库实例。
• VPC 必须包含 VPC 安全组。您可以使用提供的默认 VPC 安全组。
• 每个子网必须包含足够大的 CIDR 数据块,以便在维护活动(包括故障转移和扩展计算)期间有可供
Amazon RDS 使用的备用 IP 地址。
数据库子网组
数据库子网组是建议为 VPC 创建并随后指定给数据库实例的子网(通常为私有子网)集合。使用数据库
子网组,您可以在使用 CLI 或 API 创建数据库实例时指定特定 VPC;如果您使用控制台,可以选择要使
用的 VPC 和子网。
每个数据库子网组应包含给定地区中至少两个可用区域的一个子网。在 VPC 中创建数据库实例时,必须
选择一个数据库子网组。然后,Amazon RDS 使用该数据库子网组和您首选的可用区域来选择子网及该
子网内的 IP 地址,从而与您的数据库实例相关联。如果某一多可用区域部署的主数据库实例出现故障,
Amazon RDS 可以提升相应的备用副本,并随后在另外一个可用区域中使用子网的 IP 地址创建一个新备
用副本。
在 VPC 中创建数据库实例时,Amazon VPC 会使用从数据库子网组中选取的 IP 地址将网络接口分配给
您的数据库实例。但是,我们强烈建议您使用 DNS 名称来连接数据库实例,因为底层 IP 地址可能会在
故障转移期间发生变化。
隐私级别
在创建 VPC 时,您可以根据所需的隐私级别来配置 VPC。在最高隐私级别情况下,您只需附加虚拟专用
网关并在 VPC 与本地网络之间创建 IPsec 隧道即可。在这种情况下,您的实例没有直接接触到 Internet。
另外,您可以通过虚拟专用网关和 Internet 网关配置 VPC。例如,您的 Web 服务器将可以接收 Internet
流量,您的数据库服务器可以保持私有状态。这是在 AWS 云中运行多层 Web 应用程序的一种常见拓扑
结构。
有关在 VPC 中配置私有内容的更多信息,请参阅 Amazon VPC 文档。
路由选择和安全性
您可以在 VPC 中配置路由,以控制流量的流向(例如,流向 Internet 网关或虚拟专用网关)。通过 Internet
网关,您的 VPC 能直接访问 Amazon Simple Storage Service (Amazon S3) 等 AWS 资源。如果您选择
只用一个虚拟专用网关连接到本地网络,则可以通过该 VPN 实现 Internet 流量路由,并借助您的本地安
API Version 2013-05-15
41
Amazon Relational Database Service 用户指南
数据库实例备份
全性策略和防火墙控制流量的输出。在这种情况下,当您通过 Internet 访问 AWS 产品时,将产生额外的
带宽费用。
您可以使用数据库安全组、网络 ACL 和 VPC 安全组帮助确保 VPC 内数据库实例的安全。安全组在实例
级别上发挥作用,功能与防火墙类似;而网络 ACL 则是在子网级别上发挥作用的额外安全层。部署在
Amazon VPC 内的 Amazon EC2 实例可以访问部署在同一 VPC 内的数据库实例。如果这些 EC2 实例部
署在公共子网中,且有相关联的弹性 IP,则可以通过 Internet 访问 EC2 实例。请注意,EC2 安全组和
VPC 安全组不可互换。
Note
我们强烈建议您使用 DNS 名称来连接数据库实例,因为底层 IP 地址可能会在故障转移期间发生
变化。
从 Internet 或 VPC 外的 EC2 实例可以可能访问 VPC 中部署的数据库实例。可通过所属数据库安全组中
指定的 IP 地址和创建数据库实例时指定的端口访问数据库实例。如果 VPC 安全组指定端口访问(如 TPC
端口 22),您就无法访问数据库实例,因为该数据库实例的防火墙仅通过创建数据库实例时定义的 IP 地
址提供访问。有关创建带有公有和私有子网的 VPC 的更多信息,请参阅 情景 2:带有公有子网和私有子
网的 VPC。
有关使用 Amazon RDS 和 Amazon Virtual Private Cloud 的更多信息,请参阅 将 Amazon RDS 与 Amazon
Virtual Private Cloud 结合使用 (p. 252)。
Amazon VPC 文档
Amazon VPC 有自己的一套文档,用来描述如何创建和使用您的 VPC。下表给出了到 Amazon VPC 指
南的链接。
描述
文档
如何开始使用 Amazon VPC
Amazon Virtual Private Cloud Getting Started Guide
如何通过 AWS 管理控制台使用 Amazon VPC
Amazon Virtual Private Cloud User Guide
关于所有 Amazon VPC 命令的完整描述
Amazon Elastic Compute Cloud 命令行参考
(Amazon VPC 命令是 Amazon EC2 参考的一部
分)
关于 Amazon VPC API 操作、数据类型和错误的
完整描述
Amazon Elastic Compute Cloud API Reference
(Amazon VPC API 操作是 Amazon EC2 参考的
一部分)
关于需要在您终止可选的 IPsec VPN 连接时对网关 Amazon Virtual Private Cloud Network
进行配置的网络管理员之信息
Administrator Guide
数据库实例备份
Amazon RDS 提供两种不同的方法来备份和还原 Amazon 数据库实例:自动备份和数据库快照。自动备
份会在用户自定义的特定备份时段自动备份数据库实例,然后在用户指定的有限时间段(称为备份保留
期)内保存备份;随后,就可以在此保留期内将数据库恢复至任一时间点。数据库快照是用户启动的快
照,可让您将数据库实例备份到已知状态,然后随时还原到此特定状态。Amazon RDS 会保存所有的数
据库快照,直到您将它们删除。
API Version 2013-05-15
42
Amazon Relational Database Service 用户指南
自动备份
Note
短暂 I/O 冻结通常会持续几秒钟,发生在单可用区域数据库实例的自动化备份和数据库快照操作
期间。
自动备份
自动备份是一种 Amazon RDS 功能,此功能可以自动创建数据库备份。默认情况下会为新数据库实例启
用自动备份。
自动备份可以在用户可配置的日常时间段内进行,该时间段称为首选备份时段。系统会在用户可配置的天
数(即备份保留期)内保留在备份窗口期间创建的备份。
首选备份时段是用户定义的时间段,在该时间段内数据库实例将进行备份。Amazon RDS 借助这些定期
数据备份以及事务日志,让您能够将数据库实例还原到保留期内的任何秒数,最多到最近可还原的时间
(通常位于最后五分钟内)。在备份时段期间,备份您的数据时可能会暂停存储 I/O,您遇到的延迟可能
会有所提升。这种 I/O 暂停通常会在快照期间持续出现。I/O 暂停的时间比多可用区域数据库部署的时间
短,因为备份是从备用副本获取的,但是在备份过程中会出现延迟。
如果备份保留更改为非零值,则系统会立即进行首个备份过程。将备份保留期改为 0 可以关闭数据库实例
的自动备份,并删除此实例的所有现有自动备份。
如果创建数据库实例时不指定首选备份时段,Amazon RDS 会分配默认的 30 分钟备份时段,此时段会在
每一地区的 8 小时时块内随机选定。
下表列出了已分配默认备份时段的各个地区的时间块。
Region
Time Block
美国东部(弗吉尼亚北部)地 03:00-11:00 UTC
区
US West (Northern California) 06:00-14:00 UTC
Region
US West (Oregon) Region
06:00-14:00 UTC
EU (Ireland) Region
22:00-06:00 UTC
Asia Pacific (Tokyo) Region
17:00-03:00 UTC
Asia Pacific (Sydney) Region 12:00-20:00 UTC
Asia Pacific (Singapore)
Region
14:00-22:00 UTC
South America (São Paulo)
Region
00:00-08:00 UTC
GovCloud
03:00-11:00 UTC
对备份窗口的更改会立即生效。备份时段不能与数据库实例的每周维护时段重叠。
删除数据库实例时,您可以在删除时创建最终的数据库快照;如果这样,您就可以在将来利用此数据库快
照恢复已删除的数据库实例。删除数据库实例后,Amazon RDS 会将这个用户创建的最终数据库快照与
所有其他手动创建的数据库快照一起保留。当您删除数据库实例时,会删除所有的自动备份,并且无法恢
复。有关备份存储成本的信息,请参阅定价页面。
API Version 2013-05-15
43
Amazon Relational Database Service 用户指南
数据库快照
有关使用自动备份的更多信息,请转到 使用自动备份 (p. 199)。
时间点恢复
除了每日自动备份,Amazon RDS 还会归档数据库更改日志。这可让您在备份保留期将数据库恢复到任
一时间点,一直到最后五分钟的数据库使用情况。
Amazon RDS 会存储多个数据副本,但是对于单可用区域数据库实例,这些副本会存储在单可用区域中。
如果出于任何原因单可用区域数据库实例变得不可用,可以使用时间点恢复,以启动具有最近可还原数据
的新数据库实例。有关使用时间点恢复的更多信息,请转到 将数据库实例还原至指定时间 (p. 208)。
Note
多可用区域部署会在不同可用区域中存储数据副本,以便实现更高的数据持久性级别。有关多可
用区域部署的更多信息,请参阅 高可用性 (p. 38)。
使用不支持的 MySQL 存储引擎进行自动备份
目前所有数据库引擎都支持 Amazon RDS 自动备份和数据库快照。对于 MySQL 数据库引擎,仅支持
InnoDB 存储引擎;在从备份还原的过程中,配合 MyISAM 等其他 MySQL 存储引擎使用这些功能,可能
会导致性能不可靠。具体而言,由于像 MyISAM 一样的存储引擎不支持可靠的崩溃恢复,因此如果发生
崩溃,就可能会损坏您的表。为此,我们建议您使用 InnoDB 存储引擎。
如果选择使用 MyISAM,可以尝试使用 REPAIR 命令手动修复崩溃后受损的表(请参阅:
http://dev.mysql.com/doc/refman/5.5/en/repair-table.html)。然而,正如 MySQL 文档所指出,您可能再
也不能恢复所有数据。
如果要使用 MyISAM 表拍摄数据库快照,请按照下列步骤操作:
启动过程
1
停止 MyISAM 表的所有活动(即关闭所有会话)
2
锁定并刷新每个 MyISAM 表
3
发出 CreateDBSnapshot API 调用,或者使用 Amazon RDS CLI 命令
rds-create-db-snapshot。完成快照后,释放 MyISAM 表上的锁定和恢复活动。这些步
骤强制 MyISAM 将存储在内存中的数据刷新到磁盘上,从而确保从数据库快照还原后,以
清空状态开始下一操作。
最后,如果您希望将现有的 MyISAM 表转换为 InnoDB 表,可以使用更改表命令(例如,alter table
TABLE_NAME engine=innodb;)。
数据库快照
数据库快照由用户启动,可让您按所需的任意频率在已知状态备份数据库实例,然后随时还原到该特定的
状态。数据库快照可以使用 Amazon RDS 控制台或在 Amazon RDS API 中使用 CreateDBSnapshot 操
作创建。数据库快照会一直保存,直到您使用 Amazon RDS 控制台或在 Amazon RDS API 中使用
DeleteDBSnapshot 操作将其删除。有关使用数据库快照的更多信息,请参阅 创建数据库快照 (p. 202)
和 从数据库快照中还原 (p. 204)。
相关主题
• 创建数据库快照 (p. 202)
• 从数据库快照中还原 (p. 204)
API Version 2013-05-15
44
Amazon Relational Database Service 用户指南
复制数据库实例
• 复制数据库快照 (p. 206)
• 使用自动备份 (p. 199)
复制数据库实例
目前可以采用两种方式创建数据库实例副本。使用 Oracle 或 MySQL DB 引擎的数据库实例可以采用多可
用区域部署,在这种部署中,Amazon RDS 将在不同的可用区域(物理位置分隔的独立基础设施)自动
预配置和管理备用副本。如果遇到计划内的数据库维护、数据库实例故障或可用区域故障,Amazon RDS
将自动故障转移到备用副本,因此,即便没有管理干预,也能很快恢复数据库操作。有关多可用区域部署
的更多信息,请参阅 高可用性 (p. 38)。
Amazon RDS 使用 MySQL 内置的复制功能创建名为只读副本的特殊类型数据库实例,可让您轻松实现
弹性扩展,超越单个数据库实例的容量限制,满足大量数据库读取工作负载的需求。创建只读副本后,源
数据库实例的数据库更新信息将通过 MySQL 的本机异步复制功能复制到只读副本。Amazon RDS 目前
仅支持在 MySQL 的 Amazon RDS 实例之间复制,或者导入和导出在 Amazon RDS 内部或外部运行的
MySQL 实例的数据。
只读副本
您可以为给定的源数据库实例创建多个只读副本,并在它们当中分配应用程序的读取流量。您还可以通过
其他只读副本创建只读副本。由于只读副本利用 MySQL 的内置复制功能,因此它们受其优势和局限约
束。特别是,对源数据库实例进行更新后,更新将应用到只读副本,但复制滞后性可能会有很大差别。可
以使用多可用区域部署创建只读副本,从而获得读取扩展优势,同时实现多可用区域部署提供的增强的数
据库写入可用性和数据持久性。
您可以使用 RDS 控制台或 API 监控只读副本的状态。有关监控只读副本状态的更多信息,请参阅 使用只
读副本 (p. 91)。
在很多情况下,为给定的源数据库实例部署一个或多个只读副本可能比较明智。部署只读副本的常见原因
包括:
• 扩展用于执行大量读取数据库工作负载的单个数据库实例的计算资源或 I/O 容量。这样可将过多的读取
流量引导到一个或多个只读副本。
• 当源数据库实例不可用时,为读取流量提供服务。如果您的源数据库实例无法处理 I/O 请求(例如,由
于备份或计划维护而暂停 I/O),可以将读取流量引导到只读副本。对于这种使用案例,请注意由于源
数据库实例不可用,因而只读副本中的数据可能处于“静态”。
• 业务报告或数据仓库情况;您可能希望针对只读副本运行业务报告查询,而非主副本的生产数据库实
例。
您可以使用复制功能将在 Amazon RDS 外部运行的 MySQL 实例的数据导入到在 Amazon RDS 内部运行
的 MySQL 实例。还可以将在 Amazon RDS 内部运行的 MySQL 实例的数据导出到在 Amazon RDS 外部
运行的 MySQL 实例。
只读副本需要使用事务性存储引擎,并仅支持用于 InnoDB 存储引擎。非事务性引擎(如 MyISAM)可能
会阻止只读副本按预期方式运行。不过,如果您仍然选择将 MyISAM 与只读副本配合使用,建议您密切
监视 Amazon CloudWatch“副本滞后”指标(通过 AWS 管理控制台或 Amazon Cloud Watch API 提供),
并在其由于复制错误落后时重新创建只读副本。使用临时表及任何其他非事务性引擎时,也应考虑上述事
项。
可以将 MySQL 只读副本提升到独立的单可用区域数据库实例中。鉴于以下多种原因,建议您提升只读副
本:
• 执行 DDL 操作:创建或重新生成索引等 DDL 操作需要时间,并会显著影响数据库实例性能。只读副本
与其源数据库实例同步后,就可以在只读副本上执行这些操作。然后就可以提升此只读副本,并指导应
用程序使用提升的实例。
API Version 2013-05-15
45
Amazon Relational Database Service 用户指南
AWS Identity and Access Management
• 分片:分片体现了“无共享”架构,主要涉及将大型数据库分成几个较小的数据库。拆分数据库的常用方
法包括:1) 将未加入到同一查询中的表拆分到不同主机;或 2) 跨多台主机复制表,然后通过哈希算法
确定哪一台主机接收给定的更新。可以创建与各“分片”(较小的数据库)相对应的只读副本,决定将它
们转换成“独立”分片后即可对其进行升级。然后可以根据您的要求,为每个分片创建表的密钥空间(如
果要拆分行)或分配。
• 执行故障恢复 – 如果源数据库实例出现故障,可以使用只读副本提升作为数据恢复方案,然而,如果您
的使用案例需要同步复制、自动故障检测和故障转移,我们建议您将数据库实例转而当作多可用区域部
署运行。如果您了解异步复制的影响和限制,并且仍然要使用只读副本提升功能实现数据恢复,您可能
要首先创建一个只读副本,然后监控源数据库实例的故障情况。如果出现故障,请执行以下操作:
1. 提升只读副本。
2. 将数据库流量指引到提升的数据库实例。
3. 将提升的数据库实例作为源,创建替代只读副本。
您可以使用 Amazon Relational Database Service API Reference 执行所有这些操作,并使用 Amazon
Simple Workflow Service Developer Guide 实现此过程的自动化。
相关主题
• 使用只读副本 (p. 91)
AWS Identity and Access Management
Amazon RDS 通过与 AWS Identity and Access Management (IAM) 集成,您可以控制哪些用户可在您的
AWS 账户中创建或修改数据库实例。通过 IAM,您的组织可执行以下操作:
•
•
•
•
•
在组织的 AWS 账户下创建用户和组
轻松地在账户中的用户间共享您的 AWS 账户资源
为每个用户分配具有唯一性的安全证书
精确地控制用户访问服务和资源的权限
获取一份包含 AWS 账户下所有用户的 AWS 账单
借助 IAM,您可以控制哪些人员可创建或更改数据库实例,但 IAM 不能与 Amazon RDS 结合使用来控制
用户访问资源(如数据库)的权限。有关在 Amazon RDS 中使用 IAM 的更多信息,请参阅 管理对 Amazon
RDS 资源和数据库的访问 (p. 48)
有关 IAM 的一般信息,请转到:
• Identity and Access Management (IAM)
• IAM Getting Started Guide
• 使用 IAM
有关如何控制 Amazon RDS 的用户访问权限的具体信息,请转到 使用 IAM 中的与其他 AWS 产品集成。
无法检索账户属性
近期对 Amazon RDS 作出的变更可能导致某些 IAM 用户能够基于 Amazon RDS 完全访问策略模板获得
权限这一错误。“检索账户属性失败,某些控制台功能可能受损。正在重试…,”错误显示在页面顶部,此
错误是由于控制台调用在 Amazon RDS 完全访问策略中未明确指定权限的操作而导致。我们正在积极致
力于修复此问题。
API Version 2013-05-15
46
Amazon Relational Database Service 用户指南
无法检索账户属性
为了解决这个问题,您的 IAM 管理员必须更新 IAM 用户的策略文件,以允许两个额外的 Amazon EC2 操
作:ec2:DescribeAccountAttributes 和 ec2:DescribeSecurityGroups。您必须针对基于 Amazon RDS 完
全访问策略模板而被指定一种策略的任何 IAM 用户或组作出此更改。
例如,下面的代码是 Amazon RDS 完全访问策略模板的默认策略文件。
{ "Statement": [ { "Action": [ "rds:*", "ec2:DescribeAvailabilityZones",
"ec2:DescribeVpcs", "cloudwatch:GetMetricStatistics", "cloudwatch:DescribeAl
arms", "sns:ListTopics", "sns:ListSubscriptions" ], "Effect": "Allow", "Re
source": "*" } ] }
添加上述的两个额外操作以获取下面的策略文件,而此策略文件将允许控制台调用所需的操作。
{ "Statement": [ { "Action": [ "rds:*", "ec2:DescribeAvailabilityZones",
"ec2:DescribeVpcs", "ec2:DescribeAccountAttributes", "ec2:DescribeSecurity
Groups", "cloudwatch:GetMetricStatistics", "cloudwatch:DescribeAlarms",
"sns:ListTopics", "sns:ListSubscriptions" ], "Effect": "Allow", "Resource": "*"
} ] }
关于更新 IAM 策略的更多信息,请参阅管理 IAM 策略。
API Version 2013-05-15
47
Amazon Relational Database Service 用户指南
管理对 Amazon RDS 资源和数据库的
访问
Topics
• 使用 AWS Identity and Access Management (IAM) 管理对 Amazon RDS 资源的访问 (p. 49)
• Amazon RDS 安全组 (p. 60)
您可以管理对数据库实例上的 Amazon RDS 资源和数据库的访问。用来管理访问的方法取决于用户需要
对 Amazon RDS 执行的任务类型:
• 使用 IAM 策略分配确定可以管理 RDS 资源的人员的权限。例如,您可以使用 IAM 来确定可以创建、
描述、修改和删除 RDS 实例、标签资源或修改数据库安全组的人员。
• 使用安全组可以控制可连接到数据库实例上的数据库的 IP 地址或 EC2 实例。首次创建数据库实例时,
除非通过关联安全组指定的规则进行访问,否则实例防火墙会阻止任何数据库访问。
• 使用与数据库实例(运行 MySQL 或 SQL Server 数据库引擎)的 SSL 连接;有关配合使用 SSL 和数
据库实例的更多信息,请参阅 对 MySQL 数据库实例使用 SSL (p. 66) 或 对 SQL Server 数据库实例使
用 SSL (p. 155)。
• 对 Oracle 数据库实例使用网络加密和透明数据加密;有关更多信息,请参阅 Oracle 本地网络加密 (p. 133)
和 Oracle 透明数据加密 (TDE) (p. 134)
• 在 Amazon Virtual Private Cloud (VPC) 中运行数据库实例以便进行额外的网络访问控制。有关在 VPC
中创建数据库实例的更多信息,请参阅将 Amazon RDS 与 Amazon Virtual Private Cloud (VPC) 结合
使用 (VPC)。
• 使用数据库引擎的安全功能控制可以登录数据库实例上的数据库的人员,就像该数据库位于本地网络中
一样。
Note
您只需要为您的使用案例配置安全;您不必为 Amazon RDS 管理的进程(例如,创建备份、在
主节点和只读副本之间复制数据或其他进程)配置安全访问。
API Version 2013-05-15
48
Amazon Relational Database Service 用户指南
使用 AWS Identity and Access Management (IAM) 管理对
Amazon RDS 资源的访问
使用 AWS Identity and Access Management (IAM)
管理对 Amazon RDS 资源的访问
使用 AWS IAM 可以创建权限,这些权限指定使用 AWS 账户的用户或组可以执行哪些 Amazon RDS 操
作,以及可对哪些 RDS 资源执行这些操作。通过使用 IAM 策略可以指定权限,该策略是 JSON 文档。
注册 AWS 账户时,您将收到 AWS 账户证书。使用这些 AWS 账户证书可以执行任何 AWS 操作,其中
包括 Amazon RDS API 操作。例如,通过使用 AWS 账户证书,您可以创建和删除数据库实例。IAM 策
略还适合与 Amazon RDS CLI 和 API 配合使用。
Note
AWS 账户证书未授予您登录数据库实例上的数据库的权限。
您不能与其他用户共享您的 AWS 账户证书。而应使用 AWS IAM 建立用户身份并创建明确指定这些用户
有权访问的 Amazon RDS 操作和资源的权限。
您可以创建管理对以下 Amazon RDS 资源的访问的权限:
•
•
•
•
•
•
•
•
•
数据库实例
数据库快照
只读副本
预留实例
数据库安全组
数据库选项组
数据库参数组
事件订阅
数据库子网组
要管理对 Amazon RDS 资源的访问,您应该采取以下步骤:
1. 使用 AWS 账户针对将管理 Amazon RDS 资源的所有用户创建 IAM 用户(用户身份)。每个用户都可
以具有单独的密码(用于控制台访问)和安全证书(用于编程和 CLI 访问)。可以将 IAM 用户组织为
组,这便于同时管理多个用户的权限。
2. 确定每个用户和组将对 Amazon RDS 资源执行的任务。例如,您可以为管理员、安全人员、数据库管
理员和开发人员创建组。
3. 或者,您也可以标记要控制访问的 Amazon RDS 资源。您可以将标签、密钥值对分配给任何 Amazon
RDS 资源,并将该标签作为一种在 IAM 策略中指定特定资源的方式。
请注意,标记在 GovCloud 区域中不可用。
4. 创建 IAM 策略,这些策略定义用户可执行的操作,并使用亚马逊资源名称 (ARN) 指定每个任务所需的
Amazon RDS 资源。如果您已对 Amazon RDS 资源使用标签,您可以为策略添加条件以便测试这些标
签值。
5. 将策略附加适用的用户或组。
为 Amazon RDS 创建 IAM 策略
默认情况下,新创建的 IAM 用户没有访问任何 AWS 资源的权限。这意味着 IAM 用户还不能使用 Amazon
RDS 控制台或 CLI。要允许 IAM 用户使用 Amazon RDS 功能,必须创建允许用户访问所需 Amazon RDS
API 操作和资源的 IAM 策略,然后将这些策略附加到需要这些权限的 IAM 用户或组。
API Version 2013-05-15
49
Amazon Relational Database Service 用户指南
为 Amazon RDS 创建 IAM 策略
IAM 策略是包含一个或多个语句的 JSON 文档。IAM 策略中的每个语句都由定义可对哪些资源执行哪些
操作的元素构成。以下示例演示一个简单的策略语句,该语句允许用户仅创建数据库实例(必须在数据库
实例名称前面添加“test”作为前缀),使用 MySQL 数据库引擎,并且仅使用微型数据库实例类。
{
"Version":"2012-10-17",
"Statement":[{
"Effect":"Allow",
"Action": "rds:CreateDBInstance",
"Resource":"arn:aws:rds:us-east-1:1234567890:db:test*",
"Condition":{"streq":{"rds:DatabaseEngine":"mysql"}},
"Condition":{"streq":{"rds:DatabaseClass": "db.t1.micro"}}
}]
}
Version 元素是必需的,并且值必须为“2012-10-17”。Effect 元素设置为或“allow”或“deny”。(默认情
况下会拒绝操作,因此,您通常指定“Allow”。)Action 元素列出策略将允许(或拒绝)的 AWS API。
在此示例中,Action 元素列出 Amazon RDS API 中的某个操作,因此,它将是此策略语句允许的唯一
操作。请注意,操作由服务名称 (rds) 和操作 (CreateDBInstance) 标识;策略可以列出任何 AWS 服务中
的操作。您可使用通配符 (*) 指定操作,例如,操作 rds:Describe* 将允许用户执行以 Describe 开头的任
何 Amazon RDS 操作(DescribeDBInstances、DescribeDBLogFiles、DescribeDBParameterGroups、
DescribeDBSnapshots 等)。
Resource 元素用于指定用户可以执行操作的资源。在此示例中,用户只能创建数据库实例,并在数据库
实例名称中添加“test”作为前缀。您应当使用亚马逊资源名称 (ARN) 指定资源,该名称包括资源所属的服
务的名称 (rds)、地区 (us-east-1)、账号和资源类型(数据库实例)。有关创建 ARN 的更多信息,请参阅
构造 Amazon RDS 亚马逊资源名称 (ARN) (p. 194)。
最后,可选的 Condition 元素用于指定对策略的其他限制,例如,日期/时间、源 IP 地址、地区或标签。
在此示例中,Condition 元素指示仅允许对带有 MySQL 数据库引擎和微型数据库实例类的实例执行操
作。有关创建条件的更多信息,请参阅条件。
此策略可附加到单个 IAM 用户,此种情况下,将允许用户执行列出的操作。您可以将策略附加到 IAM
组,该组中的每个 IAM 用户将具有这些权限。
使用 Amazon RDS 控制台所需的权限
当用户使用 Amazon RDS 控制台时,您不仅需要向这些用户授予执行您希望允许的特定操作的权限,还
需要向他们授予执行控制台自身需要的操作的权限。例如,对于简单地列出资源,控制台将运行
DescribeSecurityGroups 和 DescribeSubnets 等 API 操作。在控制台中工作的用户必须具有这些
权限;否则,用户需要使用的部分控制台可能会简单地显示用户无权执行任务的消息。
以下示例策略语句演示用户在 Amazon RDS 控制台中工作通常需要的权限。请注意,这包括以单词
“Describe”开头的 RDS 操作、与描述(列出)资源同样相关的大量 EC2 和 CloudWatch 操作以及所有
SNS 操作。
{
"Version":"2012-10-17",
"Statement":[{
"Effect": "Allow",
"Action": [
"rds:Describe*",
"rds:ListTagsForResource",
"ec2:DescribeAvailabilityZones",
API Version 2013-05-15
50
Amazon Relational Database Service 用户指南
如何在 Amazon RDS 中进行资源授权
"ec2:DescribeVpcs",
"ec2:DescribeAccountAttributes",
"ec2:DescribeSecurityGroups",
"ec2:DescribeSubnets",
"cloudwatch:GetMetricStatistics",
"cloudwatch:DescribeAlarms",
"sns:*"
],
"Resource": "*"
}]
}
}
如何在 Amazon RDS 中进行资源授权
当用户请求 Amazon RDS 操作时,将针对该请求中标识的每个资源生成一个 IAM 授权请求。Amazon
RDS 会针对提出请求的用户查看 IAM 策略。如果策略明确允许该用户对指定资源执行请求的操作,则会
执行该操作。
适用于多个资源的授权请求可导致多个资源授权。例如,对新数据库实例执行时间点还原将生成两个权限
请求:
1. 将为目标数据库实例生成授权请求。
2. 将为要还原的快照生成授权请求。
请注意,举例说来,策略可将存储或计算大小限制为特定值或范围。有关如何评估 IAM 策略的更全面的
说明,请参阅 IAM 策略评估逻辑。
在 Amazon RDS 的 IAM 策略中指定条件
当创建 IAM 策略时,可以使用两种类型的值指定条件。您可以将与资源关联的标签指定为条件,也可以
使用预定义的密钥,例如,数据库引擎类型或数据库引擎类。以下各表显示定义 Amazon RDS 的 IAM 策
略时可使用的预定义密钥。请注意,标签密钥值对和预定义密钥区分大小写。
AWS 预定义密钥
AWS 提供了一些适用于支持 IAM 策略的所有 AWS 资源的预定义密钥。下表显示适用于 Amazon RDS
资源的 AWS 预定义密钥。
AWS 预定义密钥
描述
值
类
型
aws:CurrentTime
当前时间。用于日期条件。
日
/期
时
间
aws:EpochTime
采用纪元或 UNIX 时间格式的当前时间。用于日期条件。
日
/期
时
间
API Version 2013-05-15
51
Amazon Relational Database Service 用户指南
在 Amazon RDS 的 IAM 策略中指定条件
AWS 预定义密钥
描述
值
类
型
aws:principaltype
当前请求的委托人类型(用户、账户、联盟用户等)。
字
符
串
aws:SourceIp
请求者的 IP 地址(请参阅 IP 地址)。请注意,如果您使用 aws:SourceIp, PI
并且请求来自 Amazon EC2 实例,则会评估该实例的公有 IP 地址。
地
址
aws:UserAgent
请求者的客户端应用程序。
字
符
串
aws:userid
请求者的用户 ID。
字
符
串
aws:username
请求者的用户名。
字
符
串
Amazon RDS 预定义密钥
Amazon RDS 还预定义了一些可包含在 IAM 策略的条件元素中的密钥。Amazon RDS 预定义密钥不适用
于所有操作;Amazon RDS 预定义密钥适用于以下操作:
•
•
•
•
•
•
•
•
•
CreateDBInstance
ModifyDBInstance
DeleteDBInstance
DescribeDBLogFiles
AddTagsToResource(当资源 = db 时)
RemoveTagsFromResource(当资源 = db 时)
RestoreDBInstanceToPointInTime
RestoreDBInstanceFromDBSnapshot(仅验证请求参数)
DownloadDBLogFilePortion
• DescribeDBInstance(在其中传递实例 ID)
下表显示适用于 Amazon RDS 资源的 Amazon RDS 预定义密钥。
RDS 预定义密钥
描述
值
类
型
rds:DatabaseClass
数据库实例的数据库实例类
字
符
串
rds:DatabaseEngine
数据库实例的数据库引擎
字
符
串
API Version 2013-05-15
52
Amazon Relational Database Service 用户指南
Amazon RDS 的示例 IAM 策略
RDS 预定义密钥
描述
值
类
型
rds:DatabaseName
数据库实例上的数据库的名称
字
符
串
rds:MultiAz
指示数据库实例是否在多个可用区域中运行。1 指示是数据库实例使用多个可 布
用区域。
尔
值
rds:Piops
当针对已启用 PIOP 的数据库实例提出请求时,将显示此密钥。该值将包含
实例支持的预配置 IO 数。0 指示未启用 PIOP。
整
数
rds:StorageSize
存储卷大小 (GB)
整
数
rds:Vpc
指示数据库实例是否在 Virtual Private Cloud 中运行
布
尔
值
配合使用预定义的密钥、标签和条件元素
您可以为 Amazon RDS 资源添加您自己的标签,并通过使用 Condition 元素在 IAM 策略中使用这些标
签。Amazon RDS 资源标签的格式与 Condition 元素中的预定义密钥的格式略有不同。例如,以下
Condition 元素使用预定义的密钥,并指定条件适用于数据库引擎 MySQL:
“Condition":{"streq":{"rds:DatabaseEngine", "mysql" } }
以下 Condition 元素使用 Amazon RDS 标签,并指定条件适用于密钥名为 environment 且值为 production
的标签。
"Condition":{"streq":{"rds:db-tag/environment": [“production”]} }
Condition 元素中的标签格式是“rds:”,后跟资源类型(在此示例中为“db”)、连字符以及使用正斜杠分
隔的标签密钥和标签值。
有关 IAM 策略 Condition 元素的更多信息,请参阅条件。
Amazon RDS 的示例 IAM 策略
以下示例演示您可用于管理 IAM 用户对 Amazon RDS 资源的访问的简单 IAM 策略语句。
示例 1:允许用户对所有 RDS 资源执行所有 Describe 操作
以下语句允许用户运行 describe 操作,该操作显示有关数据库实例等 RDS 资源的信息。请注意,Resource
元素中的“*”指示针对所有 Amazon RDS 资源允许操作。
{
"Version":"2012-10-17",
"Statement":[{
"Effect":"Allow",
"Action":"rds:Describe*",
"Resource":"*"
API Version 2013-05-15
53
Amazon Relational Database Service 用户指南
Amazon RDS 的示例 IAM 策略
}]
}
示例 2:允许用户创建使用指定数据库引擎的数据库实例
以下语句使用预定义的 Amazon RDS 密钥,并允许用户仅创建使用 MySQL 数据库引擎的数据库实例。
Condition 元素指示数据库引擎要求是 MySQL。
{
"Version":"2012-10-17",
"Statement":[{
"Effect":"Deny",
"Action": "rds:CreateDBInstance",
"Resource": "*",
"Condition":{"strneq":{"rds:DatabaseEngine":"mysql"}}
}]
}
示例 3:允许用户创建使用指定数据库参数和安全组的数据库实例
以下语句允许用户仅创建必须使用 mysql-production 数据库参数组和 db-production 数据库安全组的数据
库实例。
{
"Version":"2012-10-17",
"Statement":[{
"Effect":"Allow",
"Action": "rds:CreateDBInstance",
"Resource": [
"arn:aws:rds:us-east-1:1234567890:pg:mysql-production",
"arn:aws:rds:us-east-1:1234567890:secgrp:db-production" ]
}]
}
示例 4:防止用户创建使用指定数据库参数组的数据库实例
以下语句防止用户创建使用具有特定标签值的数据库参数组的数据库实例。如果您需要在创建数据库实例
时始终使用特定客户创建的数据库参数组,则可以应用此策略。
{
"Version":"2012-10-17",
"Statement":[{
"Effect":"Deny",
"Action": "rds:CreateDBInstance",
"Resource": "*",
"Condition": {streq": {"rds:db-tag/usage" : "prod" } }
}]
}
示例 5:防止用户为特定数据库实例类创建数据库实例和创建使用预配置 IOPS 的数据库实例
API Version 2013-05-15
54
Amazon Relational Database Service 用户指南
Amazon RDS 的示例 IAM 策略
以下语句防止用户创建使用数据库实例类 m2.2xlarge 和 m2.4xlarge 的数据库实例,这些实例是最大、最
昂贵的实例。此示例还防止用户创建使用预配置 IOPS 的数据库实例,这会带来额外成本。
{
"Version":"2012-10-17",
"Statement":[
{
"Effect":"Deny",
"Action":"rds:CreateDBInstance",
"Resource": "*",
"Condition":{"streq":{"rds:DatabaseClass":["db.m2.4xlarge", "db.m2.2xlarge"]}}
},
{
"Effect":"Deny",
"Action":"rds:CreateDBInstance",
"Resource": "*",
"Condition":{"NumericNotEquals":{"rds:Piops":"0"}}
}
]
}
您可以为 Amazon RDS 资源添加标签,并在策略中使用该标签指定特定资源。以下示例使用 Amazon
RDS 资源标签作为 IAM 策略的一部分来指定特定资源。
示例 6:允许用户对使用两个不同值标记的资源执行操作
以下语句允许用户对“stage”标签设置为“development”或“test”的实例执行 ModifyDBInstance 和
CreateDBSnapshot 操作。
{
"Version":"2012-10-17",
"Statement":[{
"Effect":"Allow",
"Action": [
"rds:ModifyDBInstance",
"rds:CreateDBSnapshot" ],
"Resource":"*",
"Condition":{"streq":{"db-tag/stage": [ "development", "test" ] } }
}]
}
示例 7:允许用户对在数据库实例名称前添加了用户名前缀的数据库实例执行操作
以下语句允许用户对如下数据库实例执行任何操作(添加或删除标签除外):在数据库实例名称中添加了
用户名作为前缀,并且名为“stage”的标签等于“devo”或没有称为“stage”的标签。
{
"Version":"2012-10-17",
"Statement":[{
"Effect":"Allow",
"NotAction": ["rds:AddTagsToResource","rds:RemoveTagsFromResource"],
API Version 2013-05-15
55
Amazon Relational Database Service 用户指南
Amazon RDS 的示例 IAM 策略
"Resource": "arn:aws:rds:*:314195462963:db:${aws:username}*",
"Condition":{"StringEqualsIfExists":{"rds:db-tag/stage":"devo"}}
}
有关为 Amazon RDS 资源添加标签的更多信息,请参阅 构造 Amazon RDS 亚马逊资源名称 (ARN) (p. 194)。
有关策略的更多信息,请参阅 IAM 文档中的权限和策略。
Amazon RDS 的示例 IAM 策略
IAM 策略可应用于其他 AWS 服务;例如,以下示例策略专注于管理 Amazon RDS 资源,但包括通过
Amazon RDS 控制台访问信息所需的 EC2 资源。
以下策略允许用户创建和查看所有资源、修改和删除具有标签 environment=development 或
environment=test 的资源、为任何 Amazon RDS 资源添加标签 environment=development 或
environment=test 标签(除非该资源已具有 environment=production 标签)。对于所有具有
environment=production 标签的资源,用户无法修改或删除这些资源,并且也无法向自己授予对这些资源
的访问权限。
{
"Statement": [
{
"Effect": "Allow",
"Action": [
"rds:AddTagsToResource"
],
"Resource": "*",
"Condition": {
"streq": {
"rds:req-tag/environment": [
"development",
"test"
]
},
"strneq": {
"rds:db-tag/environment": [
"production"
],
"rds:es-tag/environment": [
"production"
],
"rds:og-tag/environment": [
"production"
],
"rds:pg-tag/environment": [
"production"
],
"rds:ri-tag/environment": [
"production"
],
"rds:recgrp-tag/environment": [
"production"
],
"rds:snapshot-tag/environment": [
"production"
],
API Version 2013-05-15
56
Amazon Relational Database Service 用户指南
Amazon RDS 的示例 IAM 策略
"rds:subgrp-tag/environment": [
"production"
]
}
}
},
{
"Effect": "Allow",
"Action": [
"rds:RemoveTagsFromResource"
],
"Resource": "*",
"Condition": {
"streq": {
"rds:req-tag/environment": [
""
]
},
"strneq": {
"rds:db-tag/environment": [
"production"
],
"rds:es-tag/environment": [
"production"
],
"rds:og-tag/environment": [
"production"
],
"rds:pg-tag/environment": [
"production"
],
"rds:ri-tag/environment": [
"production"
],
"rds:recgrp-tag/environment": [
"production"
],
"rds:snapshot-tag/environment": [
"production"
],
"rds:subgrp-tag/environment": [
"production"
]
}
}
},
{
"Effect": "Allow",
"Action": [
"rds:DeleteDBInstance",
"rds:ModifyDBInstance",
"rds:CopyDBSnapshot",
"rds:DownloadDBLogFilePortion",
"rds:PromoteReadReplica",
"rds:RebootDBInstance",
"rds:RestoreDBInstanceFromDBSnapshot",
"rds:RestoreDBInstanceToPointInTime"
],
API Version 2013-05-15
57
Amazon Relational Database Service 用户指南
Amazon RDS 的示例 IAM 策略
"Resource": "*",
"Condition": {
"streq": {
"rds:db-tag/environment": [
"development",
"test"
]
}
}
},
{
"Effect": "Allow",
"Action": [
"rds:DeleteEventSubscription",
"rds:ModifyEventSubscription",
"rds:AddSourceIdentifierToSubscription",
"rds:RemoveSourceIdentifierFromSubscription"
],
"Resource": "*",
"Condition": {
"streq": {
"rds:es-tag/environment": [
"development",
"test"
]
}
}
},
{
"Effect": "Allow",
"Action": [
"rds:DeleteOptionGroup",
"rds:ModifyOptionGroup"
],
"Resource": "*",
"Condition": {
"streq": {
"rds:og-tag/environment": [
"development",
"test"
]
}
}
},
{
"Effect": "Allow",
"Action": [
"rds:DeleteDBParameterGroup",
"rds:ModifyDBParameterGroup",
"rds:ResetDBParameterGroup"
],
"Resource": "*",
"Condition": {
"streq": {
"rds:pg-tag/environment": [
"development",
"test"
]
API Version 2013-05-15
58
Amazon Relational Database Service 用户指南
Amazon RDS 的示例 IAM 策略
}
}
},
{
"Effect": "Allow",
"Action": [
"rds:DeleteSecurityGroup",
"rds:AuthorizeDBSecurityGroupIngress",
"rds:RevokeDBSecurityGroupIngress"
],
"Resource": "*",
"Condition": {
"streq": {
"rds:secgrp-tag/environment": [
"development",
"test"
]
}
}
},
{
"Effect": "Allow",
"Action": [
"rds:DeleteDBSnapshot",
"rds:CopyDBSnapshot",
"rds:RestoreDBInstanceFromDBSnapshot",
"rds:RestoreDBInstanceToPointInTime"
],
"Resource": "*",
"Condition": {
"streq": {
"rds:snapshot-tag/environment": [
"development",
"test"
]
}
}
},
{
"Effect": "Allow",
"Action": [
"rds:DeleteDBSubnetGroup",
"rds:ModifyDBSubnetGroup"
],
"Resource": "*",
"Condition": {
"streq": {
"rds:subgrp-tag/environment": [
"development",
"test"
]
}
}
},
{
"Effect": "Allow",
"Action": [
"rds:Describe*",
API Version 2013-05-15
59
Amazon Relational Database Service 用户指南
Amazon RDS 安全组
"rds:Create*",
"rds:ListTagsForResource",
"ec2:DescribeAvailabilityZones",
"ec2:DescribeVpcs",
"ec2:DescribeAccountAttributes",
"ec2:DescribeSecurityGroups",
"ec2:DescribeSubnets",
"cloudwatch:GetMetricStatistics",
"cloudwatch:DescribeAlarms",
"sns:*"
],
"Resource": "*"
}
]
}
Amazon RDS 安全组
安全组控制流量进出数据库实例的访问权限。可以与 Amazon RDS 配合使用三种安全组:数据库安全组、
VPC 安全组及 EC2 安全组。简单来说,数据库安全组控制不在 VPC 中的数据库实例的访问权限,VPC
安全组控制 VPC 中的数据库实例(或其他 AWS 实例)的访问权限,而 EC2 安全组控制 EC2 实例的访
问权限。
2013 年 1 月,其成员是 VPC 中的数据库实例的数据库安全组已转换为 VPC 安全组。转换后,您可以集
中地定义和管理 VPC 中所有 AWS 计算资源(包括数据库实例)的网络访问规则。转换前,VPC 中的数
据库实例只能是数据库安全组成员。如果使用 Amazon RDS 控制台管理 VPC 中的安全组,则不需要采
取任何操作。您可以像查看和管理数据库安全组一样查看和管理 VPC 安全组。有关更多信息,请参阅
VPC 安全组。
如果您使用当前 Amazon RDS API 版本管理 VPC 中的安全组,则可以继续使用现有的数据库安全组,但
您将无法更新数据库安全组。此外,您还无法将 VPC 中的新数据库实例作为数据库安全组的成员。您可
以继续使用 RDS API 以前的版本管理 VPC 中的数据库实例的数据库安全组,但我们强烈建议您尽快更
新代码。有关将现有代码迁移到当前 API 版本的更多信息,请参阅 数据库安全组到 VPC 安全组的迁
移 (p. 62)。
默认情况下,您的数据库实例的网络访问处于关闭状态。如果希望应用程序可以访问数据库实例,可以允
许从隶属于特定 EC2 安全组或 IP 范围的 EC2 实例进行访问。一旦配置了进入规则,将对与 EC2 安全组
关联的所有数据库实例都应用相同的规则。
数据库安全组
各项数据库安全组规则都允许特定源访问与数据库安全组关联的数据库实例。源可以是一个地址范围(如
203.0.113.0/24)或 EC2 安全组。在指定作为源的 EC2 安全组后,就可以允许从使用此 EC2 安全组的
所有 EC2 实例中传入流量。请注意,数据库安全组规则仅适用于入站流量;数据库实例当前不允许出站
流量。
在创建数据库安全组规则时,不需要指定目标端口号;为数据库实例定义的端口号可用作针对数据库安全
组定义的所有规则的目标端口号。您可以使用 Amazon RDS API 或 AWS 管理控制台的 Amazon RDS 页
面创建数据库安全组。
有关使用数据库安全组的更多信息,请参阅 使用数据库安全组 (p. 229)
API Version 2013-05-15
60
Amazon Relational Database Service 用户指南
VPC 安全组
VPC 安全组
各项 VPC 安全组规则都允许特定源访问 VPC 中与 VPC 安全组关联的数据库实例。源可以是一个地址范
围(如 203.0.113.0/24)或 VPC 安全组。指定作为源的 VPC 安全组后,就可以允许从使用此源 VPC 安
全组的所有实例(通常为应用程序服务器)中传入流量。虽然 VPC 安全组具有管理入站和出站流量的规
则,但是出站流量规则并不适用于数据库实例。请注意,必须使用 VPC 控制台上的 Amazon EC2 API 或
安全组选项创建 VPC 安全组。
从 Internet 或 VPC 外的 EC2 实例可以可能访问 VPC 中部署的数据库实例。如果 VPC 安全组指定端口
访问(例如,TCP 端口 22),您将无法访问数据库实例,因为该数据库实例的防火墙仅提供通过该实例
所属的数据库安全组指定的 IP 地址和创建数据库实例时定义的端口进行访问。
对于所有为了控制数据库实例的访问而创建的 VPC 安全组,应将 TCP 用作它们的协议。适用于 VPC 安
全组的端口号应与用于创建数据库实例的端口号相同。
数据库安全组与 VPC 安全组
下表显示了数据库安全组与 VPC 安全组之间的主要区别。
数据库安全组
VPC 安全组
控制访问 VPC 以外的数据库实例
控制访问 VPC 中的数据库实例。
使用 Amazon RDS API 或 AWS 管理控制台的 使用 Amazon EC2 API 或 AWS 管理控制台的 Amazon
Amazon RDS 页面创建和管理组/规则
VPC 页面创建和管理组/规则。
在将规则添加到组时,不需要指定端口号或协 在将规则添加到组时,应指定用作 TCP 的协议,并指
议。
定端口号,且该端口号应与您在创建欲作为该组成员添
加的数据库实例(或选项)时所用的端口号相同。
组允许使用 AWS 账户或其他账户从 EC2 安全 组仅允许从 VPC 中的其他 VPC 安全组进行访问。
组进行访问。
安全组情况
VPC 中的 RDS 实例通常用于与相同 VPC 中运行于 EC2 实例中的应用程序服务器共享数据,这些数据可
通过 VPC 外的客户端应用程序进行访问。对于这种情况,可以执行以下操作创建必要的实例和安全组。
可以使用 AWS 控制台上的 RDS 和 VPC 页面或 RDS 和 EC2 API。
1. 创建一个 VPC 安全组(例如“sg-appsrv1”),然后定义用作客户端应用程序 IP 地址源的入站规则。
2. 创建一个适用于该应用程序的 EC2 实例,然后将该 EC2 实例添加到上一步骤中创建的 VPC 安全组
(“sg-appsrv1”)。
3. 创建第二个 VPC 安全组(例如“sg-dbsrv1”),然后通过将步骤 1 中创建的 VPC 安全组(“sg-appsrv1”)
指定为源来创建新规则。
4. 创建一个新数据库实例,然后将该数据库实例添加到上一步骤中创建的 VPC 安全组(“sg-dbsrv1”)。
创建实例时,使用的端口号应与为您在步骤 3 中创建的 VPC 安全组(“sg-dbsrv1”)规则所指定的端口
号相同。
下图演示了此情形。
API Version 2013-05-15
61
Amazon Relational Database Service 用户指南
数据库安全组到 VPC 安全组的迁移
有关使用数据库安全组的更多信息,请转到 使用数据库安全组 (p. 229)。
数据库安全组到 VPC 安全组的迁移
发布 API 版本 2013-01-10 后,现已使用 VPC 安全组来控制访问 VPC 中数据库实例的权限,而不再使用
数据库安全组。VPC 中与数据库安全组关联的数据库实例已迁移到与 VPC 安全组关联。
以下是一些有关安全组变化的基本信息:
• 迁移时,为 VPC 内数据库实例成员的现有数据库安全组创建了新 VPC 安全组。每个新 VPC 安全组都
包含了其替换的数据库安全组的所有进入规则,且 VPC 安全组与数据库安全组名称相同,前缀为“rds-”。
• 最新版本的 Amazon RDS API 对多项操作进行了改动。以下操作不再接受数据库安全组,而是需要使
用 VPC 安全组:
• CreateDBInstance
• ModifyDBInstance
• 使用不同的 API 版本创建、修改或描述安全组可能会产生意外结果。例如,如果您使用最新 API 版本
在 VPC 中创建数据库实例并使用早期 API 版本描述该数据库实例,则数据库安全组列表会显示为空。
• 如果您使用除当前版本以外的 API 版本在 VPC 中创建数据库实例,然后使用当前 API 版本修改该数据
库实例,则系统会移除所有现有的数据库安全组成员资格。数据库实例将作为 VPC 安全组(如果提供)
的成员。
• 您必须使用 Amazon EC2 API 或 VPC 控制台上的安全组选项创建 VPC 安全组。
可以使用先前版本的 Amazon RDS API 在 VPC 中修改和添加数据库实例以作为数据库安全组成员,但现
已不再支持此功能,因此我们强烈建议您迁移到最新版 API。
下表显示同早期 RDS API 相比,当前 API 版本如何与数据库安全组协作。
API Version 2013-05-15
62
Amazon Relational Database Service 用户指南
相关主题
任务实例
早期 API 行为
API 2013-01-10 版本及更高版本
的行为
通过数据库安全组成员资格在
VPC 中创建数据库实例
创建数据库实例并将其添加为数
据库安全组成员。
不支持
通过 VPC 安全组成员资格在
VPC 中创建数据库实例
不支持
创建数据库实例并将其添加为VPC
安全组成员。
修改 VPC 中新创建的数据库实例 如果实例是使用早期 API 创建
的,修改适用于 VPC 中的数据库
实例。不支持修改使用当前 API
创建的数据库实例。
修改适用于 VPC 中的数据库实
例。如果实例是使用早期 API 版
本创建的,实例将不是数据库安全
组成员,而仅是迁移时创建的VPC
安全组的成员。
删除 VPC 中的数据库实例所属的 如果数据库安全组没有数据库实 不支持
数据库安全组
例成员,则将删除数据库安全
组。如果已迁移数据库安全组,
并在随后将其与 VPC 安全组关
联,当使用该数据库安全组的实
例可以改用关联的 VPC 安全组,
则将删除数据库安全组。
相关主题
• 使用数据库安全组 (p. 229)
API Version 2013-05-15
63
Amazon Relational Database Service 用户指南
有关 Amazon RDS 上的 MySQL 的须知事项
在 Amazon RDS 上使用 MySQL
Topics
• 有关 Amazon RDS 上的 MySQL 的须知事项 (p. 64)
• 使用 MySQL 数据库实例 (p. 69)
• 附录:MySQL 的数据库管理员常见任务 (p. 97)
• 附录:MySQL 数据库引擎选项 (p. 101)
• 附录:MySQL Amazon RDS SQL 参考 (p. 104)
有关 Amazon RDS 上的 MySQL 的须知事项
Topics
• MySQL 版本管理 (p. 65)
• Amazon RDS 支持的存储引擎 (p. 65)
• RDS 数据库实例的 MySQL 参数异常错误 (p. 66)
• 对 MySQL 数据库实例使用 SSL (p. 66)
• 安全性 (p. 67)
• Amazon RDS MySQL 功能 (p. 67)
为了让用户获得托管式服务体验,Amazon RDS 未提供对数据库实例的 Shell 访问权限,并且限制对需要
高级特权的某些系统程序和表的访问权限。Amazon RDS 支持使用任何标准 SQL 客户端应用程序访问数
据库实例上的数据库。Amazon RDS 不允许主机通过 Telnet、安全外壳 (SSH) 或 Windows 远程桌面连
接直接访问数据库实例。创建数据库实例时,您将获得该实例上所有数据库的 db_owner 角色,并且您将
具有除用于备份的权限以外的所有数据库级别的权限(Amazon RDS 替您管理备份)。
有关将 MySQL 数据导入到数据库实例的信息,请参阅 从 MySQL 数据库实例导入和导出数据 (p. 80)。
除此部分中特定于 MySQL 实例的信息外,您还可以对 MySQL 实例执行标准 Amazon RDS 管理操作:
• 有关控制对 Amazon RDS MySQL 的实例访问权限的信息,请参阅 管理对 Amazon RDS 资源和数据库
的访问 (p. 48)
• 有关所有数据库引擎的常见任务(例如,重命名实例,备份和还原、使用参数组和选项组等 RDS 功
能)的信息,请参阅 所有 Amazon RDS 数据库引擎的常用任务 (p. 181)。
• 有关监视实例(例如,查看 Cloudwatch Amazon RDS 指标、事件和查看数据库日志文件)的信息,请
参阅 监视数据库实例 (p. 269)。
API Version 2013-05-15
64
Amazon Relational Database Service 用户指南
MySQL 版本管理
MySQL 版本管理
借助 Amazon RDS,您可以控制何时将 MySQL 实例升级到 Amazon RDS 支持的新版本。您可以保持与
特定 MySQL 版本兼容,在生产中部署应用程序前针对新版本进行测试,以及根据自己的条件和时间执行
版本升级。
在创建新数据库实例时,您可以指定当前支持的任何 MySQL 版本。您可以指定 MySQL 5.6、5.5 或 5.1
主要版本,以及指定主要版本的任何支持的次要版本。如果未指定版本,Amazon RDS 将默认为支持的
版本,通常为最新版本。如果指定了主要版本(例如,MySQL 5.6),但未指定次要版本,Amazon RDS
将默认为您指定的主要版本的最新版本。要查看受支持的版本列表以及新建数据库实例的默认值,只需使
用 DescribeDBEngineVersions API 即可。
Amazon RDS 当前仅支持从 MySQL 5.1 到 MySQL 5.5 的主要版本升级。由于主要版本升级涉及到某些
兼容性风险,所以不会自行启动;您必须手动修改数据库实例。您应当在应用生产实例前全面测试任何升
级。有关升级数据库实例的信息,请参阅 升级数据库实例 (p. 196)
除非另行指定,否则您的数据库实例将自动升级到 Amazon RDS 支持的新 MySQL 次要版本。这种修补
将在计划的维护时段内执行,并将提前在 Amazon RDS 社区论坛中公告。要关闭自动版本升级,请将
AutoMinorVersionUpgrade 参数设置为“false”。
如果您取消自动计划升级,则可以按照主要版本更新的相同过程手动升级到支持的次要版本。有关信息,
请参阅 升级数据库实例 (p. 196)。
您可以在升级前针对新版本测试数据库实例,执行方式为:创建现有数据库实例的数据库快照,从该数据
库快照进行还原以创建新的数据库实例,然后对新的数据库实例启动版本升级。然后,则可以在升级的数
据库实例克隆上安全测试,再决定是否升级原始的数据库实例。
在 MySQL 环境中,版本的编号的组织方式如下:
MySQL 版本 = X.Y.Z
...这里 X 表示主要版本,Y 表示发布级别,而 Z 是发布系列内的版本编号。对于 Amazon RDS 实现,如
果主要版本或发布级别发生变化(例如,从版本 5.1.x 更改为 5.5.x),版本更改将视为主要版本更改。
如果发行版中的版本号发生变化(例如,从版本 5.1.45 更改为版本 5.1.49),版本更改将视为次要版本
更改。
Amazon RDS 当前支持 MySQL 主要版本 MySQL 5.1 和 MySQL 5.5。随着时间的推移,我们计划让
Amazon RDS 支持更多的 MySQL 版本,包括主要和次要版本。特定年度支持的新发布版本数量因 MySQL
发布版本的频率和内容而异,由数据库设计团队负责版本全面审查的最终结果。不过,一般而言,我们会
在通用版本发布后 3-5 个月内支持新的 MySQL 版本。
Amazon RDS 的 MySQL 弃用策略包括以下内容。
• 对于发布的主要 MySQL 版本,包括 MySQL 5.1,我们计划从 Amazon RDS 开始持续支持 3 年。
• 对于发布的次要 MySQL 版本(如 MySQL 5.1.45),我们计划从 Amazon RDS 开始持续支持至少 1
年。
• 在 MySQL 主要或次要版本被“淘汰”后,我们计划为您提供三个月的宽限期以启动升级到受支持的版本,
然后才会在计划的维护时段应用自动升级。
Amazon RDS 支持的存储引擎
适用于 MySQL 的 Amazon RDS 的时间点恢复和快照恢复功能要求使用可恢复的存储引擎,且仅支持
InnoDB 存储引擎。虽然 MySQL 支持功能不同的多种存储引擎,但并非所有引擎都为恢复和数据耐久性
进行了优化。例如,MyISAM 存储引擎不支持可靠的恢复,并且在恢复后重启 MySQL 时可能导致数据丢
失或损坏,从而使时间点恢复或快照恢复无法按预期工作。但是,如果您仍选择配合使用 MyISAM 和
Amazon RDS,在某些条件下,快照可能也会有所帮助。有关更多信息,请参阅 使用不支持的 MySQL
存储引擎进行自动备份 (p. 44)。
API Version 2013-05-15
65
Amazon Relational Database Service 用户指南
RDS 数据库实例的 MySQL 参数异常错误
如果您希望将现有的 MyISAM 表转换为 InnoDB 表,可以使用“alter table”命令(例如,alter table
TABLE_NAME engine=innodb;)。请注意,MyISAM 和 InnoDB 各有优点和缺点,所以在执行前请充分
评估转换可能对您的应用程序造成的影响。
您必须运行 MySQL 5.6 实例才能使用 InnoDB 内存缓存接口。有关更多信息,请参阅 MySQL 5.6 内存缓
存支持 (p. 101)。
适用于 MySQL 的 Amazon RDS 当前不支持联合存储引擎。
RDS 数据库实例的 MySQL 参数异常错误
本部分介绍了针对 MySQL 数据库引擎参数的任何异常和/或特殊注意事项。
lower_case_table_names
因为 Amazon RDS 在区分大小写的文件系统上运行,所以不支持将 lower_case_table_names 服务器
参数的值设置为 2(“按原样存储名称,但按小写字母进行比较”)。Amazon RDS 数据库实例支持的值为
0(默认值)或 1。
在创建数据库实例前,应将 lower_case_table_names 参数设置为自定义数据库参数组的一部分。您
应该避免更改现有数据库实例的 lower_case_table_names 参数,否则可能导致时间点恢复备份与只读副
本数据库实例不一致。
只读副本应总是使用与主数据库实例相同的 lower_case_table_names 参数值。
可将 long_query_time 参数设置为浮点值,这样可按微秒为间隔将慢速查询记录到 MySQL 慢速查询
日志。当调试耗时少于 1 秒的缓慢事务处理时,设置一个值(例如 0.1 秒,即为 100 毫秒)会有所帮助。
对 MySQL 数据库实例使用 SSL
对于运行 MySQL 数据库引擎的数据库实例,Amazon RDS 支持与之进行 SSL 连接。
在预配置数据库实例时,Amazon RDS 创建 SSL 证书,并将该证书安装在该数据库实例上。这些证书由
证书颁发机构签署。公共密钥的存储位置是 https://rds.amazonaws.com/doc/mysql-ssl-ca-cert.pem。
Important
Amazon RDS 中的 SSL 支持会严格地对您的客户端与数据库实例之间的连接进行加密;该连接
不应依赖于对服务器进行身份验证。
要对使用默认 mysql 客户端的连接进行加密,请使用 --ssl_ca parameter 启动 mysql 客户端以便引
用公共密钥,例如:
mysql -h myinstance.c9akciq32.rds-us-east-1.amazonaws.com
--ssl_ca=rds-ssl-ca-cert.pem
您可以使用 GRANT 语句要求特定用户账户的 SSL 连接。例如,您可以使用以下语句来要求用户账户
encrypted_user 的 SSL 连接:
GRANT USAGE ON *.* TO ‘encrypted_user’@’%’ REQUIRE SSL
Note
有关与 MySQL 的 SSL 连接的更多信息,请转到 MySQL 文档。
API Version 2013-05-15
66
Amazon Relational Database Service 用户指南
安全性
安全性
数据库实例中的用户和特权管理方式与独立数据库实例的相同。CREATE USER、RENAME USER、GRANT、
REVOKE 和 SET PASSWORD 等命令的作用与它们在独立数据库中的作用相同,就像直接修改数据库架构
表。
当您创建数据库实例时,主用户有以下默认特权:
• alter
• alter routine
• create
• create routine
• create temporary tables
• create user
• create view
• delete
• drop
• event
• execute
• grant option
• index
• insert
• lock tables
• process
• references
• replication slave
• select
• show databases
• show view
• trigger
• update
Note
尽管能够在数据库实例上删除主用户,但不推荐这样做。要重新创建主用户,请使用
ModifyDBInstance API 或 rds-modify-db-instance 命令行工具,并用相应参数指定一个
新的主用户密码。如果实例中不存在主用户,将使用指定的密码创建主用户。
要为每个数据库实例提供管理服务,需要在创建数据库实例时创建 rdsadmin 用户。如果试图删掉、重
命名、更改密码或更改 rdsadmin 账户的特权,则会导致出错。
要允许管理数据库实例,需限制标准的 kill 和 kill_query 命令。通过所提供的 RDS 命令 rds_kill
和 rds_kill_query,您可以终止数据库实例上的用户会话或查询。
Amazon RDS MySQL 功能
Amazon RDS 不支持以下 MySQL 功能:
• 全局事务处理 ID
API Version 2013-05-15
67
Amazon Relational Database Service 用户指南
Amazon RDS MySQL 功能
• InnoDB 高速缓存预热
• 传输表空间
• 身份验证插件
• 密码强度插件
• 半同步复制
API Version 2013-05-15
68
Amazon Relational Database Service 用户指南
使用 MySQL 数据库实例
使用 MySQL 数据库实例
Topics
• 创建运行 MySQL 数据库引擎的数据库实例 (p. 69)
• 与运行 MySQL 数据库引擎的数据库实例连接 (p. 76)
• 修改运行 MySQL 数据库引擎的数据库实例 (p. 78)
• 从 MySQL 数据库实例导入和导出数据 (p. 80)
• 使用只读副本 (p. 91)
您需要对数据库实例执行的大多数任务在所有数据库引擎上的执行方式都是相同的。创建数据库实例、连
接到数据库实例和将数据导入到数据库实例均为特定于每个数据库引擎的任务。此外,此部分中的附录包
含有关使用 MySQL 数据库实例的重要信息。
创建运行 MySQL 数据库引擎的数据库实例
Amazon RDS 的基本构建块是数据库实例。这是您将用于运行 MySQL 数据库的环境。您务必要理解选
择每个值都意味着什么,以便创建满足您需求的数据库实例;请参阅每个参数的链接了解更多信息。
AWS Management Console
启动 MySQL 数据库实例
1.
2.
3.
4.
Sign in to the AWS Management Console and open the Amazon RDS console at
https://console.aws.amazon.com/rds/.
在 AWS Management Console 的右上角,选择您要在其中创建数据库实例的区域。
在导航窗格中,单击数据库实例。
单击启动数据库实例以启动数据库实例启动向导。
该向导随即在引擎选择页面上打开。
API Version 2013-05-15
69
Amazon Relational Database Service 用户指南
创建运行 MySQL 数据库引擎的数据库实例
5.
6.
在数据库实例启动向导窗口中,针对 MySQL 数据库引擎单击选择按钮。
在数据库实例详细信息页面上,指定数据库实例信息。下表显示示例数据库实例的设置。完成后,请
单击继续。
对于此参数...
...请执行此操作:
许可模式
MySQL 只有一个许可模式。选择默认的
General-Public-License,使用 MySQL 一般许可协
议。
数据库引擎版本
选择您要使用的 MySQL 版本。请注意 Amazon RDS 支持
多个版本的 MySQL。
数据库实例类
选择定义数据库实例的处理和内存要求的数据库实例类。
有关所有数据库实例类选项的更多信息,请参阅 数据库实
例类 (p. 34)。
多可用区域部署
确定是否要在故障转移支持的其他可用区域为您的数据库
实例创建备用副本。此功能适用于 Oracle 和 MySQL 数据
库实例。有关多个可用区域的更多信息,请参阅 地区和可
用区域 (p. 37)。
自动次要版本升级
选择 ,以便在次要数据库引擎版本可用时,让数据库实例
能够自动接收这些次要升级。
API Version 2013-05-15
70
Amazon Relational Database Service 用户指南
创建运行 MySQL 数据库引擎的数据库实例
对于此参数...
...请执行此操作:
分配的存储空间
键入为数据库分配的存储值(以 GB 为单位)。有时,为
数据库实例分配的存储空间高于数据库大小时可提高 I/O
性能。有关存储空间分配的更多信息,请参阅 Amazon
Relational Database Service 功能。
使用预配置 IOPS
该选项会打开 Amazon RDS 中的预配置 IOPS(每秒输入/
输出操作),该高性能存储选项已针对 I/O 密集型事务处
理 (OLTP) 数据库工作负载进行了优化。有关高性能存储
的更多信息,请参阅 使用预置 IOPS 存储 (p. 257)。
数据库实例标识符
为该数据库实例键入一个名称,该名称在您所选区域中对
于您的账户是唯一的。您可以选择对该名称进行一些巧妙
处理,例如将您所选的区域和数据库引擎包括在名称中,
如 mysql-instance1。
主用户名
使用字母和数字字符键入一个名称,该名称将用作您登录
数据库实例的主用户名。默认权限已授予主用户名账户,
包括:创建、退出、引用、事件、更改、删除、索引、插
入、选择、更新、创建临时表、锁定表、触发、创建视图、
显示视图、更改例程、创建例程、执行、创建用户、处理、
显示数据库、授予选项。
主用户密码
输入一个包含 8 到 16 位可打印 ASCII 字符(的密码用不
包括 /、"、和 @)用作您的主用户密码。
API Version 2013-05-15
71
Amazon Relational Database Service 用户指南
创建运行 MySQL 数据库引擎的数据库实例
7.
在其他配置页面上,提供 RDS 启动 MySQL 数据库实例所需的其他信息。下表显示示例数据库实例
的设置。指定数据库实例信息,然后单击 继续.
对于此参数...
...请执行此操作:
数据库名称
为您的数据库输入一个含有达 8 位字母和数字字符的名称。
如果您未提供名称,Amazon RDS 将不会在您创建的数据
库实例上创建数据库。
数据库端口
指定要用于访问数据库的端口。MySQL 安装默认为端口
3306。
选择 VPC
确定是否要在 Virtual Private Cloud (VPC) 上创建数据库实
例。有关 VPC 的更多信息,请参阅 Amazon RDS 和
Amazon Virtual Private Cloud 服务 (p. 40)。
可用区域
确定是否要指定特定的可用区域。如果您已在上一页面为
多可用区域部署参数选择了是,您在这里就不会有任何选
项。有关可用区域的更多信息,请参阅 地区和可用区
域 (p. 37)。
选项组
选择选项组。每个版本的 MySQL 都提供一个默认选项组,
您也可以创建自己的选项组。有关选项组的更多信息,请
参阅 使用选项组 (p. 210)。
参数组
选择参数组。每个版本的 MySQL 都提供一个默认参数组,
您也可以创建自己的参数组。有关参数组的更多信息,请
参阅 使用数据库参数组 (p. 218)。
数据库安全组
选择要与此数据库实例配合使用的安全组。有关安全组的
更多信息,请参阅 使用数据库安全组 (p. 229)。
API Version 2013-05-15
72
Amazon Relational Database Service 用户指南
创建运行 MySQL 数据库引擎的数据库实例
8.
在管理选项页面上,您可以为数据库实例指定备份和维护选项。根据需要设置完毕后,单击继续。有
关维护时段的更多信息,请参阅 调整首选维护时段 (p. 266)。有关备份和备份保留期的更多信息,请
参阅 数据库实例备份 (p. 42)。
此外,适用于 MySQL 的 Amazon RDS 当前不支持联合存储引擎。
API Version 2013-05-15
73
Amazon Relational Database Service 用户指南
创建运行 MySQL 数据库引擎的数据库实例
Note
适用于 MySQL 的 Amazon RDS 的时间点恢复和快照恢复功能要求使用崩溃恢复存储引擎,
且仅对 InnoDB 存储引擎支持这两种功能。虽然 MySQL 支持功能不同的多种存储引擎,但
并非所有引擎都为崩溃恢复和数据耐久性而进行了优化。例如,MyISAM 存储引擎不支持可
靠的崩溃恢复,并且在崩溃后重启 MySQL 时可能导致数据丢失或损坏,从而使
Point-In-Time-Restore 或快照还原无法按预期工作。
如果您希望将现有的 MyISAM 表转换为 InnoDB 表,可以使用“alter table”命令(例如,alter
table TABLE_NAME engine=innodb;)。请注意,MyISAM 和 InnoDB 各有优缺点,所以在
执行前请充分评估转换可能对您的应用程序造成的影响。
9.
在审核页面上,核查您的数据库实例选项。如果您需要做出任何更改,单击返回返回相应页面,然后
做出必要的更正。根据需要全部设置完毕后,单击启动数据库实例。
10. 在此向导的最后一个页面上,单击关闭。
11. 在 RDS 控制台中,新数据库实例显示在数据库实例列表中。数据库实例将为 creating 状态,直到该
数据库实例完成创建并可供使用。当状态更改为可用时,您即可连接到数据库实例。根据所分配的数
据库实例类和存储的不同,新实例可能需要数分钟时间才能变得可用。
CLI
创建 MySQL 数据库实例
•
使用命令 rds-create-db-instance 创建数据库实例。
PROMPT>rds-create-db-instance mydbinstance -s 20 -c db.m1.small -e MySQL u <masterawsuser> -p <secretpassword> --backup-retention-period 3
此命令应该生成类似于下述信息的输出:
DBINSTANCE mydbinstance db.m1.small mysql 20 sa creating 3 **** n 5.1.57
SECGROUP default active PARAMGRP default.mysql5.1 in-sync
API Version 2013-05-15
74
Amazon Relational Database Service 用户指南
创建运行 MySQL 数据库引擎的数据库实例
API
创建 MySQL 数据库实例
•
调用 CreateDBInstance 操作。例如,您可以使用以下参数:
• DBInstanceIdentifier =mydbinstance
• DBInstanceClass =db.m1.small
• AllocatedStorage =20
• BackupRetentionPeriod =3
• MasterUsername =<masterawsuser>
• MasterUserPassword =<secretpassword>
Example
https://rds.amazonaws.com/
?Action=CreateDBInstance
&DBInstanceIdentifier=mydbinstance
&DBInstanceClass=db.m1.small
&Engine=mysql
&MasterUserPassword=<secretpassword>
&BackupRetentionPeriod=3
&AllocatedStorage=20
&MasterUsername=<masterawsuser>
&Version=2010-06-28
&SignatureVersion=2
&SignatureMethod=HmacSHA256
&Timestamp=2010-08-13T19%3A36%3A35.512Z
&AWSAccessKeyId=<AWS Access Key ID>
&Signature=<Signature>
相关主题
• 数据库实例 (p. 32)
• 数据库实例类 (p. 34)
• 删除数据库实例 (p. 184)
API Version 2013-05-15
75
Amazon Relational Database Service 用户指南
与运行 MySQL 数据库引擎的数据库实例连接
与运行 MySQL 数据库引擎的数据库实例连接
在 Amazon RDS 预配置了您的数据库实例后,就可以使用任何标准 SQL 客户端应用程序连接该实例。
在此示例中,使用 MySQL 监视器命令连接运行 MySQL 数据库引擎的数据库实例。在基于 GUI 的应用程
序中,您可以使用 MySQL Workbench 进行连接;有关更多信息,请转到下载 MySQL Workbench 页面。
有关使用 MySQL 的更多信息,请转到 MySQL 文档。
MySQL 监视器
使用 MySQL 监视器连接数据库实例
•
在命令提示符处键入以下命令,以使用 MySQL 监视器连接数据库实例;替换数据库实例的 DNS 名
称。
PROMPT> mysql -h myinstance.mydnsnameexample.rds.amazonaws.com -P 3306 -u
mymasteruser -p
您会看到类似以下内容的输出。
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 350
Server version: 5.1.32-log MySQL Community Server (GPL)
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql>
MySQL 监视器
使用 MySQL 监视器连接使用 SSL 加密的数据库实例
1.
2.
从 https://rds.amazonaws.com/doc/rds-ssl-ca-cert.pem 上下载 Amazon RDS 签名证书的公共密钥。
在命令提示符处键入以下命令,以使用 MySQL 监视器连接使用 SSL 加密的数据库实例;根据需要,
替换数据库实例的 DNS 名称和 SSL 证书文件名。根据系统提示输入主用户密码。
PROMPT> mysql -h myinstance.mydnsnameexample.rds.amazonaws.com --ssl_ca=certrds-ssl-ca.pem
您会看到类似以下内容的输出。
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 350
Server version: 5.1.32-log MySQL Community Server (GPL)
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql>
API Version 2013-05-15
76
Amazon Relational Database Service 用户指南
与运行 MySQL 数据库引擎的数据库实例连接
相关主题
• 数据库实例 (p. 32)
• 创建运行 MySQL 数据库引擎的数据库实例 (p. 69)
• Amazon RDS 安全组 (p. 60)
• 删除数据库实例 (p. 184)
API Version 2013-05-15
77
Amazon Relational Database Service 用户指南
修改运行 MySQL 数据库引擎的数据库实例
修改运行 MySQL 数据库引擎的数据库实例
AWS Management Console
要修改 MySQL 数据库实例,请执行以下操作
1.
2.
3.
Sign in to the AWS Management Console and open the Amazon RDS console at
https://console.aws.amazon.com/rds/.
在导航窗格中,单击实例。
选中要更改的数据库实例的复选框,然后单击修改。
4.
在修改数据库实例对话框中,更改所需的任何以下设置:
5.
6.
设置
描述
数据库实例类
在提供的列表中,单击要使用的数据库实例类。有关实例
类的信息,请参阅the section called “数据库实例
类” (p. 34)。
数据库引擎版本
在提供的列表中,单击您要使用的 MySQL 数据库引擎版
本。
多可用区域部署
如果要在多个可用区域中部署数据库实例,则单击是;否
则,单击否。
自动次要版本升级
如果希望数据库实例在发布次要引擎版本升级时自动收到
这些升级,则单击是。只有在计划的维护时段期间,才会
安装升级。
分配的存储空间
指定要为数据库实例分配多少存储空间(以 GB 计)。允
许的最小值为 5 GB;最大值为 3072 GB。注意,修改数据
库实例时只能提高存储容量,不能降低分配的存储容量。
备份保留期
指定自动备份的保留天数。要禁用自动备份,请将此值设
置为 0。
备份窗口
设置数据库的自动备份时间范围。指定开始时间(采用通
用协调时间 (UTC))和持续时间(以小时为单位)。
维护时段
设定进行系统维护(包括升级)的时间范围。指定开始时
间(采用 UTC)和持续时间(以小时为单位)。
数据库参数组
如果有自定义数据库参数组,要将其与此数据库实例关联,
则在提供的列表中,单击要所需的数据库参数组。
数据库安全组
如果有自定义数据库安全组,要将其与此数据库实例关联,
则在提供的列表中,单击所需的数据库安全组。
选项组
如果有自定义选项组,要将其与此数据库实例关联,则在
提供的列表中,单击所需的选项组。
主用户密码
键入您的主用户密码。密码必须包含 8 到 30 个字母数字字
符。
要立即应用更改,请选中立即应用复选框。此设置将使数据库实例立即重启。如果清除该复选框(默
认状态),则将在下一个计划维护时段内应用更改并重启数据库实例。
当所有更改如您所愿时,单击是,请修改。如果要改为取消上一步中尚未应用的任何更改,单击取
消。
API Version 2013-05-15
78
Amazon Relational Database Service 用户指南
修改运行 MySQL 数据库引擎的数据库实例
CLI
要修改 MySQL 数据库实例,请执行以下操作
•
使用命令 rds-modify-db-instance。
API
要修改 MySQL 数据库实例,请执行以下操作
•
使用 ModifyDBInstance action。
API Version 2013-05-15
79
Amazon Relational Database Service 用户指南
从 MySQL 数据库实例导入和导出数据
从 MySQL 数据库实例导入和导出数据
本部分介绍了将数据加载到运行 MySQL 的 Amazon RDS 数据库实例的推荐过程。可采用这些过程从运
行 Amazon RDS 的 MySQL 实例、未运行 Amazon RDS 的 MySQL 实例及任何数据源导入数据。本部分
包含使用复制功能将数据导出到未在 Amazon RDS 中运行的 MySQL 实例的推荐过程。
概述
可采用几种推荐的过程将数据导入运行 MySQL 数据库实例的 Amazon RDS:
• 要从在 Amazon RDS 中运行的现有 MySQL 数据库导入数据,可以创建只读副本,然后提升只读副本。
有关更多信息,请参阅 使用只读副本 (p. 91)。
• 对于现有 MySQL 数据库中无需复制或联机转换的数据,您可以使用 MySQL mysqldump 实用工具导
入某个时间点的数据。有关更多信息,请参阅 从现有 MySQL 数据库导入离线数据 (p. 83)。
• 对于不在 Amazon RDS 下运行的采用联机转换的现有 MySQL 数据库中的数据,您可以使用 MySQL
复制导入数据。有关更多信息,请参阅 从不在 Amazon RDS 中运行的 MySQL 数据库导入数据 (p. 83)。
• 对于大量数据或除现有 MySQL 数据库之外的其他来源的数据,可以创建文本文件并使用 Mysqlimport
实用工具导入这些数据。有关更多信息,请参阅 从任意源将数据导入 MySQL 数据库实例 (p. 85)。
• 对于现有 Amazon RDS MySQL 数据库中的大量数据,您可以使用 MySQL 复制功能将数据导出到不在
Amazon RDS 中运行的 MySQL 实例。有关更多信息,请参阅 使用复制导出 MySQL 5.6 数据 (p. 88)。
Note
“mysql”数据库包含登录数据库实例并访问数据所需的身份验证和授权信息。在数据库实例中删
掉、改动、重命名或截取“mysql”数据库中的表、数据或其他内容可能会导致错误,并可能导致无
法访问数据库实例和数据。如果发生此情况,您可以使用
rds–restore–db–instance–from–db–snapshot 从快照中还原数据库实例,或使用
rds–restore–db–instance–to–point–in–time 恢复数据库实例。
导入数据的注意事项
本部分包含有关将数据加载到 MySQL 中的其他技术信息。它面向熟悉 MySQL 服务器架构的高级用户。
请注意,与 LOAD DATA INFILE 相关的所有备注也可应用于 Mysqlimport。
事务大小
事务大小在 MySQL 数据加载中起着重要的作用。它对资源消耗、磁盘空间利用率、恢复过程、恢复时间
和输入格式(平面文件或 SQL)有重大影响。本部分介绍了事务大小如何影响二进制日志记录以及让案
例在大数据加载过程中禁用二进制日志记录。如前文所述,通过设置 Amazon RDS 自动备份保留期,启
用和禁用二进制日志记录。非零值会启用二进制日志记录,零会将其禁用。我们还介绍了大型事务对
InnoDB 的影响以及将事务大小保持在较小状态的重要性。
二进制日志
与关闭二进制日志记录后加载相同数据的情况相比,启用二进制日志记录后加载数据会导致性能损失,并
需要额外的可用磁盘空间(高达 4 倍以上)。性能损失的严重程度和所需的可用磁盘空间量与加载数据所
使用的事务大小成正比。
小型事务
对于小型事务,二进制日志记录会使加载数据所需的磁盘写入次数翻倍。根据上传速度、加载期间出现的
其他数据库活动以及 Amazon RDS 数据库实例的容量,这种情况会严重降低其他数据库会话的性能并增
加数据加载所需的时间。
API Version 2013-05-15
80
Amazon Relational Database Service 用户指南
从 MySQL 数据库实例导入和导出数据
此外,二进制日志占用的磁盘空间大致等于数据备份和移除前加载的数据量。幸运的是,Amazon RDS
会频繁备份并移除二进制日志,以尽量减少这种情况。
大型事务
大型事务对启用二进制日志记录的 IOPS 和磁盘占用量的不良影响可达 3 倍。这是因为二进制日志缓存会
溢到磁盘,占用磁盘空间并会为每次写入增加额外 IO。事务提交或回滚前,无法将缓存写入二进制日志,
因此其会根据数据加载量按比例占用磁盘空间。提交事务后,必须将缓存复制到二进制日志,为磁盘上的
数据创建第三副本。
因此,启用二进制日志记录后加载数据所使用的可用磁盘空间必须至少为禁用二进制日志记录加载过程的
三倍。例如,在加载过程中,作为单个事务加载的 10 GB 数据将至少占用 30 GB 磁盘空间:表 10 GB +
二进制日志缓存 10 GB + 二进制日志本身 10 GB。缓存文件会一直保存在磁盘上,直至创建缓存文件的
会话终止或在另一事务处理期间会话再次填充其二进制日志缓存。备份前二进制日志必须保存在磁盘上,
因此可能要过一段时间才会释放额外的 20 GB 空间。
在使用 LOAD DATA LOCAL INFILE 加载数据的情况下,如果数据库必须从加载前创建的备份中恢复,
请为数据创建另一个副本。在恢复期间,MySQL 将数据从二进制日志提取到平面文件,然后执行 LOAD
DATA LOCAL INFILE(只是作为原始事务),只不过这一次 Infile 对于数据库服务器是本地的。继续上
述示例,恢复将失败,除非可以使用的可用磁盘空间至少达到 40 GB。
禁用二进制日志记录
在可能的情况下,在大数据加载过程中禁用二进制日志记录,以避免资源开销和增加磁盘空间要求。在
Amazon RDS 中,只需将备份保留期设置为零就可以禁用二进制日志记录。如果执行此操作,建议您在
即将加载前为数据库实例拍摄数据库快照,以便在需要时可以快速轻松地在加载过程中撤消做出的更改。
加载后,将备份保留期设置回相应(非零)值。
InnoDB
本部分中的信息为使用 InnoDB 时保持小型事务提供了有力论据。
撤消
InnoDB 可以生成撤消以支持事务回滚和 MVCC 等功能。撤消可存储在 InnoDB 系统表空间(通常为
ibdata1)中,并且在清除线程移除前会一直保留。清除线程无法超越最早的活动事务撤消,因此直到此
事务提交或完成回滚后才能有效地阻止此线程。如果在加载期间数据库正在处理其他事务,则其撤消同样
会在系统表空间中累计并且无法移除,即使它们已提交并且其他事务不需要撤消 MVCC。在这种情况下,
访问由任一事务(不仅仅是负载事务)更改的任一行的所有事务(包括只读事务)都会减速,因为它们会
通过撤消进行扫描,而这些撤消如果不适用于长期运行的负载事务,就可能会被清除。
由于撤消存储于系统表空间中,并且此系统表空间的规模不会缩小,因而大数据负载事务可能会导致系统
表空间变得很大,如果不从头开始重新创建数据库,这些占用的磁盘空间就无法回收。
回滚
优化提交的 InnodDB。回滚大型事务可能需要很长时间。在一些情况下,执行时间点恢复或还原数据库
快照可能会更快。
输入数据格式
MySQL 可以接受以下两种传入数据格式之一:平面文件和 SQL。本部分说明了每一种格式的一些主要优
势和劣势。
平面文件
只要将事务保持在相对较小的状态,使用 LOAD DATA LOCAL INFILE 加载平面文件就是最快速、最经
济的数据加载方式。由于减少了数据库中的开销,因而与使用 SQL 加载相同的数据相比,平面文件需要
的网络流量通常更少、传输成本更低并且加载速度快得多。
API Version 2013-05-15
81
Amazon Relational Database Service 用户指南
从 MySQL 数据库实例导入和导出数据
一个大事务
LOAD DATA INFILE 会将整个平面文件作为一个事务进行加载。这不一定是一件坏事。如果可以将单个
文件大小保持在较小状态,会有很多优势:
• 恢复功能 – 易于跟踪已加载的文件。如果在加载期间出现问题,只需简要操作就可以从停止处继续加
载。可能要将一些数据重新传送到 Amazon RDS,但使用小文件,就可以尽量减少重新传输的量。
• 并行加载数据 – 如果 IOP 和网络带宽足以支持单一文件的加载,那么并行加载就可以节省时间。
• 限制负载率 – 影响其他进程的数据加载?通过增加文件之间的时间间隔限制负载。
注意
LOAD DATA INFILE 的优势会随着事务大小的增加而迅速减弱。如果无法将一个大数据集分成几个较小
的数据集,SQL 可能是更好的选择。
SQL
与平面文件相比,SQL 的一个主要优势为:易于将事务大小保持在较小状态。但是,SQL 的加载时间显
著长于平面文件,并且在发生故障后,难以确定加载恢复点。例如,Mysqldump 文件不可重启。如果加
载 Mysqldump 文件时出现故障,需要在加载恢复前修改或替换该文件。另一种方法是在纠正故障后,还
原到加载前的时间点,然后重播此文件。
使用 Amazon RDS 快照采集检查点
如果加载将持续数小时甚至几天时间,那么无二进制日志记录加载过程的前景并不非常诱人,除非您可以
采集定期检查点。这就是 Amazon RDS 数据库快照功能带来的极大便利之处。数据库快照会创建一个时
间点一致的数据库实例副本,其可用于将数据库还原到发生崩溃或其他事故前的时间点。
要创建检查点,只需拍摄数据库快照。可移除为检查点拍摄的先前任一数据库快照,而不会影响耐久性或
还原时间。
拍摄快照的速度也很快,因此频繁地检验检查点不会显著增加加载时间。
减少加载时间
这里有一些可以减少加载时间的其他技巧:
• 加载前创建所有辅助索引。对于那些熟悉其他数据库的人而言,这种做法违反直觉。添加或修改辅助索
引会使 MySQL 创建一个指数发生变化的新表,将数据从现有表复制到新表并删掉原始表。
• 以 PK 顺序加载数据。这对 InnoDB 表尤为有用,其中加载时间可减少 75–80%,数据文件大小可减小
一半。
• 禁用外键约束 foreign_key_checks=0。对于使用 LOAD DATA INFILE 加载的平面文件,在许多情况下
都需要这一操作。对于任何加载过程,禁用 FK 检查都会提供显著的性能收益。请务必确保启用约束并
验证加载后的数据。
• 并行加载,除非已经接近资源限制。适当时使用分区表。
• 加载时,通过 SQL 使用多值插入,将语句的执行开销降到最低。使用 Mysqldump 时,这会自动完成。
• 减少 InnoDB 日志 IO innodb_flush_log_at_trx_commit=0
Note
使用 innodb_flush_log_at_trx_commit=0 会导致 InnoDB 每秒都刷新其日志,而不是在每次提交
时刷新。这提供了很大的速度优势,但在崩溃期间可能导致数据丢失。请谨慎使用。
API Version 2013-05-15
82
Amazon Relational Database Service 用户指南
从 MySQL 数据库实例导入和导出数据
从现有 MySQL 数据库导入离线数据
对于现有 MySQL 数据库中无需复制或联机转换的数据,将其传输到 Amazon RDS 最简单的方式是使用
mysqldump 提取数据,然后直接将数据传送到 Amazon RDS。Mysqldump 是 MySQL 客户端软件发布版
中附带的命令行实用工具,通常用于创建备份以及将数据从一个 MySQL 服务器传输到另一 MySQL 服务
器。以下示例显示的是复制到 Amazon RDS 的“acme”数据库。
mysqldump acme | mysql --host=hostname --user=username --password acme
我们使用 ––host 和 ––user 选项指定用于连接数据库实例的主机名和用户名。––password 选项会提示输
入密码。还可以使用其他选项让 Mysqldump 执行一些非常实用的操作,如:
• 根据主键对每个表中的数据进行排序 (––order–by–primary)。这可以显著减少加载时间。
• 压缩数据,然后将它发送到 Amazon RDS (––compress)。此选项可能不会加快传输速度,但是会显著
降低网络带宽消耗。
• 确保所有数据都与单一时间点保持一致 (––single–transaction)。如果在 Mysqldump 读取数据期间有其
他进程更改数据,可使用此选项保持数据完整性。
有关 mysqldump 的信息,请参阅 MySQL 文档中的 mysqldump - 数据库备份程序。
从不在 Amazon RDS 中运行的 MySQL 数据库导入数据
要从不在 Amazon RDS 中运行的 MySQL 数据库导入数据,您可以配置从该数据库到在 Amazon RDS 中
运行的 MySQL 实例的副本。您将从中迁移数据的源 MySQL 数据库可以在您的数据中心内运行或者在
Amazon EC2 实例中运行。Amazon RDS 中的 MySQL 实例必须运行 5.5.33 版或 5.6.13 版。使用复制功
能迁移数据可减少停机时间。
只有将数据库传输到在 Amazon RDS 中运行的 MySQL 实例时,才支持从不在 Amazon RDS 中运行的
MySQL 实例进行复制。如果数据已传输并且所有应用程序和服务都已切换为访问 Amazon RDS 实例,
则应该终止复制。
下面列表显示了需要采取的步骤。下文更为详细地描述了每个步骤。
1. 准备在 Amazon RDS 中运行的使用 5.5.33 或 5.6.13 的 MySQL 实例。将其配置为在 Amazon RDS 外
部运行的实例的只读副本。
2. 将不在 Amazon RDS 中运行的 MySQL 实例配置为复制源。
3. 使用 mysqldump 将数据库从在 Amazon RDS 外部运行的 MySQL 实例迁移到 Amazon RDS 实例。
4. 开始复制在 Amazon RDS 中运行的实例以捕获创建 mysqldump 文件后所做的更新。由于源实例不在
Amazon RDS 中,您不能使用标准 Amazon RDS 流程创建副本,而应使用存储过程建立副本。
5. 导入完成后,将应用程序指向在 Amazon RDS 中运行的实例。通过运行可终止复制进程的存储过程停
止复制。在运行存储过程后,副本将作为标准 Amazon RDS MySQL 实例运行,无需提升实例。
准备在 Amazon RDS 中运行的 MySQL 实例
确定需要哪些数据库实例类才能支持导入和生产工作负载。有关更多信息,请参阅 数据库实例类 (p. 34)。
确定需要哪些配置选项才能支持工作负载。如果现有 Amazon RDS MySQL 参数组都没有该配置,则创
建新的参数组。有关更多信息,请参阅 使用数据库参数组 (p. 218)。
确定是否需要 Amazon RDS 预配置 IOPS 才能支持工作负载。有关更多信息,请参阅 使用预置 IOPS 存
储 (p. 257)。
API Version 2013-05-15
83
Amazon Relational Database Service 用户指南
从 MySQL 数据库实例导入和导出数据
在 Amazon RDS 中创建指定正确的数据库实例类、参数组、安全组、PIOPS 设置和单个可用区域的
MySQL 实例。选择 5.5.33 版或 5.6.13 版。有关更多信息,请参阅 创建运行 MySQL 数据库引擎的数据
库实例 (p. 69)。在导入完成前,请勿配置多个可用区域。我们建议您也不要在导入完成之前创建只读副
本。
以主用户身份连接实例,并创建所需的用户以支持可访问该实例的管理员、应用程序和服务。
默认情况下,RDS 数据库实例作为只读副本连接在 RDS 外部运行的 MySQL 实例需要满足自己的出口规
则。如果您更改了实例的安全组,您可能需要为在导入期间作为只读副本运行的实例配置出口规则。指定
允许通过 TCP 连接 MySQL 实例的端口和源 IP 地址的出口规则。如果只读副本在 VPC 中的 Amazon
RDS 实例上运行,请在 VPC 安全组中指定出口规则。如果只读副本在不在 VPC 中的 Amazon RDS 实
例上运行,请在数据库安全组中指定出口规则。
如果您在 VPC 安全组中配置出口规则,还必须配置这些 VPC ACL 规则。有关 Amazon VPC网络 ACL
的更多信息,请转到网络 ACL。
• ACL 入口规则允许 TCP 流量从 MySQL 实例的 IP 地址传输到端口 1024-65535。
• ACL 出口规则:允许出站 TCP 流量传输到 MySQL 实例的端口和 IP 地址。
准备复制源
按照 MySQL 文档的说明准备在 Amazon RDS 之外作为复制主体运行的 MySQL 实例。
按照设置复制主配置的说明设置配置。
按照创建用于复制的用户的说明创建复制账户。
使用 show master status 记录 MySQL 二进制日志的位置。有关更多信息,请参阅 MySQL 文档中的
获取复制主体日志二进制文件协调。
您必须在运行 MySQL 源的系统上配置入口规则,该规则将允许系统在复制期间连接 RDS 只读副本。指
定允许从 RDS 只读副本的 IP 地址到 MySQL 实例所使用端口的 TCP 连接的入口规则。
如果 MySQL 实例在 VPC 中的 Amazon EC2 实例上运行,请在 VPC 安全组中指定入口规则。如果 MySQL
实例在不在 VPC 中的 Amazon EC2 实例上运行,请在与 Amazon EC2 实例关联的安全组中指定入口规
则。如果 MySQL 实例在内部运行,请在防火墙中指定入口规则。
如果 MySQL 实例在 VPC 中的 Amazon EC2 上运行,除了安全组入口规则之外,您还必须配置 VPC ACL
规则。有关 Amazon VPC网络 ACL 的更多信息,请转到网络 ACL。
• ACL 入口规则:允许从 Amazon RDS 只读副本子网的 CIDR 范围到 MySQL 实例所使用端口的 TCP
连接。
• ACL 出口规则:允许从端口 1024-65535 到 Amazon RDS 只读副本子网的 TCP 连接。
通过运行 mysqldump 实用工具为要复制的数据库拍摄快照。请勿包含快照中的 MySQL 数据库。按照使
用 Mysqldump 创建转储快照的说明指定要转储的数据库,请不要使用如此例所示的 --all-databases,
而应使用 --databases 参数。源实例在此操作期间为只读模式。将这些二进制日志应用于只读副本之
前,请勿将其清除。
mysqldump 支持多种从数据库转储数据的方法。由于源系统在 mysqldump 提取数据时处于只读模式,
请选择一种可最大限度缩短 mysqldump 运行时间的方法。有关选择 mysqldump 格式并加载数据的更多
信息,请转到使用 mysqldump 进行备份。
启动复制
按照您使用 mysqldump 时选择的转储格式的相应方法将 MySQL 快照加载到 Amazon RDS 中的 MySQL
实例。
API Version 2013-05-15
84
Amazon Relational Database Service 用户指南
从 MySQL 数据库实例导入和导出数据
在 Amazon RDS 实例上运行 mysql.rds_set_external_master 过程,将其配置为在 Amazon RDS
外部运行的实例的只读副本。指定连接到未在 Amazon RDS 中运行的 MySQL 实例的连接信息、复制用
户证书、二进制日志位置以及是否使用 SSL 加密。有关更多信息,请参阅
mysql.rds_set_external_master (p. 104)。
在 Amazon RDS 实例上运行 mysql.rds_start_replication 过程启动复制进程。有关更多信息,请
参阅 mysql.rds_start_replication (p. 106)。
在 Amazon RDS 实例上运行 MySQL show slave status\G 命令,验证它是否运行为只读副本。有关
解析结果的更多信息,请转至 SHOW SLAVE STATUS 语法。如果报告复制错误,您可以使用
mysql.rds_skip_repl_error 跳过错误。有关更多信息,请参阅 mysql_rds_skip_repl_error (p. 107)。
如果某个事件更改了其中一个实例的 IP 地址,例如多可用区域实例故障转移到辅助实例,复制进程可能
会停止。如果发生这种情况,您可能需要重新配置您的入口或出口规则以反映新的 IP 地址。如果实例位
于 VPC 子网中,您可以通过指定子网的 CIDR 范围尽量减少更改规则的需要。
停止复制
在您复制数据库并验证数据库已同步后,请更改所有应用程序和服务以连接到在 Amazon RDS 中运行的
实例。
运行 mysql.rds_stop_replication 过程停止复制进程。有关更多信息,请参阅
mysql.rds_stop_replication (p. 106)。
验证应用程序和服务是否正常运行。
运行 mysql.rds_reset_external_master 过程删除复制配置。有关更多信息,请参阅
mysql.rds_reset_external_master (p. 105)。
为 Amazon RDS 实例拍摄快照。
修改安全组以删除不在 Amazon RDS 中运行的 MySQL 实例的条目。
可以建议网络管理员删除授权复制连接的防火墙规则。
现在,您在可以将 Amazon RDS 实例配置为在配置环境中运行,例如通过启用多个可用区域或者通过从
实例创建只读副本。
在实例开始运行生产负载后,您就可以监控实例的性能。如果不支持生产负载,您可以根据需要重新调整
和重新配置实例。有关更多信息,请参阅 监视数据库实例 (p. 269)。
从任意源将数据导入 MySQL 数据库实例
如果要加载的数据超过 1 GB,或者数据来自除 MySQL 数据库之外的其他位置,我们建议您创建平面文
件,然后使用 mysqlimport 加载这些文件。Mysqlimport 是 MySQL 客户端软件绑定的另一种命令行实用
工具,设计用于将平面文件加载到 MySQL。有关 mysqlimport 的信息,请参阅 MySQL 文档的 mysqlimport
- 数据导入计划。
我们还建议您在加载数据之前及完成加载后都要创建目标 Amazon RDS 数据库实例的数据库快照。Amazon
RDS 数据库快照是数据库实例的完整备份,用于将数据库实例还原到已知状态。启动数据库快照后,数
据库实例的 I/O 操作会在数据库备份时暂停几分钟。
在即将开始加载前创建数据库快照,可让您在需要时将数据库还原到加载前的状态。完成加载后立即创建
数据库快照,可让您在遇到问题时不必再次加载数据,且您还可以使用此数据库快照创建新数据库实例。
下面列表显示了需要采取的步骤。下文更为详细地描述了每个步骤。
1. 创建包含待加载数据的平面文件。
2. 阻止所有应用程序访问目标数据库实例。
API Version 2013-05-15
85
Amazon Relational Database Service 用户指南
从 MySQL 数据库实例导入和导出数据
3. 创建数据库快照。
4. 禁用 Amazon RDS 自动备份。
5. 使用 Mysqlimport 加载数据。
6. 再次启用自动备份。
步骤 1:创建包含待加载数据的平面文件
使用通用格式存储待加载的数据,如 CSV(逗号分隔值)。每个表都必须拥有自己的文件;不能将多个
表的数据合并到同一文件。每个文件的名称都必须与对应的表相同。可以根据个人喜好设置文件扩展名。
例如,如果表名为“sales”,则文件名可以是“sales.csv”或“sales.txt”,但不能是“sales_01.csv”。
只要可能,按照正在加载的表的主键对数据进行排序。这可以显著优化加载时间并尽可能减少磁盘存储要
求。
此过程的速度和效率取决于能否将文件的大小保持在较小状态。如果在未压缩状态下单个文件的大小超过
1 GB,则需将此文件分割为多个文件,然后分别加载各个文件。
在类 Unix 的系统(包括 Linux)中,请使用‘split’命令。例如,以下命令将 sales.csv 文件分割为多个小于
1 GB 的文件,且只在换行符处进行分割 (–C 1024m)。新文件的名称为 sales.part_00、sales.part_01 等。
split -C 1024m -d sales.csv sales.part_
其他操作系统也具有类似的实用工具。
步骤 2:阻止所有应用程序访问目标数据库实例
启动大量负载前,阻止所有应用程序活动访问您将加载到的目标数据库实例(特别是当其他会话修改正在
加载的表或引用的表时)。这可以降低加载过程发生约束冲突的风险、提高加载性能并可以将数据库实例
还原到加载前的某一时间点,而不会丢失未参与加载的进程对数据库实例所做的更改。
当然,这可能并不可行或实际。如果您无法在加载前阻止应用程序访问数据库实例,应采取步骤以确保数
据的可用性和完整性。所需的具体步骤在很大程度上根据特定的使用案例和现场要求而有所不同。
步骤 3:创建数据库快照
如果要将数据加载到不包含数据的新数据库实例,可以跳过此步骤。否则,如有必要,可通过创建数据库
实例的数据库快照,将数据库实例还原到加载前的时间点。如上文所述,启动数据库快照后,数据库实例
的 I/O 操作会在数据库备份时暂停几分钟。
在以下示例中,我们使用 rds–create–db–snapshot 命令,创建 AcmeRDS 实例的数据库快照,并为数据
库快照指定标识符“preload”。
rds-create-db-snapshot AcmeRDS --db-snapshot-identifier=preload
也可以从数据库快照功能进行还原,以便创建适用于空运行的测试数据库实例或“撤消”加载过程中所做的
更改。
请务必注意,从数据库快照还原数据库会创建一个新数据库实例,和所有数据库实例一样,这个数据库实
例具有唯一的标识符和终端节点。如果需要还原数据库实例但不改变终端节点,必须先删除此数据库实
例,然后才能重新使用此终端节点。
API Version 2013-05-15
86
Amazon Relational Database Service 用户指南
从 MySQL 数据库实例导入和导出数据
例如,要创建一个适用于空运行或其他测试的数据库实例,您可能要为数据库实例指定它自己的标识符。
在示例中,“AcmeRDS 2”是标识符,我们可使用与 AcmeRDS–2 关联的终端节点连接数据库实例。
rds-restore-db-instance-from-db-snapshot AcmeRDS-2 --db-snapshot-identifier=pre
load
要重新使用现有的终端节点,必须首先删除此数据库实例,然后为还原的数据库指定相同的标识符:
rds-delete-db-instance AcmeRDS --final-db-snapshot-identifier AcmeRDS-Final
rds-restore-db-instance-from-db-snapshot AcmeRDS --db-snapshot-identifier=preload
请注意,删除数据库实例前,该示例会为其拍摄最终数据库快照。您可以自由选择,但我们建议您这样
做。
步骤 4:禁用 Amazon RDS 自动备份
警告:如果需要保留执行时间点恢复的能力,请勿禁用自动备份。禁用自动备份会清除所有现有备份,因
此禁用自动备份后,将无法使用时间点恢复功能。禁用自动备份是一种性能优化,并且无需数据加载。请
注意,禁用自动备份不会影响数据库快照。所有现有的数据库快照仍可用于还原。
禁用自动备份将减少约 25% 的加载时间,并减少加载期间所需的存储空间。如果要将数据载入不包含数
据的新数据库实例,禁用备份就可轻松加快加载并避免使用备份所需的额外存储空间。但是,如果要将数
据载入已包含数据的数据库实例,您必须权衡禁用备份的益处与无法执行时间点恢复功能的影响。
数据库实例具有默认启用的自动备份(保留期为一天)。为禁用自动备份,您必须将备份保留期设置为
零。加载后,可以将备份保留期设置为非零值,重新启用自动备份。为启用或禁用备份,Amazon RDS
必须关闭数据库实例,然后重启此数据库实例,以打开或关闭 MySQL 日志记录。
使用 rds–modify–db–instance 命令将备份保留期设置为零并立即应用此更改。要将保留期设置为零,需
要重启数据库实例,因此等到重启完成后再继续操作。
rds-modify-db-instance AcmeRDS --apply-immediately --backup-retention-period=0
可以使用 rds–describe–db–instances 命令检查数据库实例的状态。此示例显示了 AcmeRDS 数据库实例
的状态,包括显示列标题的 ––headers 选项。
rds-describe-db-instances AcmeRDS --headers
当状态列显示数据库可用时,您可以继续操作。
步骤 5:加载数据
使用 Mysqlimport 实用工具将平面文件加载到 Amazon RDS。在此示例中,我们让 Mysqlimport 加载名
为“sales”且扩展名以“part_”开头的所有文件。这种方法可以轻松加载“split”示例中创建的所有文件。使用
––compress 选项,最大限度地减少网络流量。––fields–terminated–by=',' 选项可用于 CSV 文件,––local
API Version 2013-05-15
87
Amazon Relational Database Service 用户指南
从 MySQL 数据库实例导入和导出数据
选项指定传入数据应位于客户端。如果没有 ––local 选项,MySQL 将查找数据库主机上的数据,因此请
始终指定 ––local 选项。
mysqlimport --local --compress --user=username --password --host=hostname \ -fields-terminated-by=',' Acme sales.part_*
对于极大数据加载过程,需要在文件加载间期定期拍摄额外的数据库快照,并记录已加载的文件。如果出
现问题,您就可以轻松地从拍摄最后一个数据库快照的时间点恢复,避免冗长的重新加载过程。
步骤 6:启用 Amazon RDS 自动备份
加载完成后,将备份保留期设置回其预加载值,重新启用 Amazon RDS 自动备份。如前文所述,Amazon
RDS 将重启数据库实例,因此请为短暂中断做好准备。
在此示例中,我们使用 rds–modify–db–instance 命令为 AcmeRDS 数据库实例启用自动备份,并将保留
期设置为 1 天。
rds-modify-db-instance AcmeRDS --apply-immediately --backup-retention-period=1
使用复制导出 MySQL 5.6 数据
您可以使用复制功能将在 Amazon RDS 中运行的 MySQL 5.6 实例的数据导出到在 RDS 外部运行的
MySQL 实例。您将迁移到的源 MySQL 数据库可以在您的数据中心内运行或者在 Amazon EC2 实例中运
行。MySQL 的 Amazon RDS 实例必须运行 5.6.13 版或更高版本。在 Amazon RDS 外部运行的 MySQL
实例的版本必须与在 Amazon RDS 中运行的实例版本相同或采用更高版本。
只有从在 Amazon RDS 中运行的 MySQL 实例传输数据库时,才支持复制到不在 Amazon RDS 中运行的
MySQL 实例。传输完数据,并且应用程序可以开始访问新实例时,应该终止复制。
下面列表显示了需要采取的步骤。下文更为详细地描述了每个步骤。
1. 准备在 Amazon RDS 外部运行的 MySQL 实例。
2. 将在 Amazon RDS 中运行的 MySQL 实例配置为复制源。
3. 使用 mysqldump 将数据库从 Amazon RDS 实例迁移到在 Amazon RDS 外部运行的实例。
4. 开始复制在 Amazon RDS 外部运行的实例。
5. 导入完成后停止复制。
准备在 Amazon RDS 外部运行的 MySQL 实例
安装在 Amazon RDS 外部运行的 MySQL 实例。
以主用户身份连接实例,并创建所需的用户以支持可访问该实例的管理员、应用程序和服务。
按照 MySQL 文档的说明准备在 Amazon RDS 之外作为复制从属进程或只读副本运行的 MySQL 实例。
有关更多信息,请转到设置复制从属进程配置。
您必须为在导入期间作为只读副本运行的实例配置出口规则。出口规则将允许在复制期间连接 MySQL 副
本。指定允许通过 TCP 连接 MySQL 实例的端口和源 IP 地址的出口规则。
API Version 2013-05-15
88
Amazon Relational Database Service 用户指南
从 MySQL 数据库实例导入和导出数据
如果只读副本在 VPC 中的 Amazon EC2 实例上运行,请在 VPC 安全组中指定出口规则。如果只读副本
在不在 VPC 中的 Amazon EC2 实例上运行,请在 Amazon EC2 安全组中指定出口规则。如果只读副本
安装在本地,请在防火墙中指定出口规则。
如果只读副本在 VPC 中运行,除了安全组出口规则之外,您还必须配置 VPC ACL 规则。有关 Amazon
VPC网络 ACL 的更多信息,请转到网络 ACL。
• ACL 入口规则允许 TCP 流量从 Amazon RDS 源实例的 IP 地址传输到端口 1024-65535。
• ACL 出口规则:允许出站 TCP 流量传输到 Amazon RDS 源实例的端口和 IP 地址。
准备复制源
准备在 Amazon RDS 中作为复制源运行的 MySQL 实例。
确保设置复制时您的客户端计算机有足够的磁盘空间保存二进制日志。
按照创建用于复制的用户的说明创建复制账户。
您必须在运行 Amazon RDS 复制源的系统上配置入口规则,该规则将允许系统在复制期间连接 MySQL
只读副本。指定允许从 MySQL 只读副本的 IP 地址到 Amazon RDS 实例所使用端口的 TCP 连接的入口
规则。
如果 Amazon RDS 实例在 VPC 中的 Amazon RDS 实例上运行,请在 VPC 安全组中指定入口规则。如
果 Amazon RDS 实例不在 VPC 中运行,请在数据库安全组中指定入口规则。
如果 Amazon RDS 实例在 VPC 中运行,您还必须配置 VPC ACL 规则。有关 Amazon VPC网络 ACL 的
更多信息,请转到网络 ACL。
• ACL 入口规则:允许从 MySQL 只读副本的 IP 地址到 Amazon RDS 实例所使用端口的 TCP 连接。
• ACL 出口规则:允许从 MySQL 只读副本的 IP 地址到端口 1024-65535 的 TCP 连接。
确保设置的备份保留期足够长,以便在导出期间不会清除任何二进制日志。如果在导出完成前清除了任何
日志,您必须从头开始重启复制进程。有关设置备份保留期的更多信息,请参阅 使用自动备份 (p. 199)。
使用 mysql.rds_set_configuration 存储过程将二进制日志保留期设置得足够长,以便在导出期间
不会清除二进制日志。有关更多信息,请参阅 访问 MySQL 5.6 二进制日志 (p. 289)。
为了进一步确保不会清除源实例的二进制日志,请通过源实例创建 Amazon RDS 只读副本。有关更多信
息,请参阅 创建只读副本 (p. 93)。
复制数据库
创建 Amazon RDS 只读副本后,调用 mysql.rds_stop_replication 存储过程停止复制进程。源实
例不再会清除其二进制日志文件,因此,可在复制进程中使用这些日志文件。
使用 Mysql show slave status\G 并观察 master_host、master_port、master_log_file 和
read_master_log_pos 值。
确保您的客户端计算机有足够的空间容纳将从数据库复制的 mysqldump 文件。通过运行客户端计算机上
的 mysqldump 实用工具为将要复制的数据库拍摄快照。为大量数据库完成此过程可能需要数小时的时
间。按照使用 mysqldump 创建转储快照的说明操作。
这是在客户端上运行 mysqldump 和将转储数据发送到 mysql 客户端实用工具的示例。
mysqldump –h RDS instance endpoint -u user –p password --port 3306 --singletransaction --routines --triggers --databases database database2 --compress -
API Version 2013-05-15
89
Amazon Relational Database Service 用户指南
从 MySQL 数据库实例导入和导出数据
-compact | /rdsdbbin/mysql/bin/mysql -h MySQL host -u master user -p password
--port 3306
这是在客户端上运行 mysqldump 和将转储数据写入文件的示例。
mysqldump –h RDS instance endpoint -u user –p password --port 3306 --singletransaction --routines --triggers --databases database database2 > path/rdsdump.sql
完成导出
加载 mysqldump 文件并在 Amazon RDS 外部运行的 MySQL 实例上创建数据库后,请从原始的 Amazon
RDS 源实例启动复制,以导出您停止 Amazon RDS 只读副本的复制后发生的任何源更改。
使用 MySQL CHANGE MASTER 命令配置 MySQL 实例。指定用户授权的 REPLICATION SLAVE 权限的
ID 和密码。指定您从在 RDS 只读副本上运行 Mysql show slave status\G 命令获得的 master_host、
master_port、master_log_file 和 read_master_log_pos 值。有关更多信息,请转到在从属进程上设置主
配置。
使用 MySQL START SLAVE 命令启动 Amazon RDS 源实例和 MySQL 副本的复制。
在 Amazon RDS 实例上运行 MySQL show slave status\G 命令,验证它是否运行为只读副本。有关
解析结果的更多信息,请转到 SHOW SLAVE STATUS 语法。
在 Amazon RDS 源上执行 MySQL 实例的复制后,使用 MySQL STOP SLAVE 命令终止从 Amazon RDS
源实例的复制。
在 Amazon RDS 只读副本上,调用 mysql.rds_start_replication 存储过程。这将使 Amazon RDS
能够从 Amazon RDS 源实例清除二进制日志文件。
API Version 2013-05-15
90
Amazon Relational Database Service 用户指南
使用只读副本
使用只读副本
Amazon RDS 使用 MySQL 内置的复制功能从源数据库实例创建一个特殊类型的数据库实例,称为只读
副本。对源数据库实例的更新将复制到只读副本。只读副本处理来自应用程序的只读流量,这样可减轻源
数据库实例上的负载。通过只读副本,可针对进行大量读取操作的数据库负载灵活地进行扩展,突破单个
数据库实例的容量限制。
创建只读副本时,可指定现有的数据库实例作为源。Amazon RDS 拍摄源实例的快照,并根据该快照创
建一个只读实例。然后,只要源数据库实例发生更改,Amazon RDS 就使用 MySQL 固有的异步复制功
能更新该只读副本。只读副本是仅允许只读连接的数据库实例;应用程序可按对于任何数据库实例的相同
方式连接到只读副本。有关只读副本的详细信息,请参阅只读副本 (p. 45)。
最多可从一个数据库实例创建 5 个只读副本。只读副本可以是按需实例,也可以是预留实例。为了有效地
进行复制,每个只读副本具有的计算和存储资源应与源数据库实例一样多。如果扩展源数据库实例,则还
应扩展只读副本。
如果只读副本运行的是 MySQL 5.6,则可指定它作为另一只读副本的源数据库实例。例如,可从
MyDBInstance 创建 ReadReplica1,然后从 ReadReplica1 创建 ReadReplica2。对 MyDBInstance 的更
新将复制到 ReadReplica1,然后从 ReadReplica1 复制到 ReadReplica2。
Amazon RDS 不支持循环复制。无法配置数据库实例以使其作为现有数据库实例的复制源;只能从现有
的数据库实例新建只读副本。例如,MyDBInstance 复制到 ReadReplica1,然后 ReadReplica1 复制到
ReadReplica2。无法配置 ReadReplica2 以向回复制到 MyDBInstance 或 ReadReplica1。从 ReadReplica2
只能新建只读副本,如 ReadReplica3。
必须先通过将备份保留期设置为 0 以外的值,在源数据库实例上启用自动备份,然后数据库实例才能作为
复制源。此要求还适用于作为只读副本的源数据库实例的另一只读副本。只有运行 MySQL 5.6 的只读副
本支持自动备份,而 5.1 或 5.5 不支持。
可通过多种方式监控只读副本的状态。RDS 控制台显示只读副本的状态;还可使用 CLI 命令
rds-describe-db-instances或 API 操作 DescribeDBInstances 查看只读副本的状态。
API Version 2013-05-15
91
Amazon Relational Database Service 用户指南
使用只读副本
只读副本的状态可以是以下某项:
• 正在复制—正在成功地复制只读副本。
• 错误—复制出错。检查 Amazon RDS 控制台中的复制错误字段或事件日志以确定具体错误。有关排除
复制错误的详细信息,请参阅解决只读副本问题 (p. 95)
• 已停止—复制已因客户发起请求而停止。
• 已终止—只读副本复制出错超过 30 天,已终止。只读副本仍可供访问进行读取操作,但无法与源实例
同步。
复制出错 30 天后终止只读副本以防止出现存储和故障转移问题。复制中断可能影响存储,因为二进制日
志的大小和数量可能因向二进制日志写入大量错误消息而增大。复制中断还可能影响故障恢复,因为
Amazon RDS 在恢复期间需要一段时间维护和处理大量二进制日志。
可通过查看 MySQL Show Slave Status 命令返回的 Seconds_Behind_Master 数据,或 Amazon CloudWatch
副本滞后统计数据,监控副本滞后源数据库实例多久。如果某个副本远远滞后于您所处的环境,则考虑删
除再重新创建该只读副本。还要考虑扩大只读副本的规模以加快复制。
只读副本旨在支持读取查询,但可能需要不时地进行更新,如添加索引以加快访问副本的特定查询类型。
可通过在只读副本的数据库参数组中将 read_only 参数设置为 0,启用更新。
只要不超过源实例 5 个只读副本的限制,即可同时运行多个引用同一源数据库实例的只读副本创建或删除
操作。
可从单可用区域或多可用区域数据库实例部署中创建只读副本。可使用多可用区域部署提高重要系统的持
久性和可用性,但不能使用辅助可用区域为只读查询提供服务。必须从大流量、多可用区域数据库实例创
建只读副本以从源数据库实例卸载读取查询。如果多可用区域部署的源实例故障转移到辅助可用区域,则
任何关联的只读副本都将切换为使用辅助可用区域作为其复制源。如果在故障期间未刷新某些 MySQL 二
进制日志事件,则有可能只读副本无法切换到辅助可用区域。在这种情况下,必须手动删除再重新创建只
读副本。可通过设置 sync-binlog=1 和 innodb-xa-support=1 动态变量,降低在 MySQL 5.1 或 5.5 中发生
API Version 2013-05-15
92
Amazon Relational Database Service 用户指南
使用只读副本
这种情况的可能性。这些设置可能降低性能,因此,请先测试其影响,然后再实施对生产环境的更改。如
果使用的是 MySQL 5.6,则不大可能出现这些问题。对于运行 MySQL 5.6 的实例,无法修改这些参数,
并由 Amazon RDS 将这些参数设置为 sync-binlog=1 和 innodb-xa-support=1。
必须使用与删除数据库实例相同的机制显式地删除只读副本。如果删除源数据库实例而不删除副本,则副
本保持有效。
通常在 Amazon RDS 数据库实例之间配置复制,但可配置复制以从在 Amazon RDS 之外运行的 MySQL
实例导入数据库,或将数据库导出到此类实例。有关详细信息,请参阅从不在 Amazon RDS 中运行的
MySQL 数据库导入数据 (p. 83)和使用复制导出 MySQL 5.6 数据 (p. 88)。
可通过调用系统存储过程 mysql.rds_stop_replication (p. 106) 和 mysql.rds_start_replication (p. 106),在
Amazon RDS 数据库实例上停止再重新开始复制过程。对于长时间运行的操作(如创建大型索引)在两
个 Amazon RDS 实例之间进行复制时,可以这样做。在导入或导出数据库时,也需要停止再开始复制。
有关详细信息,请参阅从不在 Amazon RDS 中运行的 MySQL 数据库导入数据 (p. 83)和使用复制导出
MySQL 5.6 数据 (p. 88)。
创建只读副本
可使用 AWS Management Console、CLI 或 API 从现有的 MySQL 数据库实例创建只读副本。可通过指
定 SourceDBInstanceIdentifier(要从其进行复制的源数据库实例的数据库实例标识符),创建只
读副本。
开始创建只读副本时,Amazon RDS 拍摄源数据库实例的数据库快照,然后开始复制。结果是在拍摄数
据库快照时,将在源数据库实例上感到短暂的 I/O 暂停。I/O 暂停通常持续大约一分钟;如果源数据库实
例为多可用区域部署,则可避免发生这种情况(在多可用区域部署的情况下,从备用实例拍摄数据库快
照)。长时间运行的活动事务可拖慢创建只读副本的过程,因此,请等待长时间运行的事务完成,然后再
创建只读副本。如果从同一源数据库实例同时创建多个只读副本,则 Amazon RDS 仅开始第一个创建操
作时拍摄一张快照。
创建只读副本时要考虑几件事。首先,必须通过将备份保留期设置为 0 以外的值,在源数据库实例上启用
自动备份。此要求还适用于作为只读副本的源数据库实例的另一只读副本。只有运行 MySQL 5.6 的只读
副本支持自动备份,而 5.1 或 5.5 不支持。
其次,如果使用的是 MyISAM 等非事务性引擎,则需要执行以下步骤才能成功地设置只读副本。需要执
行这些步骤以确保只读副本具有数据的一致副本。请注意,如果您的所有表使用的都是事务性引擎(如
InnoDB),则无需执行这些步骤。
1. 停止源数据库实例中非事务性表上的所有 DML 和 DDL 操作,然后等待其完成。SELECT 语句可以继
续运行。
2. 刷新并锁定源数据库实例中的表。
3. 使用以下某种方法创建只读副本。
4. 使用例如 DescribeDBInstances API 操作检查创建只读副本的进度。有只读副本可用后,即解除对源
数据库实例的表的锁定,然后继续进行正常的数据库操作。
AWS Management Console
要从源 MySQL 数据库实例创建只读副本,请执行以下操作
1.
2.
Sign in to the AWS Management Console and open the Amazon RDS console at
https://console.aws.amazon.com/rds/.
在导航窗格中,单击数据库实例。
3.
在我的数据库实例窗格中,右键单击要用作只读副本源的 MySQL 数据库实例,然后选择创建只读副
本。
4.
5.
在数据库实例标识符文本框中,键入该只读副本的名称。根据需要,调整其他设置。
单击是,创建只读副本。
API Version 2013-05-15
93
Amazon Relational Database Service 用户指南
使用只读副本
CLI
要从源 MySQL 数据库实例创建只读副本,请执行以下操作
•
使用 rds-create-db-instance-read-replica 命令。
API
要从源 MySQL 数据库实例创建只读副本,请执行以下操作
•
调用 CreateDBInstanceReadReplica。
提升要成为数据库实例的只读副本
可以将 MySQL 只读副本提升到独立的单可用区域数据库实例中。出于多种原因,您可能要将只读副本转
换为单可用区域数据库实例。在提升只读副本时,实例将重启,然后才变为可用,牢记这一点很重要。
执行创建索引或其他维护任务等 DDL 操作可能耗时漫长,并且某些操作可能会影响数据库实例的性能。
可改为在只读副本上执行这些操作。DDL 操作完毕并且源数据库实例更新只读副本后,可提升只读副本。
还可在灾难恢复计划过程中提升只读副本。
提升只读副本时新建的数据库实例保留以前只读副本源的备份保留期、备份时段和参数组。完成提升过程
可能耗时数分钟或更久,具体取决于只读副本的大小。将只读副本提升为单可用区域数据库实例后,它就
如同任何其他单可用区域数据库实例一样。例如,可将新数据库实例转换为多可用区域数据库实例,并可
从其创建只读副本。也可以拍摄数据库快照和执行时间点还原操作。由于经过提升的数据库实例不再是只
读副本,因此不能再使用它作为复制目标。如果源数据库实例有多个只读副本,则将其中一个只读副本提
升为数据库实例对其他副本无影响。
如果所提升的只读副本进而复制到其他只读副本,则这些复制仍有效。设想一个示例,其中 MyDBInstance1
复制到 MyDBInstance2,然后 MyDBInstance2 复制到 MyDBInstance3。如果提升 MyDBInstance2,则
将不再从 MyDBInstance1 复制到 MyDBInstance2,但 MyDBInstance2 仍将复制到 MyDBInstance3。
以下步骤展示将只读副本提升为单可用区域数据库实例的一般过程。
1. 停止向只读副本源数据库实例写入任何事务,然后等待对只读副本完成所有更新。在源数据库实例上
更新数据库之后,才在只读副本上更新数据库,并且这种复制“滞后”可能显著不同。使用副本滞后指标
确定只读副本完成所有更新的时间。
2. 要能够对只读副本作出更改,必须在只读副本的数据库参数组中将 read_only 参数设置为 0。
3. 在只读副本上执行所有必需的 DDL 操作,如创建索引。在只读副本上执行的操作不会影响源数据库实
例的性能。
4. 使用 RDS 控制台上的提升只读副本选项、CLI 命令 rds-promote-read-replica 或
PromoteReadReplica API 操作提升只读副本。
Note
提升过程需要几分钟才能完成。在提升只读副本时,将停止复制并重启只读副本。重启完毕
后,只读副本即可作为单可用区域数据库实例使用。
API Version 2013-05-15
94
Amazon Relational Database Service 用户指南
使用只读副本
AWS Management Console
要将只读副本提升为数据库实例,请执行以下操作
1.
Sign in to the AWS Management Console and open the Amazon RDS console at
https://console.aws.amazon.com/rds/.
2.
3.
在 Amazon RDS 控制台中,单击只读副本。
在只读副本窗格中,选中要提升的只读副本旁的复选框。
4.
5.
6.
单击提升只读副本。
在提升只读副本对话框中,输入新提升的数据库实例的备份保留期和备份时段。
根据需要设置完毕后,单击继续。
7.
在确认页上,单击是,提升。
CLI
要将只读副本提升为数据库实例,请执行以下操作
•
使用 rds-promote-read-replica 命令。
API
要将只读副本提升为数据库实例,请执行以下操作
•
调用 PromoteReadReplica。
解决只读副本问题
MySQL 的读取复制技术为异步式。由于是异步式,因此源数据库实例上偶发的 BinLogDiskUsage 增
多,而只读副本上应有 ReplicaLag。例如,可并行向源数据库实例大量写入,而使用一个 IO 线程将向
只读副本的写入序列化可导致源实例与只读副本之间产生滞后。有关 MySQL 文档中只读副本的详细信
息,请参阅 Replication Implementation Details(复制实施详细信息)。
有多种方式可降低对源数据库实例的更新与对只读副本的后续更新之间的滞后。只读副本的存储大小和数
据库实例类应与其源数据库实例类似。还应确保源数据库实例与只读副本使用的数据库参数组中的参数设
置兼容;例如,参阅下方对 max_allowed_packet 参数的讨论以了解详细信息。
Amazon RDS 监控只读副本的复制状态,如果复制因任何原因(如在只读副本上运行的 DML 查询与在源
数据库实例上作出的更新有冲突)停止,则还会将只读副本实例的 Replication State 字段更新为
Error。可通过查看 Replication Error 字段,检查 MySQL 引擎引发的关联错误的详细信息。还生
成指示只读副本状态的事件,包括 RDS-EVENT-0045 (p. 276)、RDS-EVENT-0046 (p. 276)和
RDS-EVENT-0047 (p. 276)。有关事件和订阅事件的详细信息,请参阅使用 Amazon RDS 事件通知 (p. 273)。
如果返回 MySQL 错误消息,则检查 MySQL 错误消息文档中的错误编号。
一个可导致复制出错的常见问题是只读副本的 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 才能创建
索引。如果向只读副本上的表写入,则可能会中断复制。
API Version 2013-05-15
95
Amazon Relational Database Service 用户指南
使用只读副本
• 使用 MyISAM 等非事务性存储引擎。只读副本需要事务性存储引擎。InnoDB 存储引擎仅支持复制。
• 使用不安全的不确定性查询,如 SYSDATE()。有关详细信息,请参阅 Determination of Safe and Unsafe
Statements in Binary Logging(确定二进制日志记录中的安全和不安全语句)。
如果决定可安全地跳过错误,则可执行跳过当前的复制错误 (p. 97)一节所述的步骤。否则,可删除只读
副本,然后使用相同的数据库实例标识符创建实例,以使终端节点保持与旧只读副本的终端节点相同。如
果修复了复制错误,则 Replication State 变为 Replicating。
API Version 2013-05-15
96
Amazon Relational Database Service 用户指南
附录:MySQL 的数据库管理员常见任务
附录:MySQL 的数据库管理员常见任务
为了让用户获得托管式服务体验,Amazon RDS 未提供对数据库实例的 Shell 访问权限,并且限制对需要
高级特权的某些系统程序和表的访问权限。本部分介绍了一些数据库管理员常见任务的 Amazon RDS 特
定实施,这些任务适用于运行 MySQL 数据库引擎的数据库实例。
Topics
• 取消会话或查询 (p. 97)
• 跳过当前的复制错误 (p. 97)
• 使用 InnoDB 表空间缩短崩溃恢复时间 (p. 98)
• 管理 Global Status History (p. 99)
取消会话或查询
为终止数据库实例上的用户会话或查询,Amazon RDS 提供了以下命令:
PROMPT> CALL mysql.rds_kill(thread-ID) PROMPT> CALL
mysql.rds_kill_query(thread-ID)
例如,要取消线程 99 上运行的会话,可以键入以下内容:
PROMPT> CALL mysql.rds_kill(99);
要取消线程 99 上运行的查询,可以键入以下内容:
PROMPT> CALL mysql.rds_kill_query(99);
跳过当前的复制错误
使用 MySQL 版本 5.1.62 和 5.5.23 时,Amazon RDS 会为您提供一种跳过只读副本错误的机制,即,当
错误导致只读副本挂起但不会影响数据的完整性时,可跳过错误。
Note
要验证能否安全跳过错误,首先您应在只读副本的命令提示符处键入以下命令:
PROMPT> show slave status\G
要跳过错误,您可以发出以下命令:
API Version 2013-05-15
97
Amazon Relational Database Service 用户指南
使用 InnoDB 表空间缩短崩溃恢复时间
PROMPT> CALL mysql.rds_skip_repl_error;
如果您在未出现复制错误的主数据库实例或只读副本上运行此命令,则此命令不会产生任何影响。
如果您在使用 5.1.62 或 5.5.23 之前的 MySQL 版本,可以在 MySQL 的主要版本内升级到最新的次要版
本。有关更多信息,请参阅 修改运行 MySQL 数据库引擎的数据库实例 (p. 78)。
使用 InnoDB 表空间缩短崩溃恢复时间
MySQL 中的每张表都包括表定义、数据和索引。MySQL 存储引擎 InnoDB 将表数据和索引存储在表空
间。InnoDB 创建一个全局共享表空间,该表空间包含数据字典和其他相关元数据,并且可包含表数据和
索引。InnoDB 还可以为每个表和分区创建单独的表空间。这些单独的表空间存储在扩展名为 .ibd 的文件
中,并且每个表空间的标头都包含唯一标识该表空间的编号。
Amazon RDS 在名为 innodb_file_per_table 的 MySQL 参数组中提供参数。此参数控制 InnoDB 是
将新表数据和索引添加到共享表空间(通过将参数值设置为 0)还是添加到各个表空间(通过将参数值设
置为 1)。Amazon RDS 将 innodb_file_per_table 参数的默认值设置为 1,这允许您删除各 InnoDB
表并回收这些表使用的数据库实例存储空间。在大多数用例中,建议将 innodb_file_per_table 参数
设置为 1。
当您使用标准存储且具有大量表(例如,超过 1000 个表)时,或者当您使用预配置 IOPS 存储且具有的
表数量超过 10,000 时,您应将 innodb_file_per_table 参数设置为 0。当您将此参数为 0 时,不会
创建单独的表空间,这可以缩短数据库崩溃恢复所用的时间。
MySQL 在崩溃恢复周期中处理每个元数据文件,其中包括表空间。同存在多个表空间时 MySQL 处理成
千上万个表空间文件所需的时间相比,MySQL 处理共享表空间中的元数据信息所需的时间可以忽略不计。
由于表空间编号存储在每个文件的标头中,因此读取所有表空间文件总共可能需要几个小时。例如,在崩
溃恢复周期内,处理标准存储中的一百万个 InnoDB 表空间可能需要五至八个小时。有时,InnoDB 可能
确定它需要在崩溃恢复周期后执行额外的清除,因此它会开始另一个崩溃恢复周期,这将延长恢复时间。
请记住,除处理表空间信息外,崩溃恢复周期还需要回滚事务处理、修复已损坏的页面和其他操作。
由于 innodb_file_per_table 参数位于参数组中,因此您可以通过编辑数据库实例使用的参数组来更
改参数值,而无需重启数据库实例。例如,在将设置从 1(创建单独的表)更改为 0(使用共享表空间)
之后,新 InnoDB 表将添加到共享表空间,而现有表将继续拥有单独的表空间。要将 InnoDB 表移至共享
表空间,必须使用 ALTER TABLE 命令。
将多个表空间迁移到共享表空间
使用以下命令可以将 InnoDB 表的元数据从自己的表空间移至共享表空间,这将根据
innodb_file_per_table 参数设置重建表元数据。
PROMPT>ALTER TABLE name ENGINE = InnoDB
例如,以下查询为每个 InnoDB 表返回一个 ALTER TABLE 语句。
SELECT CONCAT('ALTER TABLE `', REPLACE(TABLE_SCHEMA, '`', '``'),
'`.`', REPLACE(TABLE_NAME, '`', '``'), '` ENGINE=InnoDB;') FROM INFORMA
TION_SCHEMA.TABLES WHERE TABLE_TYPE = 'BASE TABLE' AND ENGINE = 'InnoDB' AND
TABLE_SCHEMA <> 'mysql';
API Version 2013-05-15
98
Amazon Relational Database Service 用户指南
管理 Global Status History
重建 MySQL 表以便将该表的元数据移至共享表空间临时需要额外的存储空间来重建表,因此,数据库实
例必须具有可用存储空间。在重建期间,该表将被锁定,无法供查询访问。对于小型表或不经常访问的
表,这可能不是问题;对于在高并发环境中的大型表或经常访问的表,您可以在只读副本上重建表。
您可以创建只读副本,并将表元数据迁移到只读副本上的共享表空间。虽然 ALTER TABLE 语句会阻止
访问只读副本,但源数据库实例不会受到影响。尽管只读副本会在表重建过程中滞后,但源数据库实例将
继续生成其二进制日志。由于重建需要额外的存储空间,并且重放日志文件可能会变得很大,因此您应该
创建只读副本,并向其分配大于源数据库实例的存储空间。
应遵循以下步骤创建只读副本和重建 InnoDB 表,以便使用共享表空间:
1. 确保在源数据库实例上启用备份保留,以便启用二进制日志记录
2. 使用 AWS 控制台或 RDS CLI 创建源数据库实例的只读副本。由于创建只读副本涉及的流程与崩溃恢
复一样多,因此,如果存在大量 InnoDB 表空间,创建过程可能会需要一些时间。在只读副本上分配的
存储空间应大于源数据库实例上当前使用的空间。
3. 在创建只读副本后,创建具有参数设置 read_only = 0 和 innodb_file_per_table = 0 的参数
组,然后将该参数组与只读副本关联。
4. 针对您要在副本中迁移的所有表发出 ALTER TABLE <name> ENGINE = InnoDB。
5. 在只读副本中完成所有 ALTER TABLE 语句后,验证只读副本是否连接至源数据库实例,并且两个实
例是否同步。
6. 准备就绪后,使用 AWS 控制台或 RDS CLI 将只读副本提升为主实例。确保将用于新的主实例的参数
组的 innodb_file_per_table 参数设置为 0。更改新的主实例的名称,并将所有应用程序指向新的主实
例。
管理 Global Status History
MySQL 保存了许多状态变量,用于提供与操作相关的信息。状态变量值可以帮助您检测数据库实例上的
锁定或内存问题。这些状态变量的值会从上次启动数据库实例时开始累积。可以使用 FLUSH STATUS 命
令将大多数状态变量重置为 0。
Amazon RDS 提供了一套程序,这些程序会随着时间为这些状态变量的值拍摄快照,并将它们及上次拍
摄快照后所做的任何更改写入一个表中,从而可以随时间监控这些值。此基础设施名为 Global Status
History (GoSH),安装在从版本 5.1.62 和 5.5.23 开始的所有 MySQL 数据库实例上。默认情况下 GoSH
处于禁用状态。
要启用 GoSH,请首先在数据库参数组中将参数 event_scheduler 设置为“ON”,从而启用事件调度程序。
有关创建和修改数据库参数组的信息,请参阅 使用数据库参数组 (p. 218)。
然后可以使用下表中的程序启用和配置 GoSH。在命令提示符处,为每一个程序键入以下命令:
PROMPT> CALL procedure-name;
其中,procedure-name 是表中的一项程序。
程序
描述
rds_enable_gsh_collector
启用 GoSH,按照 rds_set_gsh_collector 指定的间隔拍
摄默认快照。
rds_set_gsh_collector
指定快照之间的间隔,以分钟为单位。默认值是 5。
rds_disable_gsh_collector
禁用快照。
API Version 2013-05-15
99
Amazon Relational Database Service 用户指南
管理 Global Status History
程序
描述
rds_collect_global_status_history 根据需求拍摄快照。
rds_enable_gsh_rotation
按照 rds_set_gsh_rotation 指定的间隔,使
mysql.global_status_history 表的内容可交替到
mysql.global_status_history_old。
rds_set_gsh_rotation
指定表交替之间的间隔,以天为单位。默认值是 7。
rds_disable_gsh_rotation
禁用表交替。
rds_rotate_global_status_history 根据需求将 mysql.global_status_history 表的内容交
替到 mysql.global_status_history_old。
GoSH 运行时,您可以查询 GoSH 要写入的表。例如,要查询 Innodb 缓冲池的命中率,您可以发送以下
查询请求:
select a.collection_end, a.collection_start, (( a.variable_Deltab.variable_delta)/a.variable_delta)*100 as "HitRatio" from rds_global_status_his
tory as a join rds_global_status_history as b on a.collection_end = b.collec
tion_end where a. variable_name = 'Innodb_buffer_pool_read_requests' and
b.variable_name = 'Innodb_buffer_pool_reads'
API Version 2013-05-15
100
Amazon Relational Database Service 用户指南
附录:MySQL 数据库引擎选项
附录:MySQL 数据库引擎选项
本附录介绍了一些选项或其他功能,这些选项或功能适用于运行 MySQL 数据库引擎的 Amazon RDS 实
例。要启用这些选项可以将它们添加到自定义选项组中,然后将选项组关联到数据库实例。有关使用选项
的更多信息,请参阅 有关选项组应了解的情况 (p. 210)。
MySQL 5.6 当前支持以下选项:
• MEMCACHED
MySQL 5.6 内存缓存支持
Amazon RDS 支持对 InnoDB 表使用内存缓存接口,该接口已在 MySQL 5.6 中引入。通过内存缓存 API,
应用程序可以按照 NoSQL 密钥值数据存储的类似使用方式来使用 InnoDB 表。
内存缓存是一种分布式内存高速缓存服务,其中的 Web 服务可实现密钥值高速缓存。应用程序使用内存
高速缓存网络协议从高速缓存插入、操作和检索密钥值数据对。MySQL 5.6 引入了一个插件来实现一个
守护进程服务,该服务通过内存缓存协议公开 InnoDB 表中的数据。有关 MySQL 内存缓存插件的更多信
息,请转到 InnoDB 与内存缓存的集成。
您应当通过以下方式为 Amazon RDS MySQL 5.6 实例启用内存缓存支持:
1. 确定用于控制对内存缓存接口的访问的安全组。如果已使用 SQL 接口的应用程序集是将访问内存缓存
接口的相同应用程序集,则可以使用 SQL 接口使用的现有 VPC 或数据库安全组。如果不同应用程序
集将访问内存缓存接口,请定义新 VPC 或数据库安全组。有关管理安全组的更多信息,请参阅 Amazon
RDS 安全组 (p. 60)。
2. 创建自定义的数据库选项组,并选择 MySQL 作为引擎类型和 5.6 版本。有关创建选项组的更多信息,
请参阅 创建选项组 (p. 211)。
3. 向选项组添加 MEMCACHED 选项。指定内存缓存接口将使用的端口以及用于控制对该接口的访问权限的
安全组。有关添加选项的更多信息,请参阅 将选项添加到选项组 (p. 212)。
4. 根据需要修改选项设置以配置内存缓存参数。有关如何修改选项设置的更多信息,请参阅 修改选项设
置 (p. 214)。
5. 将选项组应用于实例。在应用选项组时,Amazon RDS 会为该实例启用内存缓存支持:
• 通过在启动实例时指定自定义选项组,您可以为新实例启用内存缓存支持。有关启动 MySQL 实例的
更多信息,请参阅 创建运行 MySQL 数据库引擎的数据库实例 (p. 69)。
• 通过在修改实例时指定自定义选项组,您可以为现有实例启用内存缓存支持。有关修改 MySQL 实例
的更多信息,请参阅 修改运行 MySQL 数据库引擎的数据库实例 (p. 78)。
6. 指定可通过内存缓存接口访问 MySQL 表中的哪些列。内存缓存插件在名为 innodb_memcache 的专
用数据库中创建一个名为 containers 的目录表。您应当将行插入到 containers 表以便映射到
InnoDB 表,从而通过内存缓存进行访问。您应当在 InnoDB 表中指定一个用于存储内存缓存密钥值的
列,以及一个或多个用于存储与密钥关联的数据值的列。此外,您还可以指定一个内存缓存应用程序
用于引用该组列的名称。有关如何在 containers 表中插入行的详细信息,请转到 InnoDB 内存缓存
插件内部信息。有关如何映射 InnoDB 表并通过内存缓存访问的示例,请转到为 InnoDB 和内存缓存应
用程序指定表和列映射。
7. 如果访问内存缓存接口的应用程序与使用 SQL 接口的应用程序位于不同的计算机或 EC2 实例上,请
将这些计算机的连接信息添加到与 MySQL 实例关联的 VPC 或数据库安全组。有关管理安全组的更多
信息,请参阅 Amazon RDS 安全组 (p. 60)。
通过修改实例和指定 MySQL 5.6 默认选项组,可以关闭实例的内存缓存支持。有关修改 MySQL 实例的
更多信息,请参阅 修改运行 MySQL 数据库引擎的数据库实例 (p. 78)。
API Version 2013-05-15
101
Amazon Relational Database Service 用户指南
MySQL 5.6 内存缓存支持
MySQL 内存缓存安全注意事项
内存缓存协议不支持用户身份验证。有关 MySQL 内存缓存安全注意事项的更多信息,请转到内存缓存部
署和使用内存缓存作为 MySQL 缓存层。
采取以下操作可帮助提高内存缓存接口的安全:
• 在将 MEMCACHED 选项添加到选项组时,指定不同于默认值 11211 的端口。
• 确保将内存缓存接口与 VPC 或数据库安全组关联,该安全组限制对已知的可信客户端地址或 EC2 实例
的访问。有关管理安全组的更多信息,请参阅 Amazon RDS 安全组 (p. 60)。
MySQL 内存缓存连接信息
要访问内存缓存接口,应用程序必须指定 Amazon RDS 实例的 DNS 名称和内存缓存端口号。例如,如
果实例的 DNS 名称为 my-cache-instance.cg034hpkmmjt.region.rds.amazonaws.com,并且
内存缓存接口使用端口 11212,PHP 中指定的连接信息将为:
<?php
$cache = new Memcache;
$cache->connect('my-cache-instance.cg034hpkmmjt.region.rds.amazonaws.com',11212);
?>
查找 Amazon RDS MySQL 实例的 DNS 名称和内存缓存端口
1.
2.
3.
4.
5.
6.
7.
Sign in to the AWS Management Console and open the Amazon RDS console at
https://console.aws.amazon.com/rds/.
在 AWS Management Console 的右上角,选择包含数据库实例的区域。
在导航窗格中,单击实例。
选择运行 MySQL 数据库引擎的数据库实例名称左侧的箭头。在说明显示中,请记下终端节点字段的
值。DNS 名称是终端节点中分号 (:) 前的部分。忽略分号及分号后的端口号,该端口不能用于访问内
存缓存接口。
记下选项组字段中列出的名称。
在导航窗格中单击选项组。
选择 MySQL 数据库实例使用的选项组名称左侧的箭头。在说明显示中,记下 MEMCACHED 选项中
的端口设置的值。
MySQL 内存缓存选项设置
Amazon RDS 将 MySQL 内存缓存参数公开为 Amazon RDS MEMCACHED 选项中的选项设置。
MySQL 内存缓存参数
• DAEMON_MEMCACHED_R_BATCH_SIZE - 指定在执行 COMMIT 以开始新的事务处理之前要执行的内存
缓存读取操作 (get) 数量的整数。允许的值介于 1 到 4294967295 之间,默认值为 1。此选项在重启实
例后生效。
• DAEMON_MEMCACHED_W_BATCH_SIZE - 指定在执行 COMMIT 以开始新的事务处理之前要执行的内存
缓存写入操作(例如,add、set 或 incr)数量的整数。允许的值介于 1 到 4294967295 之间,默认值
为 1。此选项在重启实例后生效。
API Version 2013-05-15
102
Amazon Relational Database Service 用户指南
MySQL 5.6 内存缓存支持
• INNODB_API_BK_COMMIT_INTERVAL - 指定自动提交使用 InnoDB 内存缓存接口空闲连接的频率的整
数。允许的值介于 1 到 1073741824 之间,默认值为 5。此选项立即生效,而无需您重启实例。
• INNODB_API_DISABLE_ROWLOCK - 在使用 InnoDB 内存缓存接口时禁用 (1 (true) 或启用 (0 (false)) 行
锁使用的布尔值。默认值为 0 (false)。此选项在重启实例后生效。
• INNODB_API_ENABLE_MDL - 布尔值,设置为 0 (false) 会锁定 InnoDB 内存缓存插件使用的表,这样
DDL 便无法通过 SQL 接口删除或变更该表。默认值为 0 (false)。此选项在重启实例后生效。
• INNODB_API_TRX_LEVEL - 指定内存缓存接口处理的查询的事务处理隔离级别的整数。允许的值介于
0 到 3 之间。默认值为 0。此选项在重启实例后生效。
Amazon RDS 配置以下 MySQL 内存缓存参数,这些参数无法修改:DAEMON_MEMCACHED_LIB_NAME、
DAEMON_MEMCACHED_LIB_PATH 和 INNODB_API_ENABLE_BINLOG。MySQL 管理员使用
daemon_memcached_options 设置的参数在 Amazon RDS 中作为单独的 MEMCACHED 选项设置提供。
MySQL daemon_memcached_options 参数
• BINDING_PROTOCOL - 指定要使用的绑定协议的字符串。允许的值是 auto、ascii 或 binary。默认
值为 auto,这意味着服务器与客户端自动协商协议。此选项在重启实例后生效。
• BACKLOG_QUEUE_LIMIT - 指定可等待内存缓存处理的网络连接数的整数。增大此限值会减少无法连接
到内存缓存实例的客户端所收到的错误,但不会提高服务器性能。允许的值介于 1 到 2048 之间,默认
值为 1024。此选项在重启实例后生效。
• CAS_DISABLED - 启用 (1 (true)) 或禁用 (0 (false)) 比较和交换 (CAS) 的使用的布尔值,它使每个项目
大小减少了 8 个字节。默认值为 0 (false)。此选项在重启实例后生效。
• CHUNK_SIZE - 以字节为单位指定为最小项目的密钥、值和标志分配的最小组块大小的整数。允许的值
介于 1 到 48 之间。默认值为 48,使用较小值可显著提高内存效率。此选项在重启实例后生效。
• CHUNCK_SIZE_GROWTH_FACTOR - 控制新的组块大小的浮点数。新组块大小是以前的组块大小乘以
CHUNCK_SIZE_GROWTH_FACTOR。允许的值介于 1 到 2 之间,默认值为 1.25。此选项在重启实例后生
效。
• ERROR_ON_MEMORY_EXHAUSTED - 布尔值,当设置为 1 (true) 时,该参数指定在没有更多内存来存储
项目时内存缓存将返回错误,而不会返回移出项目。如果设置为 0 (false),当没有更多内存时,内存缓
存将移出项目。默认值为 0 (false)。此选项在重启实例后生效。
• MAX_SIMULTANEOUS_CONNECTIONS - 指定并发连接的最大数目的整数。将此值设置为小于 10 的任何
值会防止启动 MySQL。允许的值介于 10 到 1024 之间,默认值为 1024。此选项在重启实例后生效。
• VERBOSITY - 指定内存缓存服务记录到 MySQL 错误日志的信息级别的字符串。默认值为 v。此选项在
重启实例后生效。允许的值包括:
• v - 记录执行主要事件循环时的错误和警告。
• vv - 除 v 记录的信息外,还会记录每个客户端命令和响应。
• vvv - 除 vv 记录的信息外,还会记录内部状态转换。
Amazon RDS 配置以下 MySQL DAEMON_MEMCAHCED_OPTIONS 参数,这些参数无法修改:
DAEMON_PROCESS、LARGE_MEMORY_PAGES、MAXIMUM_CORE_FILE_LIMIT、MAX_ITEM_SIZE、
LOCK_DOWN_PAGE_MEMORY、MASK、IDFILE、REQUESTS_PER_EVENT、SOCKET 和 USER。
API Version 2013-05-15
103
Amazon Relational Database Service 用户指南
附录:MySQL Amazon RDS SQL 参考
附录:MySQL Amazon RDS SQL 参考
本附录介绍适用于运行 MySQL 数据库引擎的 Amazon RDS 实例的系统存储程序和表。
概述
运行 MySQL 的 Amazon RDS 数据库实例支持以下系统存储程序和表以便管理复制。
• mysql.rds_set_external_master (p. 104)
• mysql.rds_reset_external_master (p. 105)
• mysql.rds_start_replication (p. 106)
• mysql.rds_stop_replication (p. 106)
• mysql_rds_skip_repl_error (p. 107)
• mysql.rds_next_master_log (p. 107)
SQL 参考惯例
此部分介绍用于描述 SQL 参考部分中描述的系统存储程序和表的语法惯例。
字符
描述
大写
大写字样表示关键字。
[]
方括号表示可选参数。
{}
大括号表示您需要选择大括号内的参数之一。
|
管道表示您可以在不同参数之间选择。
斜体
斜体字样表示占位符。必须插入适当的值以替换斜体字样。
...
省略号表示可以重复前面的元素。
'
单引号中的字样表示必须键入引号。
mysql.rds_set_external_master
配置 Amazon RDS 的 MySQL 实例以便作为在 Amazon RDS 外运行的 MySQL 实例的只读副本。
语法
CALL mysql.rds_set_external_master (
host_name
, host_port
, replication_user_name
, replication_user_password
, mysql_binary_log_file_name
, mysql_binary_log_file_location
, ssl_encryption
);
API Version 2013-05-15
104
Amazon Relational Database Service 用户指南
mysql.rds_reset_external_master
参数
host_name
配置为复制主体的在 Amazon RDS 外运行的 MySQL 实例的主机名或 IP 地址。
host_port
配置为复制主体的在 Amazon RDS 外运行的 MySQL 实例所使用的端口。如果您的网络配置包括转
换端口号的 ssh 端口复制,则指定 ssh 公开的端口号。
replication_user_name
配置为只读副本的在 Amazon RDS 中运行的 MySQL 实例内具有从复制权限的用户 ID。
replication_user_password
在 replication_user_name 中指定的用户 ID 的密码。
mysql_binary_log_file_name
复制过程使用的复制主体中的二进制日志的名称。
mysql_binary_log_file_location
mysql_binary_log_file_name 二进制日志中将开始复制的位置。
ssl_encryption
指定是否在复制连接中使用 SSL 加密。“1”指定使用 SSL 加密,“0”指定不使用加密。建议使用 SSL
加密。默认值为“0”。
使用说明
mysql.rds_set_external_master 必须由主用户运行。它必须在 Amazon RDS 实例上运行,以便配置为在
Amazon RDS 外运行的 MySQL 实例的只读副本。在运行 mysql.rds_set_external_master 之前,您必须
将在 Amazon RDS 外运行的 MySQL 实例配置为复制主体。有关更多信息,请参阅 从 MySQL 数据库实
例导入和导出数据 (p. 80)。
Warning
请勿使用 mysql.rds_set_external_master 管理两个 RDS 数据库实例之间的复制。仅当在与 RDS
外运行的 MySQL 实例之间复制时,才使用此参数。有关管理 RDS 实例之间的复制的信息,请
参阅 使用只读副本 (p. 91)。
在调用 mysql.rds_set_external_master 以将数据库实例配置为只读副本后,您可以调用
mysql.rds_start_replication (p. 106) 启动复制过程。您可以调用 mysql.rds_reset_external_master (p. 105)
删除只读副本配置。
当调用 mysql.rds_set_external_master 时,Amazon RDS 会在 mysql.rds_history 和
mysql.rds_replication_status 表中记录“set master”的时间、用户和操作。
示例
当运行的 MySQL 实例在 Amazon RDS 下运行时,此示例将其配置为在 Amazon RDS 外运行的 MySQL
实例的只读副本。
call mysql.rds_set_external_master('Sourcedb.some.com',3306,'Replicatio
nUser','SomePassW0rd','mysql-bin-changelog.0777',120,1);
mysql.rds_reset_external_master
重新配置 Amazon RDS 的 MySQL 实例以便不再作为在 Amazon RDS 外运行的 MySQL 实例的只读副
本。
API Version 2013-05-15
105
Amazon Relational Database Service 用户指南
mysql.rds_start_replication
语法
CALL mysql.rds_reset_external_master;
使用说明
mysql.rds_reset_external_master 必须由主用户运行。它必须在 Amazon RDS 实例上运行,以便作为在
Amazon RDS 外运行的 MySQL 实例的只读副本删除。
Warning
请勿使用 mysql.rds_reset_external_master 管理两个 Amazon RDS 数据库实例之间的复制。仅
当在与 Amazon RDS 外运行的 MySQL 实例之间复制时,才使用此参数。有关管理 Amazon RDS
实例之间的复制的信息,请参阅 使用只读副本 (p. 91)。
有关如何使用复制从在 Amazon RDS 外运行的 MySQL 实例导入数据的更多信息,请参阅 从 MySQL 数
据库实例导入和导出数据 (p. 80)。
mysql.rds_start_replication
在 Amazon RDS 中运行的 MySQL 实例上启动复制。
语法
CALL mysql.rds_start_replication;
使用说明
mysql.rds_start_replication 必须由主用户运行。
如果您要配置复制以便从在 Amazon RDS 外运行的 MySQL 实例导入数据,您应当在调用
mysql.rds_set_external_master (p. 104) 构建复制配置后调用 mysql.rds_start_replication 开始复制过程。
有关更多信息,请参阅 从 MySQL 数据库实例导入和导出数据 (p. 80)。
如果您要配置复制以便将数据导出到在 Amazon RDS 外运行的 MySQL 实例,对于控制二进制日志的清
除等操作,您应当调用 mysql.rds_start_replication 和 mysql.rds_stop_replication。有关更多信息,请参
阅 使用复制导出 MySQL 5.6 数据 (p. 88)。
您还可以使用 mysql.rds_start_replication 重启先前您通过调用 mysql.rds_stop_replication (p. 106) 停止的
任何复制过程。有关更多信息,请参阅 使用只读副本 (p. 91)。
mysql.rds_stop_replication
在 Amazon RDS 中运行的 MySQL 实例上终止复制。
语法
CALL mysql.rds_stop_replication;
API Version 2013-05-15
106
Amazon Relational Database Service 用户指南
mysql_rds_skip_repl_error
使用说明
mysql.rds_stop_replication 必须由主用户运行。
如果您要配置复制以便从在 Amazon RDS 外运行的 MySQL 实例导入数据,您应当在导入完成后调用
mysql.rds_stop_replication 来停止复制过程。有关更多信息,请参阅 从 MySQL 数据库实例导入和导出
数据 (p. 80)。
如果您要配置复制以便将数据导出到在 Amazon RDS 外运行的 MySQL 实例,对于控制二进制日志的清
除等操作,您应当调用 mysql.rds_stop_replication 和 mysql.rds_start_replication。有关更多信息,请参
阅 使用复制导出 MySQL 5.6 数据 (p. 88)。
您还可以使用 mysql.rds_stop_replication 停止两个 Amazon RDS 数据库实例之间的复制。执行此操作的
目的通常是对副本执行长时间运行的操作,例如,在副本中创建大型索引。您可以重启您通过调用
mysql.rds_stop_replication (p. 106) 停止的任何复制过程。有关更多信息,请参阅 使用只读副本 (p. 91)。
mysql_rds_skip_repl_error
在 Amazon RDS 的 MySQL 实例上跳过和删除复制错误。
语法
CALL mysql.rds_skip_repl_error;
使用说明
mysql.rds_skip_repl_error 必须由主用户运行。
运行 MySQL show slave status\G 命令以确定是否出现错误。如果复制错误不是关键错误,您可以
选择使用 mysql.rds_skip_repl_error 跳过错误。如果有多个错误,mysql.rds_skip_repl_error 会删除第一
个错误,并警告存在其他错误。然后,您可以使用 show slave status\G 确定要对下一个错误采取的
适当操作。
有关解决 Amazon RDS 的复制错误的更多信息,请参阅 解决只读副本问题 (p. 95)。
mysql.rds_next_master_log
在主节点上将复制主体日志位置更改为下一个二进制日志开头。如果您在 Amazon RDS 只读副本中收到
复制 I/O 错误 1236,请使用此过程。
语法
CALL mysql.rds_next_master_log(
curr_master_log
);
参数
curr_master_log
当前主日志文件的索引。例如,如果当前文件名为 mysql-bin-changelog.012345,索引则为
12345。要确定当前主日志文件名,请运行 SHOW SLAVE STATUS 命令并查看 Master_Log_File 字
段。
API Version 2013-05-15
107
Amazon Relational Database Service 用户指南
mysql.rds_next_master_log
使用说明
mysql.rds_next_master_log 必须由主用户运行。
仅当在故障转移作为复制源的多可用区域数据库实例后复制失败,并且 SHOW SLAVE STATUS 的
Last_IO_Errno 字段报告错误 1236 时,才能调用 mysql.rds_next_master_log。
如果在发生故障转移事件之前,源实例中的事务处理未写入到磁盘上的二进制日志,调用
mysql.rds_next_master_log 会导致只读副本丢失数据。通过配置源实例参数 sync_binlog = 1 和
innodb_support_xa = 1 可以降低发生此状况的概率,但这可能会降低性能。有关更多信息,请参阅 使用
只读副本 (p. 91)。
示例
假定 Amazon RDS 只读副本中的复制失败。对副本运行 SHOW SLAVE STATUS\G 会返回以下结果:
*************************** 1. row *************************** Slave_IO_State:
Master_Host: myhost.XXXXXXXXXXXXXXX.rr-rrrr-1.rds.amazonaws.com Master_User:
MasterUser Master_Port: 3306 Connect_Retry: 10 Master_Log_File: mysql-binchangelog.012345 Read_Master_Log_Pos: 1219393 Relay_Log_File: relaylog.012340
Relay_Log_Pos: 30223388 Relay_Master_Log_File: mysql-bin-changelog.012345
Slave_IO_Running: No Slave_SQL_Running: Yes Replicate_Do_DB: Replicate_Ignore_DB:
Replicate_Do_Table: Replicate_Ignore_Table: Replicate_Wild_Do_Table: Replic
ate_Wild_Ignore_Table: Last_Errno: 0 Last_Error: Skip_Counter: 0 Exec_Mas
ter_Log_Pos: 30223232 Relay_Log_Space: 5248928866 Until_Condition: None Un
til_Log_File: Until_Log_Pos: 0 Master_SSL_Allowed: No Master_SSL_CA_File: Mas
ter_SSL_CA_Path: Master_SSL_Cert: Master_SSL_Cipher: Master_SSL_Key:
Seconds_Behind_Master: NULL Master_SSL_Verify_Server_Cert: No Last_IO_Errno:
1236 Last_IO_Error: Got fatal error 1236 from master when reading data from
binary log: 'Client requested master to start replication from impossible posi
tion; the first event 'mysql-bin-changelog.013406' at 1219393, the last event
read from '/rdsdbdata/log/binlog/mysql-bin-changelog.012345' at 4, the last
byte read from '/rdsdbdata/log/binlog/mysql-bin-changelog.012345' at 4.'
Last_SQL_Errno: 0 Last_SQL_Error: Replicate_Ignore_Server_Ids: Master_Server_Id:
67285976
Last_IO_Errno 字段显示该实例收到 I/O 错误 1236。Master_Log_File 字段显示文件名为
mysql-bin-changelog.012345,这意味着日志文件索引为 12345。要解决此错误,您可以使用以下
参数调用 mysql.rds_next_master_log:
CALL mysql.rds_next_master_log(12345);
API Version 2013-05-15
108
Amazon Relational Database Service 用户指南
有关 Amazon RDS 上的 Oracle 的须知事项
在 Amazon RDS 上使用 Oracle
Topics
• 有关 Amazon RDS 上的 Oracle 的须知事项 (p. 109)
• 使用 Oracle 数据库实例 (p. 113)
• 附录:Oracle 数据库引擎选项 (p. 129)
• 附录:Oracle 的数据库管理员常用任务 (p. 137)
• 附录:Amazon RDS 内支持的 Oracle 字符集 (p. 143)
• 附录:Oracle 数据库引擎修补程序构成信息 (p. 145)
有关 Amazon RDS 上的 Oracle 的须知事项
Topics
• 引擎功能 (p. 109)
• 安全性 (p. 110)
• Oracle 版本管理 (p. 111)
• 授权 (p. 111)
为了让用户获得托管式服务体验,Amazon RDS 未提供对数据库实例的 Shell 访问权限,并且限制对需要
高级特权的某些系统程序和表的访问权限。Amazon RDS 支持使用任何标准 SQL 客户端应用程序(例
如,Oracle SQL Developer)访问数据库实例上的数据库。Amazon RDS 不允许主机通过 Telnet 或安全
外壳 (SSH) 直接访问数据库实例。当您创建数据库实例时,您应创建获取数据库管理员特权(具有某些
限制)的主账户,不会提供 SYS 密码或 SYSDBA 特权。
有关将 Oracle 数据导入到数据库实例的信息,请参阅 在 Amazon RDS 上将数据导入到 Oracle (p. 124)。
引擎功能
下面列表显示了 Amazon RDS 目前支持的一部分关键 Oracle 数据库引擎功能。Oracle 功能的可用性取
决于您选择的 Oracle 版本。例如,只有 Oracle Enterprise Edition 才提供 OEM 可选包,例如,Database
Diagnostic Pack 和 Database Tuning Pack。
以下列表显示 Amazon RDS 支持的 Oracle 功能;有关每个 Oracle 版本支持的功能的完整列表,请转到
Oracle Database 11g 版本。
API Version 2013-05-15
109
Amazon Relational Database Service 用户指南
安全性
• 全面调用
• 闪回表、查询和交易查询
• 虚拟专用数据库
• 细粒度审计
• 全面支持 Microsoft .NET、OLE DB 和 ODBC
• 自动内存管理
• 自动撤消管理
• 高级压缩
• 分区
• 星形查询优化
• 摘要管理 – 具体化视图查询重写
• 高级列队
• 分布式查询/事务
•
•
•
•
•
•
•
•
•
•
文本
具体化视图
Import/Export 和 sqlldr 支持
Oracle Enterprise Manager Database Control
Oracle XML DB(无 XML DB Protocol Server)
Oracle Application Express
适用于企业版的 Automatic Workload Repository (AWR)
Datapump(仅限网络)
本地网络加密(Oracle 高级安全功能的一部分)
透明数据加密(Oracle TDE,Oracle 高级安全功能的一部分)
当前不支持的 Oracle 数据库引擎功能包括:
•
•
•
•
•
•
•
•
Real Application Clusters (RAC)
Real Application Testing
Data Guard/Active Data Guard
Oracle Enterprise Manager Grid Control
自动存储管理
数据库文件库
Streams 技术
Java 支持
• Locator
• Spatial
• Oracle XML DB Protocol Server
• 此版本不支持网络访问实用工具,例如,utl_http、utl_tcp、utl_smtp 和 utl_mail。
安全性
Oracle 数据库引擎采用了基于角色的安全机制。角色是可授予用户或从用户撤消的特权集合。名为数据
库管理员的预定义角色通常拥有对 Oracle 数据库引擎的所有管理特权。对于使用 Oracle 引擎的 Amazon
RDS 数据库实例,数据库管理员角色没有以下特权:
• 更改数据库
• 更改系统
API Version 2013-05-15
110
Amazon Relational Database Service 用户指南
Oracle 版本管理
• 创建任何目录
• 删掉任何目录
• 授予任何特权
• 授予任何角色
Oracle 版本管理
数据库引擎版本管理是 Amazon RDS 的一项功能,在为运行数据库实例的数据库引擎软件安装修补程序
或进行升级方面,您可以用它控制时间和方式。此功能可让您灵活地保持与数据库引擎修补程序版本兼
容、在生产部署前测试新修补程序版本以确保其适用于您的应用程序,以及根据自己的期限和时间表执行
版本升级。
Note
Amazon RDS 会定期汇总适用于 Amazon RDS 特定数据库引擎版本的官方 Oracle 数据库修补程
序。要查看某个 Amazon RDS Oracle 特定引擎版本中包含的 Oracle 修补程序列表,请转到 附
录:Oracle 数据库引擎修补程序构成信息 (p. 145)。
借助 ModifyDBInstance API 调用或 rds-modify-db-instance 命令行实用工具可以轻松地利用 Amazon RDS
的数据库引擎版本管理功能。默认情况下,您的数据库实例会升级到次要修补程序(您可以覆盖此设置)。
您还可以明确地指定将升级应用于您的数据库。有关更多信息,请参阅 升级数据库实例 (p. 196)。
授权
适用于 Oracle 的 Amazon RDS 提供两种授权使用选项。
自有许可 (BYOL)
在这种授权模式下,可以使用您现有的 Oracle Database 许可在 Amazon RDS 上运行 Oracle 部署。要
在 BYOL 模式下运行数据库实例,您必须拥有与想要运行的数据库实例类和 Oracle Database 版本对应
的 Oracle Database 许可(及软件更新授权和支持)。您也必须遵循 Oracle 对云计算环境中 Oracle
Database 软件的授权政策。有关 Oracle 对 Amazon EC2 的授权政策的更多信息,请转到在云计算环境
中授权 Oracle 软件。
附带许可
在附带许可服务模式中,您不需要单独购买 Oracle 许可;AWS 持有 Oracle Database 软件的许可。
Oracle 授权和 Amazon RDS
Amazon RDS 当前在下列每种授权模式中支持的 Oracle 数据库版本详情如下:
• BYOL:Standard Edition One (SE1)、Standard Edition (SE) 和 Enterprise Edition (EE)
要在 BYOL 模式下运行数据库实例,您必须拥有与想要运行的数据库实例类和 Oracle Database 版本
对应的 Oracle Database 许可(及软件更新授权和支持)。您必须遵循 Oracle 在云计算环境中授权
Oracle Database 软件的政策。数据库实例驻留在 Amazon EC2 环境中,Oracle 对于 Amazon EC2 的
授权政策位于此处。
在此模式下,可以继续使用有效的 Oracle 支持账户,并能直接联系 Oracle 解决特定的 Oracle Database
服务请求。如果具有有效的 AWS Premium Support 账户,可以联系 AWS Premium Support 解决
Amazon RDS 的特定问题。Amazon Web Services 和 Oracle 对于需要获取两家组织协助的情况,设
有多供应商支持流程。
• 附带许可:Standard Edition One (SE1)
API Version 2013-05-15
111
Amazon Relational Database Service 用户指南
授权
在“附带许可”服务模型中,您无需单独购买 Oracle 许可;Oracle 数据库软件由 AWS 提供授权许可。
在此模式下,如果您拥有有效的 AWS Premium Support 账户,就可以联系 AWS Premium Support 解
决特定的 Amazon RDS 和 Oracle Database 服务请求。
API Version 2013-05-15
112
Amazon Relational Database Service 用户指南
使用 Oracle 数据库实例
使用 Oracle 数据库实例
Topics
• 创建运行 Oracle 数据库引擎的数据库实例 (p. 113)
• 与运行 Oracle 数据库引擎的数据库实例连接 (p. 120)
• 修改运行 Oracle 数据库引擎的数据库实例 (p. 122)
• 在 Amazon RDS 上将数据导入到 Oracle (p. 124)
您需要对数据库实例执行的大多数任务在所有数据库引擎上的执行方式都是相同的。创建数据库实例、连
接到数据库实例和将数据导入到数据库实例均为特定于每个数据库引擎的任务。此外,此部分中的附录包
含有关使用 Oracle 数据库实例的重要信息。
创建运行 Oracle 数据库引擎的数据库实例
Amazon RDS 的基本构建块是数据库实例。这是您将用于运行 Oracle 数据库的环境。
AWS Management Console
启动 Oracle 数据库实例
1.
2.
3.
4.
Sign in to the AWS Management Console and open the Amazon RDS console at
https://console.aws.amazon.com/rds/.
在 AWS Management Console 的右上角,选择您要在其中创建数据库实例的区域。
在导航窗格中,单击数据库实例。
单击启动数据库实例以启动数据库实例启动向导。
该向导随即在引擎选择页面上打开。
API Version 2013-05-15
113
Amazon Relational Database Service 用户指南
创建运行 Oracle 数据库引擎的数据库实例
5.
6.
在数据库实例启动向导窗口中,针对 Oracle 数据库引擎单击选择按钮。
在数据库实例详细信息页面上,指定数据库实例信息。下表显示示例数据库实例的设置。完成后,请
单击继续。
对于此参数...
...请执行此操作:
许可模式
选择您要使用的许可选项。一些地区支持 Oracle 的其他许
可选项。
数据库引擎版本
选择您要使用的 Oracle 版本。目前 11.2.0.2 .v5 是
Oracle 的默认版本。
数据库实例类
选择您要使用的数据库实例类。有关所有数据库实例类选
项的更多信息,请参阅 数据库实例类 (p. 34)。
多可用区域部署
确定是否要在故障转移支持的其他可用区域为您的数据库
实例创建备用副本。此功能适用于 Oracle 和 MySQL 数据
库实例。有关多个可用区域的更多信息,请参阅 地区和可
用区域 (p. 37)。
自动次要版本升级
选择 ,以便在次要数据库引擎版本可用时,让数据库实例
能够自动接收这些次要升级。
API Version 2013-05-15
114
Amazon Relational Database Service 用户指南
创建运行 Oracle 数据库引擎的数据库实例
7.
对于此参数...
...请执行此操作:
分配的存储空间
键入为数据库分配的存储值(以 GB 为单位)。有时,为
数据库实例分配的存储空间高于数据库大小时可提高 I/O
性能。有关存储空间分配的更多信息,请参阅 Amazon
Relational Database Service 功能。
使用预配置 IOPS
该选项开启预配置的 IOPS(每秒输入/输出操作)这一 RDS
中针对 I/O 密集型事务处理 (OLTP) 数据库工作负载进行了
优化的高性能存储选项。有关高性能存储的更多信息,请
参阅 使用预置 IOPS 存储 (p. 257)。
数据库实例标识符
为该数据库实例键入一个名称,该名称在您所选区域中对
于您的账户是唯一的。您可以选择对该名称进行一些巧妙
处理,例如将您所选的地区和数据库引擎包括在名称中,
如 oracle-instance1。
主用户名
键入一个名称,该名称将用作您拥有全部数据库权限、用
来登录到数据库实例的主用户名。此用户账户用于登录数
据库实例并被授予“数据库管理员”角色。
主用户密码
输入一个包含 8 到 30 位可打印 ASCII 字符(的密码用不
包括 /、"、和 @)用作您的主用户密码。
在其他配置页面上,提供 RDS 启动 Oracle 数据库实例所需的其他信息。下表显示示例数据库实例
的设置。指定数据库实例信息,然后单击 继续.
API Version 2013-05-15
115
Amazon Relational Database Service 用户指南
创建运行 Oracle 数据库引擎的数据库实例
对于此参数...
...请执行此操作:
数据库名称
输入一个名称,该名称以字母起始且包含达 8 位字母和数
字字符。如果您未提供名称,Amazon RDS 将不会在您创
建的数据库实例上创建数据库。
数据库端口
指定您想通过其访问数据库的端口。Oracle 默认为端口
1521。
选择 VPC
确定是否要在 Virtual Private Cloud 上创建数据库实例。有
关 VPC 的更多信息,请参阅 Amazon RDS 和 Amazon
Virtual Private Cloud 服务 (p. 40)。
可用区域
确定是否要指定特定的可用区域。如果您已在上一页面为
多可用区域部署参数选择了是,您在这里就不会有任何选
项。有关可用区域的更多信息,请参阅 地区和可用区
域 (p. 37)。
字符集名称
为您的数据库实例选择一种字符集。AL32UTF8 的默认值
为 Unicode 5.0 UTF-8 通用字符集。请注意,您不能在数
据库实例创建后更改字符集。
选项组
选择选项组。您可以选择默认选项组,也可以创建一个选
项组并选择该选项组。有关选项组的更多信息,请参阅 使
用选项组 (p. 210)。
数据库参数组
选择参数组。您可以选择默认参数组,也可以创建一个参
数组并选择该参数组。有关参数组的更多信息,请参阅 使
用数据库参数组 (p. 218)。
数据库安全组
选择要与此数据库实例配合使用的安全组。有关安全组的
更多信息,请参阅 使用数据库安全组 (p. 229)。
API Version 2013-05-15
116
Amazon Relational Database Service 用户指南
创建运行 Oracle 数据库引擎的数据库实例
8.
在管理选项页面上,您可以为数据库实例指定备份和维护选项。在此示例中,接受默认值,然后单击
继续。请注意将备份保留期设置为零,以禁用自动备份。有关维护时段的更多信息,请参阅 调整首
选维护时段 (p. 266)。有关备份和备份保留期的更多信息,请参阅 数据库实例备份 (p. 42)。
根据需要设定好所有设置后,单击继续。
API Version 2013-05-15
117
Amazon Relational Database Service 用户指南
创建运行 Oracle 数据库引擎的数据库实例
9.
在审核页面上,核查您的数据库实例选项。如果您需要做出任何更改,单击返回返回相应页面,然后
做出必要的更正。根据需要全部设置完毕后,单击启动数据库实例。
10. 在此向导的最后一个页面上,单击关闭。
11. 在 RDS 控制台中,新数据库实例显示在数据库实例列表中。数据库实例将为 creating 状态,直到该
数据库实例完成创建并可供使用。当状态更改为可用时,您即可连接到数据库实例。根据所分配的数
据库实例类和存储的不同,新实例可能需要数分钟时间才能变得可用。
CLI
创建 Oracle 数据库实例
•
使用命令 rds-create-db-instance 创建数据库实例。下述命令会启动示例数据库实例。
PROMPT>rds-create-db-instance mydbinstance -s 20 -c db.m1.small -e oraclese1 - u <masterawsuser> -p <secretpassword> --backup-retention-period 3
此命令应该生成类似于下述信息的输出:
DBINSTANCE mydbinstance db.m1.small oracle-se1 20 sa creating 3 **** n
11.2.0.2.v3 SECGROUP default active PARAMGRP default.oracle-se1-11.2 in-sync
API
创建 Oracle 数据库实例
•
调用 CreateDBInstance 操作。例如,您可以使用以下参数:
• DBInstanceIdentifier =mydbinstance
• Engine =oracle-se1
• DBInstanceClass =db.m1.small
• AllocatedStorage =20
• BackupRetentionPeriod =3
API Version 2013-05-15
118
Amazon Relational Database Service 用户指南
创建运行 Oracle 数据库引擎的数据库实例
• MasterUsername =<masterawsuser>
• MasterUserPassword =<secretpassword>
Example
https://rds.amazonaws.com/
?Action=CreateDBInstance
&DBInstanceIdentifier=mydbinstance
&DBInstanceClass=db.m1.small
&Engine=oracle-se1
&MasterUserPassword=<secretpassword>
&BackupRetentionPeriod=3
&AllocatedStorage=20
&MasterUsername=<masterawsuser>
&Version=2012-01-15
&SignatureVersion=2
&SignatureMethod=HmacSHA256
&Timestamp=2011-08-13T19%3A36%3A35.512Z
&AWSAccessKeyId=<AWS Access Key ID>
&Signature=<Signature>
相关主题
•
•
•
•
数据库实例 (p. 32)
Amazon RDS 安全组 (p. 60)
数据库实例类 (p. 34)
删除数据库实例 (p. 184)
API Version 2013-05-15
119
Amazon Relational Database Service 用户指南
与运行 Oracle 数据库引擎的数据库实例连接
与运行 Oracle 数据库引擎的数据库实例连接
在 Amazon RDS 预配置了您的数据库实例后,就可以使用任何标准 SQL 客户端应用程序连接该实例。
在此示例中,使用 Oracle 命令行工具与运行 Oracle 数据库引擎的数据库实例连接。有关使用 Oracle 的
更多信息,请转到 Oracle 网站。
Note
此示例使用了 Oracle sqlplus 命令行实用工具。此实用工具是 Oracle 软件发布版的一部分。要下
载此实用工具的独立版本,请转到 SQL*Plus 用户指南和参考。
CLI
使用 sqlplus 连接数据库实例
1.
使用 rds-describe-db-instances 命令查找您的数据库实例的 DNS 名称
PROMPT>rds-describe-db-instances --headers
您将看到类似如下的输出内容:
DBINSTANCE DBInstanceId
Created
Class
Engine
Storag
e Master Username Status
Endpoint Address
Port AZ
Backup Retention Multi-AZ Version Read Replica
Sourc
e ID License
DBINSTANCE oracledb
2011-05-14T01:11:01.727Z db.m1.small oracle-ee
20
mydbusr
available oracledb.mydnsnameexample.rds.amazonaws
.com
1521 us-east-1a 1
n
11.2.0.2.v3
bring-your-own-license
Note
您还可以使用此 AWS Management Console 来查找此信息。
2.
在命令提示符处用一行键入以下命令,以使用 sqlplus 实用工具连接数据库实例;根据需要,替换数
据库实例的 DNS 名称、端口和 Oracle SID。SID 值是您创建数据库实例时指定的实例的数据库名
称,而不是数据库实例的名称。
PROMPT>sqlplus 'mydbusr@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=or
acledb.mydnsnameexample.rds.amazonaws.com)
(PORT=1521))(CONNECT_DATA=(SID=mydbname)))'
您会看到类似以下内容的输出。
API Version 2013-05-15
120
Amazon Relational Database Service 用户指南
与运行 Oracle 数据库引擎的数据库实例连接
SQL*Plus: Release 11.1.0.7.0 - Production on Wed May 25 15:13:59 2011
SQL>
相关主题
• 数据库实例 (p. 32)
• 创建运行 MySQL 数据库引擎的数据库实例 (p. 69)
• Amazon RDS 安全组 (p. 60)
• 删除数据库实例 (p. 184)
API Version 2013-05-15
121
Amazon Relational Database Service 用户指南
修改运行 Oracle 数据库引擎的数据库实例
修改运行 Oracle 数据库引擎的数据库实例
AWS Management Console
要修改 Oracle 数据库实例,请执行以下操作:
1.
2.
3.
Sign in to the AWS Management Console and open the Amazon RDS console at
https://console.aws.amazon.com/rds/.
在导航窗格中,单击数据库实例。
选中要更改的数据库实例的复选框,然后单击修改。
4.
在修改数据库实例对话框中,更改所需的任何以下设置:
5.
6.
设置
描述
数据库实例类
在提供的列表中,单击要使用的数据库实例类。有关实例
类的信息,请参阅the section called “数据库实例
类” (p. 34)。
数据库引擎版本
在提供的列表中,单击您要使用的 Oracle 数据库引擎版
本。
多可用区域部署
如果要在多个可用区域中部署数据库实例,则单击是;否
则,单击否。
自动次要版本升级
如果希望数据库实例在发布次要引擎版本升级时自动收到
这些升级,则单击是。只有在计划的维护时段期间,才会
安装升级。
分配的存储空间
指定最初将为数据库实例分配多少存储容量(以 GB 计)。
允许的最小值为 10 GB;最大值为 3072 GB。
备份保留期
指定自动备份的保留天数。要禁用自动备份,请将此值设
置为 0。
备份窗口
设置数据库的自动备份时间范围。指定开始时间(采用通
用协调时间 (UTC))和持续时间(以小时为单位)。
维护时段
设定进行系统维护(包括升级)的时间范围。指定开始时
间(采用 UTC)和持续时间(以小时为单位)。
数据库安全组
如果有自定义数据库安全组,要将其与此数据库实例关联,
则在提供的列表中,单击所需的数据库安全组。
选项组
在提供的列表中,单击要与该数据库实例关联的选项组。
有关选项组的信息,请参阅“选项组”。
主用户密码
键入您的主用户密码。密码必须包含 8 到 30 个字母数字字
符。
要立即应用更改,请选中立即应用复选框。如果清除该复选框(默认状态),将会在下一个计划的维
护时段应用更改。
当所有更改如您所愿时,单击是,请修改。如果要改为取消上一步中尚未应用的任何更改,单击取
消。
API Version 2013-05-15
122
Amazon Relational Database Service 用户指南
修改运行 Oracle 数据库引擎的数据库实例
CLI
要修改 Oracle 数据库实例,请执行以下操作:
•
使用命令 rds-modify-db-instance。
API
要修改 Oracle 数据库实例,请执行以下操作:
•
使用 ModifyDBInstance action。
API Version 2013-05-15
123
Amazon Relational Database Service 用户指南
在 Amazon RDS 上将数据导入到 Oracle
在 Amazon RDS 上将数据导入到 Oracle
基于数据大小和数据库数据元的数量和种类,Oracle 数据库平台迁移的复杂性会有所不同。根据数据库
的复杂性和数据的大小,您可能会使用这些技术中的一项或多项。
在使用这些迁移技术前,我们建议您最好先对数据库进行备份。您可以通过创建快照备份 Amazon RDS
实例。稍后,您可以使用 AWS 管理控制台 RDS 选项卡上的“从数据库快照还原”或“还原到时间点”选项从
快照中还原数据库。您还可以使用 Amazon RDS 命令行方法
rds-restore-db-instance-from-db-snapshot 或
rds-restore-db-instance-to-point-in-time。本部分中介绍了这些和其他最佳做法。
Oracle SQL Developer
Oracle SQL Developer 是 Oracle 发布的一种免费的图形化 Java 工具。您可以将此工具安装到台式计算
机(Windows、Linux 或 Mac)或服务器上。Oracle SQL Developer 为用户提供了选项,可在两个 Oracle
数据库之间迁移数据,或将数据从其他数据库(如 MySQL)迁移到 Oracle。Oracle SQL Developer 最
适合用于迁移小型数据库,但也可以用于迁移大量数据元。我们建议您在开始迁移数据前先阅读 Oracle
SQL Developer 产品文档。
安装 SQL Developer 后,您可以使用该工具连接至源数据库和目标数据库。使用“工具”菜单上的“数据库
复制”命令将数据复制到 Amazon RDS 实例。
要下载 Oracle SQL Developer,请转到 http://www.oracle.com/technetwork/developer-tools/sql-developer。
Oracle 还提供关于如何从其他数据库(包括 MySQL 和 SQL Server)中迁移数据的文档。要了解更多信
息,请转到 http://www.oracle.com/technetwork/database/migration。
Oracle Export/Import 实用工具
Oracle Export/Import 实用工具最适合用于以下迁移情况:数据量较小且不需要二进制 float 和 double 等
数据类型。导入过程会创建架构数据元,因此您无需事先运行脚本来创建数据元,这使得该过程非常适合
用于包含小型表的数据库。以下示例演示了如何使用这些实用工具导出和导入特定表。
使用以下命令将表从源数据库中导出。根据需要,替换用户名/密码。
exp cust_dba@ORCL FILE=exp_file.dmp TABLES=(tab1,tab2,tab3) LOG=exp_file.log
导出过程会创建一个二进制转储文件,其中包含指定表的架构和数据。现在,可以使用以下命令将此架构
和数据导入目标数据库:
imp cust_dba@targetdb FROMUSER=cust_schema TOUSER=cust_schema \
TABLES=(tab1,tab2,tab3) FILE=exp_file.dmp LOG=imp_file.log
导出和导入命令还有其他的变体,可能更适合您的需求。有关全部详细信息,请参阅 Oracle 文档。
Oracle Data Pump
长期来看,Oracle Data Pump 最终会取代 Export/Import 实用工具。与 Export/Import 相比,Oracle Data
Pump 包含许多增强功能且在数据库之间迁移大型数据集的速度也更快。此外,您在使用 Oracle Data
Pump 时无需创建导出文件 – 您可以执行网络导入,以从源数据库中直接读取数据并将数据写入目标数据
库。
API Version 2013-05-15
124
Amazon Relational Database Service 用户指南
在 Amazon RDS 上将数据导入到 Oracle
使用 Oracle Data Pump 将数据从 Amazon EC2 实例移至 Amazon RDS 实例
在将数据从 EC2 实例移至 Amazon RDS 之前,您需要了解一些事项。如果 EC2 实例或 Amazon RDS
数据库实例在 VPC 中,移动数据的过程与二者不在 VPC 中时的过程不相同。
以下示例演示如何使用 Oracle Data Pump 将整个架构从在 Amazon EC2 上运行的 Oracle 数据库复制到
Amazon RDS 实例。
1. 以 oracle 用户身份登录 EC2 实例。您需要确保数据库和 Oracle Net 侦听器进程正在运行。使用 lsnrctl
start 命令启动侦听器,从而使侦听器可以接受数据库的传入连接。
2. 您需要在 tnsnames.ora 文件中设置两个条目 – 一个用于本地数据库,另一个用于 RDS 实例。下面是
tnsnames.ora 摘录:
EC2DB = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = ip-12-46-107195.ec2.internal)(PORT = 1521)) (CONNECT_DATA = (SERVICE_NAME = ec2db) ) )
RDSDB = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = mydb.cg921fiuepnr.useast-1.rds.amazonaws.com)(PORT = 1521)) (CONNECT_DATA = (SERVICE_NAME = rdsdb)
) )
请注意,EC2DB 是一种“环回”连接,主机名是 EC2 实例的私有 DNS 名称。您可以从 Amazon EC2 管
理控制台获取 DNS 名称。RDSDB 指向您的 Amazon RDS 实例。主机名是 RDS 实例的终端节点。您
可以从 Amazon RDS 管理控制台获取终端节点。
3. 连接您的本地 Oracle 数据库,然后创建指向 RDS 实例的数据库链接:
sqlplus system/manager … create database link rdsdb connect to master identi
fied by xxxx using 'rdsdb';
4. 下一步,连接您的 RDS 实例,然后创建指向 EC2 上数据库的数据库链接:
sqlplus master/xxxx@rdsdb … create database link ec2db connect to system
identified by yyyy using '(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST =
ip-12-46-107-195.ec2.internal)(PORT = 1521))(CONNECT_DATA = (SERVICE_NAME =
ec2db)))';;
RDS 实例无法访问 EC2 实例上的 tnsnames.ora 文件,因此必须使用完全限定的连接字符串。
5. 现在,假设您在本地数据库中拥有一位名为 CUST_SCHEMA 的用户,且该用户拥有多个数据库表、
索引和其他数据库数据元。您要将此用户及其拥有的所有资源导入您的 RDS 实例。您可以使用此命令
通过网络从 EC2 数据库导入 RDS 实例:
impdp master/xxxx@rdsdb directory=data_pump_dir network_link=ec2db schem
as=cust_schema
impdp 命令需要一个目录数据元,为此,默认情况下所有 Amazon RDS 实例都预先配置了名为
DATA_PUMP_DIR 的目录。导入时将使用您先前创建的 ec2db 数据库链接。最后,将 CUST_SCHEMA
的所有内容都复制到 RDS 实例中。
API Version 2013-05-15
125
Amazon Relational Database Service 用户指南
在 Amazon RDS 上将数据导入到 Oracle
Oracle SQL*Loader
Oracle SQL*Loader 非常适用于数据元数量有限的大型数据库。对于架构而言,从源数据库导出及加载到
目标数据库所涉及的过程非常有针对性,因此采用以下示例来说明创建示例架构数据元、从源数据库导
出、然后加载到目标数据库等过程。
1. 使用以下命令创建示例源表。
create table customer_0 tablespace users as select rownum id, o.* from
all_objects o, all_objects x where rownum <= 1000000;
2. 在目标 Amazon RDS 实例上,创建用于加载数据的目标表。
create table customer_1 tablespace users as select 0 as id, owner, object_name,
created from all_objects where 1=2;
3. 数据将从源数据库导出到带有分隔符的平面文件。为执行此操作,本示例使用了 SQL*Plus。对于数
据,您可能需要生成用于执行数据库中所有数据元导出操作的脚本。
alter session set nls_date_format = 'YYYY/MM/DD HH24:MI:SS'; set linesize 800
HEADING OFF FEEDBACK OFF array 5000 pagesize 0 spool customer_0.out SET
MARKUP HTML PREFORMAT ON SET COLSEP ',' SELECT id, owner, object_name, created
FROM customer_0; spool off
4. 您需要创建一个控制文件来描述数据。此外,根据数据,您可能需要构建执行此步骤的脚本。
cat << EOF > sqlldr_1.ctl
load data
infile customer_0.out
into table customer_1
APPEND
fields terminated by "," optionally enclosed by '"'
(
id
POSITION(01:10)
INTEGER EXTERNAL,
owner
POSITION(12:41)
CHAR,
object_name
POSITION(43:72)
CHAR,
created
POSITION(74:92)
date "YYYY/MM/DD HH24:MI:SS"
)
如果需要,将由上述代码生成的文件复制到某一暂存区域,如 Amazon EC2 实例。
5. 最后,通过相应的用户名和密码,使用 SQL*Loader 将数据导入目标数据库。
API Version 2013-05-15
126
Amazon Relational Database Service 用户指南
在 Amazon RDS 上将数据导入到 Oracle
sqlldr cust_dba@targetdb control=sqlldr_1.ctl BINDSIZE=10485760 READ
SIZE=10485760 ROWS=1000
Oracle 具体化视图
您还可以使用 Oracle 具体化视图复制功能高效地迁移大型数据集。复制功能可以使目标表与源表持续保
持同步,因此如果需要,可在稍后完成向 Amazon RDS 的实际转换。设置复制功能时,需使用 Amazon
RDS 实例到源数据库的数据库链接。
具体化视图的一项要求是,允许从目标数据库访问源数据库。在以下示例中,源数据库启用了访问规则,
因此 Amazon RDS 目标数据库可通过 SQLNet 与源数据库连接。
1. 在源实例和 Amazon RDS 目标实例上创建用户账户,并使用同一密码进行身份验证。
create user dblink_user identified by password default tablespace users tem
porary tablespace temp; grant create session to dblink_user; grant select any
table to dblink_user; grant select any dictionary to dblink_user;
2. 使用新创建的 dblink_user 创建 Amazon RDS 目标实例到源实例的数据库链接。
create database link remote_site connect to dblink_user identified by password
using '(description=(address=(protocol=tcp) (host= sourcedb.rds.amazonaws.com)
(port=1521)) (connect_data=(sid=sourcedb)))' /
3. 测试链接:
select * from v$instance@remote_site;
4. 使用主键和源实例上的具体化视图日志创建示例表。
create table customer_0 tablespace users as select rownum id, o.* from
all_objects o, all_objects x where rownum <= 1000000; alter table customer_0
add constraint pk_customer_0 primary key (id) using index; create
materialized view log on customer_0;
5. 在目标 Amazon RDS 实例上,创建具体化视图。
API Version 2013-05-15
127
Amazon Relational Database Service 用户指南
在 Amazon RDS 上将数据导入到 Oracle
CREATE MATERIALIZED VIEW customer_0 BUILD IMMEDIATE REFRESH FAST AS SELECT *
FROM cust_dba.customer_0@remote_site;
API Version 2013-05-15
128
Amazon Relational Database Service 用户指南
附录:Oracle 数据库引擎选项
附录:Oracle 数据库引擎选项
本附录介绍了一些选项或其他功能,这些选项或功能可用于运行 Oracle 数据库引擎实例的 Amazon RDS
实例。要启用这些选项,您可以将它们添加到选项组中,然后将选项组关联到数据库实例。有关使用选项
的更多信息,请参阅 有关选项组应了解的情况 (p. 210)。
Oracle 当前支持以下选项:
• Oracle Enterprise Manager Database Control (p. 129)
• Oracle XML DB (p. 129)
• Oracle Application Express (APEX) (p. 130)
• Oracle 本地网络加密 (p. 133)(Oracle Enterprise Edition 中提供的 Oracle 高级安全选项的功能)
• Oracle 透明数据加密 (TDE) (p. 134)(Oracle Enterprise Edition 中提供的 Oracle 高级安全选项的功能)
• Oracle Statspack (p. 135)
Note
其中一些选项可能需要更多内存,以在数据库实例上运行。例如,Oracle Enterprise Manager
Database Control 使用约 300 MB 的 RAM;如果您为一个小数据库实例启用此选项,那么可能
会遇到内存限制导致的性能问题。
启用这些选项前,请考虑数据库实例内是否有足够的可用内存。您可调整 Oracle 参数,使它需
要更少的 RAM;或者,您可以扩展到更大的数据库实例。
Oracle Enterprise Manager Database Control
Oracle Enterprise Manager (OEM) Database Control 是基于 Web 的界面,用于 Oracle 数据库管理。
OEM Database Control 的默认端口号是 1158;启用数据库实例的 OEM Database Control 选项时,您可
接受此端口号,或选择一个不同的端口号。然后,可转到您的 Web 浏览器,开始使用 OEM Database
Control。
以下示例演示如何从您的 Web 浏览器访问 OEM Database Control。假设 Amazon RDS 实例的终端节点
为 mydb.f9rbfa893tft.us-east-1.rds.amazonaws.com,且指定了端口 1158。用于访问 OEM Database
Control 的 URL 将为:
https://mydb.f9rbfa893tft.us-east-1.rds.amazonaws.com:1158/em
显示 OEM Database Control 登录窗口,提示您输入用户名和密码。输入数据库实例的主用户名和主密
码。现在您可使用 OEM Database Control 控制台管理数据库。
Oracle XML DB
Oracle XML DB 向您的数据库实例添加本机 XML 支持。借助 Amazon RDS XMLDB 选项,除关系数据
外,运行 Oracle 引擎的数据库实例可存储和检索结构化和非结构化 XML。
将 XMLDB 选项应用于数据库实例后,您便拥有了对 Oracle XML DB 存储库的完全访问权限;而无需任
何安装后任务。
Note
Amazon RDS XMLDB 选项不为 Oracle XML DB Protocol Server 提供支持。
API Version 2013-05-15
129
Amazon Relational Database Service 用户指南
Oracle Application Express (APEX)
Oracle Application Express (APEX)
Oracle Application Express (APEX) 是基于 Web 应用程序的开发和运行时环境。使用 APEX,开发人员
可完全在 Web 浏览器内构建应用程序,且客户无需安装任何其他软件即可运行这些应用程序。
Note
Amazon RDS 支持 Oracle APEX 版本 4.1.1。
Oracle APEX 包含两个主要组件:
• 存储 APEX 应用程序和组件的元数据的存储库。该存储库包含安装于 Amazon RDS 数据库实例内的
表、索引和数据元。
• 管理与 APEX 客户端的 HTTP 通信的侦听器。该侦听器接受来自 Web 浏览器的传入连接并将这些连接
传递至 Amazon RDS 实例进行处理,然后将来自存储库的结果发送回浏览器。
为您的 Oracle 数据库实例添加 APEX 选项时,Amazon RDS 仅安装 APEX 存储库。您必须将侦听器安
装于单独的主机上 – Amazon EC2 实例、您公司的本地服务器或台式计算机。
以下部分解释了如何配置用于 Amazon RDS 的 Oracle APEX 存储库和侦听器。
存储库配置
配置 APEX 存储库
1.
2.
创建运行 Oracle 引擎的新 Amazon RDS 实例,或选择一个现有实例。Oracle 引擎的版本编号必须
为 11.2.0.2.v4 或更新。
创建新的选项组,或选择一个现有选项组。将以下选项应用于此选项组:
• XMLDB
• APEX
• APEX_DEV
3.
4.
(如果只希望部署 APEX 运行时环境,可稍后移除 APEX_DEV 选项。然而,此配置程序中必须有该
选项。)
将选项组应用于数据库实例。Amazon RDS 会在数据库实例内安装存储库组件;完成此过程需要几
分钟。
在成功应用选项组后,需要更改 APEX_PUBLIC_USER 数据库账户密码并解锁。您可以使用 Oracle
SQL*Plus 命令行实用工具执行此操作:以主用户身份连接到数据库实例,并发出以下命令:
alter user APEX_PUBLIC_USER identified by newpass;
alter user APEX_PUBLIC_USER account unlock;
使用所选密码替换 newpass。
侦听器配置
现在可以配置用于 Oracle APEX 的侦听器。为此,您可使用以下任一种产品:
• Oracle Application Express Listener
• Oracle HTTP Server 和 mod_plsql
API Version 2013-05-15
130
Amazon Relational Database Service 用户指南
Oracle Application Express (APEX)
Note
Amazon RDS 不支持具有嵌入 PL/SQL 网关的 Oracle XML DB HTTP 服务器;不可将其用作
APEX 侦听器。此限制符合 Oracle 的建议,该建议反对将嵌入 PL/SQL 网关用于在 Internet 上运
行的应用程序。
侦听器必须安装于单独主机上,如 Amazon EC2 实例或您拥有的服务器。您还必须在充当侦听器的单独
主机上安装以下必备软件:
• Java Runtime Environment (JRE) – Oracle APEX Listener 是一种 Java 应用程序。
• Oracle Net Services,使 APEX 侦听器与 Amazon RDS 实例连接。
• SQL*Plus,执行从命令行中获取的管理任务。
以下步骤显示了如何配置 Oracle Application Express Listener 产品。假设您的 APEX 主机名称为
myapexhost.example.com,且该主机运行的是 Linux。
配置 APEX 侦听器
1.
2.
以根用户身份登录 myapexhost.example.com。
我们建议您创建一个非特权操作系统用户,以控制 APEX 侦听器安装。以下命令会创建一个名为
apexuser 的新用户:
useradd -d /home/apexuser apexuser
现在向 apexuser 分配密码:
passwd apexuser
3.
以 apexuser 身份登录 myapexhost.example.com,并从 Oracle 下载 APEX 和 APEX Listener 安装
文件:
• http://www.oracle.com/technetwork/developer-tools/apex/downloads/index.html
• http://www.oracle.com/technetwork/developer-tools/apex-listener/downloads/index.html
4.
打开 APEX 文件:
unzip apex_4.1.1.zip
5.
创建新目录,打开 APEX Listener 文件:
mkdir /home/apexuser/apexlistener
cd /home/apexuser/apexlistener
unzip ../apex_listener.1.1.3.243.11.40.zip
6.
当您仍在 apexlistener 目录中时,运行 APEX Listener 程序:
API Version 2013-05-15
131
Amazon Relational Database Service 用户指南
Oracle Application Express (APEX)
java -Dapex.home=./apex -Dapex.images=/home/apexuser/apex/images -Dapex.erase
-jar ./apex.war
该程序会提示您输入以下内容:
• APEX Listener Administrator 用户名 – 默认为 adminlistener
• APEX Listener Administrator 密码。
• APEX Listener Manager 用户名 – 默认为 managerlistener
• APEX Listener Administrator 密码。
该程序会打印出您需要的 URL,以完成配置:
INFO: Please complete configuration at: http://localhost:8080/apex/listener
Configure
Database is not yet configured
7.
使 APEX Listener 处于运行状态。此程序需要持续运行,以便于您使用 Oracle Application Express。
(完成此配置程序后,可在后台运行侦听器。)
从 Web 浏览器内转到 APEX Listener 程序提供的 URL。显示 Oracle Application Express Listener
管理窗口。输入以下信息:
•
•
•
•
•
•
8.
用户名— APEX_PUBLIC_USER
密码 - APEX_PUBLIC_USER 的密码。(这是您先前配置 APEX 存储库时指定的密码。)
连接类型- 基本
主机名– Amazon RDS 实例的终端节点,例如 mydb.f9rbfa893tft.us-east-1.rds.amazonaws.com
端口— 1521
SID– Amazon RDS 实例上的数据库名,例如,mydb
单击应用按钮。显示 APEX 管理窗口。
您需要为 APEX admin 用户设置密码。为此,使用 SQL*Plus 以主用户身份连接到数据库实例,并发
出以下命令:
grant APEX_ADMINISTRATOR_ROLE to master;
@/home/apexuser/apex/apxchpwd.sql
使用主用户名替换 master。当 apxchpwd.sql 脚本提示您时,输入一个新 admin 密码。
9.
在浏览器中返回到 APEX 管理窗口,然后单击管理。接下来,单击 Application Express 内部管理。
会提示您输入 APEX 内部管理证书。输入以下信息:
• 用户名— 管理员
• 密码– 使用 apxchpwd.sql 脚本设置的密码。
单击登录。将要求您为 admin 用户设置新密码。
Oracle Application Express 现在已可以使用。
API Version 2013-05-15
132
Amazon Relational Database Service 用户指南
Oracle 本地网络加密
Oracle 本地网络加密
Amazon RDS 支持 Oracle 本地网络加密,这是在 Oracle Enterprise Edition 中提供的 Oracle 高级安全选
项的功能。通过本地网络加密,您可以对进出数据库实例的数据进行加密。
要对数据库实例使用 Oracle 本地网络加密,您应向选项组添加 NATIVE_NETWORK_ENCRYPTION 选
项,并将该选项组与数据库实例关联。首先,您应确定该数据库实例是否与具有
NATIVE_NETWORK_ENCRYPTION 选项的选项组关联。要查看与数据库实例关联的选项组,您可以使
用 RDS 控制台、rds-describe-db-instance CLI 命令或 API 操作 DescribeDBInstances。Amazon RDS
支持对超过 db.t1.micro 的所有数据库实例类进行 Oracle 本地网络加密。
本指南未详细讨论 Oracle 本地网络加密,但在确定部署解决方案之前,您应该了解每种算法和密钥的优
缺点。有关通过 Oracle 高级安全提供的算法和密钥的信息,请参阅 Oracle 文档中的 Oracle 高级安全。
有关 AWS 安全的更多信息,请参阅 Amazon Web Services:安全过程概述。
配合使用 Oracle 本地网络加密和 Amazon RDS 的过程如下:
1. 如果数据库实例未与具有网络加密选项 (NATIVE_NETWORK_ENCRYPTION) 的选项组关联,必须修
改现有选项组以便添加 NATIVE_NETWORK_ENCRYPTION 选项,或者创建新的选项组并向其添加
NATIVE_NETWORK_ENCRYPTION 选项。有关创建或修改选项组的信息,请参阅 使用选项组 (p. 210)。
有关向选项组添加选项的信息,请参阅 将选项添加到选项组 (p. 212)。
2. 指定选项组的 NATIVE_NETWORK_ENCRYPTION 选项设置。有关修改选项设置的信息,请参阅 修
改选项设置 (p. 214)。
这些设置包括:
• SQLNET.ENCRYPTION_SERVER - 指定客户端或充当客户端的服务器连接到数据库实例时的加密
行为。允许的值包括 Accepted、Rejected、Requested(默认值)和 Required。Requested
指示数据库实例不需要对来自客户端的流量进行加密。
• SQLNET.CRYPTO_CHECKSUM_SERVER - 指定客户端或充当客户端的服务器连接到数据库实例
时的数据完整性行为。允许的值包括 Accepted、Rejected、Requested(默认值)和 Required。
Requested 指示数据库实例不需要客户端执行校验和。
• SQLNET.ENCRYPTION_TYPES_SERVER - 指定数据库实例使用的加密算法的列表。数据库实例
将使用每种算法以便尝试对客户端输入解密,直到某种算法成功或到达列表末尾。Amazon RDS 使
用 Oracle 提供的以下默认列表。您可以更改顺序或限制数据库实例将接受的算法。
a. RC4_256:RSA RC4(256 位密钥大小)
b. AES256:AES(256 位密钥大小)
c. AES192:AES(192 位密钥大小)
d. 3DES168:3 密钥三次 DES(168 位有效密钥大小)
e. RC4_128:RSA RC4(128 位密钥大小)
f. AES128:AES(128 位密钥大小)
g. 3DES112:2 密钥三次 DES(112 位有效密钥大小)
h. RC4_56:RSA RC4(56 位密钥大小)
i. DES:标准 DES(56 位密钥大小)
j. RC4_40:RSA RC4(40 位密钥大小)
k. DES40:DES40(40 位密钥大小)
• SQLNET.CRYPTO_CHECKSUM_TYPES_SERVER - 指定校验和算法。默认值为 sha-1,但还支持
md5。
3. 列出选项组中的选项以确保您已添加 NATIVE_NETWORK_ENCRYPTION 选项并指定正确设置。使用
RDS 控制台、CLI 命令 rds-describe-option-group-options 或 Amazon RDS API 操作
DescribeOptionGroupOptions 可以查看选项组中的选项。
4. 将数据库实例与具有 NATIVE_NETWORK_ENCRYPTION 选项的选项组关联。有关将数据库实例与选
项组关联的信息,请参阅 修改运行 Oracle 数据库引擎的数据库实例 (p. 122)。
API Version 2013-05-15
133
Amazon Relational Database Service 用户指南
Oracle 透明数据加密 (TDE)
通过 Oracle 本地网络加密,您还可以在客户端指定网络加密。在客户端(用于连接数据库实例的计算机)
中,您可以使用 sqlnet.ora 文件指定以下客户端设置:SQLNET.CRYPTO_CHECKSUM_CLIENT、
SQLNET.CRYPTO_CHECKSUM_TYPES_CLIENT、SQLNET.ENCRYPTION_CLIENT 和
SQLNET.ENCRYPTION_TYPES_CLIENT。有关信息,请参阅 Oracle 文档中的配置 Oracle 服务器和客
户端的网络数据加密和完整性。
有时,数据库实例会拒绝来自应用程序的连接请求,例如,当客户端和服务器上的加密算法不匹配时。
要测试 Oracle 本地网络加密,请在客户端上的 sqlnet.ora 文件中添加以下行:
DIAG_ADR_ENABLED=off TRACE_DIRECTORY_CLIENT=/tmp TRACE_FILE_CLIENT=nettrace
TRACE_LEVEL_CLIENT=16
这些行会在尝试连接时在名为 /tmp/nettrace* 的客户端中生成一个跟踪文件。跟踪文件包含有关连接
的信息。有关使用 Oracle 本地网络加密时的连接相关问题的更多信息,请参阅 Oracle 文档中的关于协商
加密和完整性。
Oracle 透明数据加密 (TDE)
Amazon RDS 支持 Oracle 透明数据加密 (TDE),这是在 Oracle Enterprise Edition 中提供的 Oracle 高级
安全选项的功能。此功能在将数据写入到存储之前自动对数据进行加密,并在从存储读取数据时自动对数
据进行解密。
Note
TDE 选项是永久选项,无法从选项组中删除,并且该选项组一旦与数据库实例关联,便无法从数
据库实例中删除。在将数据库实例与具有 Oracle TDE 选项的选项组关联之后,您无法从该实例
禁用 TDE。
Oracle 透明数据加密用于以下情况:当您需要对案例数据文件中的敏感数据加密,并且备份由第三方获
取时,或者当您需要解决与安全相关的管理合规性问题时。
本指南未对 Oracle 透明数据加密进行详细阐述。有关使用 Oracle 透明数据加密的信息,请参阅使用透明
数据加密保护存储数据安全。有关 Oracle 高级安全的更多信息,请参阅 Oracle 文档中的 Oracle 高级安
全。有关 AWS 安全的更多信息,请参阅 Amazon Web Services:安全过程概述。
Oracle 透明数据加密支持两种加密模式:TDE 表空间加密和 TDE 列加密。TDE 表空间加密用于加密所
有应用程序表。TDE 列加密用于加密含有敏感数据的单个数据元素。此外,您还可以应用同时使用 TDE
表空间和列加密的混合加密解决方案。有关 TDE 最佳实践的信息,请参阅 Oracle 高级安全透明数据加密
最佳实践。
您应当确定您的数据库实例是否与具有 TDE 选项的选项组关联。要查看与数据库实例关联的选项组,您
可以使用 RDS 控制台、rds-describe-db-instance CLI 命令或 API 操作 DescribeDBInstances。
Amazon RDS 管理数据库实例中的 Oracle Wallet 和 TDE 主密钥。为了遵循多个安全标准,Amazon RDS
正在尽一切努力周期性自动交替使用主密钥。
配合使用 Oracle 透明数据加密 (TDE) 和 Amazon RDS 的过程如下:
1. 如果数据库实例未与已启用 TDE 选项的选项组关联,您必须创建选项组并添加 TDE 选项,或者修改
关联的选项组以便添加 TDE 选项。有关创建或修改选项组的信息,请参阅 使用选项组 (p. 210)。有关
向选项组添加选项的信息,请参阅 将选项添加到选项组 (p. 212)。
2. 将数据库实例与具有 TDE 选项的选项组关联。有关将数据库实例与选项组关联的信息,请参阅 修改运
行 Oracle 数据库引擎的数据库实例 (p. 122)。
API Version 2013-05-15
134
Amazon Relational Database Service 用户指南
Oracle Statspack
如果您不想继续对数据库实例使用 TDE 选项,您必须对该数据库实例上的所有数据解密,将这些数据复
制到不与已启用 TDE 的选项组关联的新数据库实例,并删除原始实例。您可以根据需要使用与以前的数
据库实例名称相同的名称重命名新实例。
配合使用 TDE 和 Data Pump
不过,您可以使用 Oracle Data Pump 导入或导出加密转储文件。Amazon RDS 对 Oracle Data Pump 支
持密码加密模式 (ENCRYPTION_MODE=PASSWORD)。Amazon RDS 对 Oracle Data Pump 不支持透
明加密模式 (ENCRYPTION_MODE=TRANSPARENT)。有关配合使用 Oracle Data Pump 和 Amazon
RDS 的更多信息,请参阅 Oracle Data Pump (p. 124)。
Oracle Statspack
Oracle Statspack 选项 (ORACLE_STATSPACK) 安装并启用 Statspack Oracle 性能统计数据功能。Oracle
Statspack 是收集、存储和显示性能数据的 SQL、PL/SQL 和 SQL*Plus 脚本的集合。有关使用 Oracle
Statspack 信息,请参阅 Oracle 文档中的 Oracle Statspack。
Note
Oracle 不再支持 Oracle Statspack,并用更高级的 Automatic Workload Repository (AWR) 取而
代之。只有已购买 Diagnostics Pack 的 Oracle Enterprise Edition 客户才能使用 AWR。Oracle
Statspack 可以在 Amazon RDS 上与任何 Oracle 数据库引擎配合使用。
以下步骤演示如何在 Amazon RDS 上使用 Oracle Statspack:
1. 将 Statspack 选项添加到选项组,然后将该选项组与数据库实例关联。Amazon RDS 在数据库实例上
安装 Statspack 脚本,并设置 PERFSTAT 用户账户,即用于运行 Statspack 脚本的账户。
如果您具有已创建 PERFSTAT 账户的现有数据库实例,并且您希望与其配合使用 Oracle Statspack,
则必须在将 Statspack 选项添加到与该数据库实例关联的选项组之前删除 PERFSTAT 账户。如果您尝
试将 Statspack 选项添加到选项组,该选项组与已创建 PERFSTAT 账户的数据库实例关联,您将收到
错误,并且将生成 RDS 事件 RDS-Event-0058。
通过运行以下命令可以删除 PERFSTAT 账户:
DROP USER perfstat CASCADE;
2. Amazon RDS 在数据库实例上安装 Statspack 后,您必须使用您的主用户名和主密码登录该数据库实
例。然后,必须重置 PERFSTAT 密码,以替换安装 Statspack 时 Amazon RDS 创建的随机生成值。
在重置 PERFSTAT 密码后,您可以使用 PERFSTAT 用户账户登录并运行 Statspack 脚本。
使用以下命令重置密码:
ALTER USER perfstat IDENTIFIED BY <new_password> ACCOUNT UNLOCK;
3. 在使用 PERFSTAT 账户登录后,您可以手动创建 Statspack 快照,也可以创建将在指定时间间隔后生
成 Statspack 快照的作业。例如,以下作业每小时创建一个 Statspack 快照:
execute dbms_job.submit(:jn, 'statspack.snap;',sysdate,'trunc(SYS
DATE+1/24,''HH24'')');
4. 一旦您创建了至少两个 Statspack 快照,则可以使用以下查询查看它们:
API Version 2013-05-15
135
Amazon Relational Database Service 用户指南
Oracle Statspack
select snap_id, snap_time from stats$snapshot order by 1;
5. 要创建 Statspack 报告,请选择两个快照以便分析和运行以下 Amazon RDS 命令:
exec RDSADMIN.RDS_RUN_SPREPORT(<begin snap>,<end snap>);
例如,以下 Amazon RDS 命令将基于 Statspack 快照 1 和 52 之间的间隔创建报告:
exec RDSADMIN.RDS_RUN_SPREPORT(1,52);
生成的 Statspack 报告的文件名包括使用的两个 Statspack 快照的编号。例如,使用 Statspack 快照 1 和
52 创建的报告文件将命名为 ORCL_spreport_1_52.lst。通过在 RDS 控制台的“日志”部分中选择报告并单
击下载可以下载 Statspack 报告,也可以使用 使用 Oracle 跟踪文件 (p. 291) 中介绍的跟踪文件过程。
如果在生成报告时出错,则会使用相同命名约定创建错误文件,但该文件具有扩展名 .err。例如,如果在
使用 Statspack 快照 1 和 52 创建报告时出错,报告文件将命名为 ORCL_spreport_1_52.err。通过在 RDS
控制台的“日志”部分中选择报告并单击下载可以下载错误报告,也可以使用 使用 Oracle 跟踪文件 (p. 291)
中介绍的跟踪文件过程。
Oracle Statspack 会在运行报告前执行一些基本检查,因此,您还可能看到命令提示符下会显示错误消
息。例如,如果您尝试基于无效范围生成报告(例如,起始 Statspack 快照值大于结束 Statspack 快照
值),则会在命令提示符下显示一条错误消息,并且不会创建错误文件。
exec RDSADMIN.RDS_RUN_SPREPORT(2,1); * ERROR at line 1: ORA-20000: Invalid
snapshot IDs. Find valid ones in perfstat.stats$snapshot.
如果您使用的某个 Statspack 快照的编号无效,还会在命令提示符下显示错误消息。例如,如果您具有
20 个 Statspack 快照,但请求使用 Statspack 快照 1 和 50 运行报告,命令提示符下将显示错误。
exec RDSADMIN.RDS_RUN_SPREPORT(1,50); * ERROR at line 1: ORA-20000: Could not
find both snapshot IDs
有关如何使用 Oracle Statspack 的更多信息(包括通过调整快照级别来调整捕获的数据量的相关信息),
请转到 Oracle Statspack 文档页面。
API Version 2013-05-15
136
Amazon Relational Database Service 用户指南
附录:Oracle 的数据库管理员常用任务
附录:Oracle 的数据库管理员常用任务
为了获得托管式服务的体验,Amazon RDS 未提供对数据库实例的 Shell 访问权限,并且限制对需要高级
特权的某些系统程序和表的访问。本部分介绍了一些数据库管理员常用任务的 Amazon RDS 特定实施,
这些任务适用于运行 Oracle 数据库引擎的数据库实例。
启用和禁用受限会话
Oracle 方法
Amazon RDS 方法
alter system enable restricted exec
session;
rdsadmin.rdsadmin_util.restricted_session(true);
alter system disable restricted exec
session;
rdsadmin.rdsadmin_util.restricted_session(false);
以下示例介绍了如何启用和禁用受限会话。
select logins from v$instance;
LOGINS
------ALLOWED
exec rdsadmin.rdsadmin_util.restricted_session(true);
select logins from v$instance;
LOGINS
---------RESTRICTED
exec rdsadmin.rdsadmin_util.restricted_session(false);
select logins from v$instance;
LOGINS
------ALLOWED
刷新共享池
Oracle 方法
Amazon RDS 方法
alter system flush shared_pool; exec rdsadmin.rdsadmin_util.flush_shared_pool;
API Version 2013-05-15
137
Amazon Relational Database Service 用户指南
刷新缓冲区缓存
刷新缓冲区缓存
Oracle 方法
Amazon RDS 方法
alter system flush
buffer_cache;
exec rdsadmin.rdsadmin_util.flush_buffer_cache;
通过检查点检验数据库
Oracle 方法
Amazon RDS 方法
alter system checkpoint;
exec rdsadmin.rdsadmin_util.checkpoint;
取消会话
Oracle 方法
Amazon RDS 方法
alter system kill session '
sid, serial#' IMMEDIATE;
exec rdsadmin.rdsadmin_util.kill(sid, serial#);
切换联机日志文件
Oracle 方法
Amazon RDS 方法
alter system switch logfile;
exec rdsadmin.rdsadmin_util.switch_logfile;
添加和删掉联机重做日志并调整其大小
使用 Oracle 数据库引擎的新建 Amazon RDS 实例将有四个 128 MB 联机重做日志。如果您要调整其日志
大小或添加更多日志,相同的限制也适用于联机重做日志的命名物理文件。
使用以下程序添加或删掉重做日志:
exec rdsadmin.rdsadmin_util.add_logfile(size bytes);
exec rdsadmin.rdsadmin_util.drop_logfile(group#);
示例
此示例显示了如何使用 Amazon RDS 提供的程序将联机重做日志的大小从默认值调整到 512 M。
# Start with four 128m logs.
SQL>select GROUP#, BYTES, STATUS from v$log;
GROUP#
BYTES STATUS
---------- ---------- ----------------
API Version 2013-05-15
138
Amazon Relational Database Service 用户指南
添加和删掉联机重做日志并调整其大小
1
2
3
4
134217728
134217728
134217728
134217728
INACTIVE
CURRENT
INACTIVE
INACTIVE
4 rows selected.
# Add four new logs with that are each 512m.
SQL>exec rdsadmin.rdsadmin_util.add_logfile(536870912);
PL/SQL procedure successfully completed.
SQL>exec rdsadmin.rdsadmin_util.add_logfile(536870912);
PL/SQL procedure successfully completed.
SQL>exec rdsadmin.rdsadmin_util.add_logfile(536870912);
PL/SQL procedure successfully completed.
SQL>exec rdsadmin.rdsadmin_util.add_logfile(536870912);
PL/SQL procedure successfully completed.
# Now query v4log to show that there are 8 logs:
SQL>select GROUP#, BYTES, STATUS from v$log;
GROUP#
BYTES STATUS
---------- ---------- ---------------1 134217728 INACTIVE
2 134217728 CURRENT
3 134217728 INACTIVE
4 134217728 INACTIVE
5 536870912 UNUSED
6 536870912 UNUSED
7 536870912 UNUSED
8 536870912 UNUSED
8 rows selected.
# Now, drop each INACTIVE log using the group#.
SQL>exec rdsadmin.rdsadmin_util.drop_logfile(1);
PL/SQL procedure successfully completed.
SQL>exec rdsadmin.rdsadmin_util.drop_logfile(3);
PL/SQL procedure successfully completed.
SQL>exec rdsadmin.rdsadmin_util.drop_logfile(4);
PL/SQL procedure successfully completed.
#
API Version 2013-05-15
139
Amazon Relational Database Service 用户指南
添加和删掉联机重做日志并调整其大小
SQL>select GROUP#, BYTES, STATUS from v$log;
GROUP#
BYTES STATUS
---------- ---------- ---------------2 134217728 CURRENT
5 536870912 UNUSED
6 536870912 UNUSED
7 536870912 UNUSED
8 536870912 UNUSED
8 rows selected.
# Switch logs so that group 2 is no longer current:
SQL>exec rdsadmin.rdsadmin_util.switch_logfile;
PL/SQL procedure successfully completed.
#
SQL>select GROUP#, BYTES, STATUS from v$log;
GROUP#
BYTES STATUS
---------- ---------- ---------------2 134217728 ACTIVE
5 536870912 CURRENT
6 536870912 UNUSED
7 536870912 UNUSED
8 536870912 UNUSED
5 rows selected.
# Issue a checkpoint to clear log 2
SQL>exec rdsadmin.rdsadmin_util.checkpoint;
PL/SQL procedure successfully completed.
#
SQL>select GROUP#, BYTES, STATUS from v$log;
GROUP#
BYTES STATUS
---------- ---------- ---------------2 134217728 INACTIVE
5 536870912 CURRENT
6 536870912 UNUSED
7 536870912 UNUSED
8 536870912 UNUSED
5 rows selected.
# Checkpointing clears log group 2 so that its status is now INACTIVE allowing
us to drop the final log group 2:
SQL>exec rdsadmin.rdsadmin_util.drop_logfile(2);
PL/SQL procedure successfully completed.
API Version 2013-05-15
140
Amazon Relational Database Service 用户指南
设置默认表空间
# Now, there are four 512m logs. Oracle using Oracle Managed Files (OMF) will
automatically remove the old logfiles from the file system.
SQL>select GROUP#, BYTES, STATUS from v$log;
GROUP#
BYTES STATUS
---------- ---------- ---------------5 536870912 CURRENT
6 536870912 UNUSED
7 536870912 UNUSED
8 536870912 UNUSED
4 rows selected.
设置默认表空间
Oracle 方法
Amazon RDS 方法
alter database default
tablespace users2;
exec
rdsadmin.rdsadmin_util.alter_default_tablespace('users2');
设置数据库时区
可以通过运行 rdsadmin_util 程序修改数据库时区,如下表所示。可以使用 Oracle 接受的任何时区名称或
GMT 时差。
Oracle 方法
Amazon RDS 方法
alter database set time_zone = exec
'+3:00';
rdsadmin.rdsadmin_util.alter_db_time_zone('+3:00');
更改时区后,必须重启数据库实例,更改才能生效。
在 Oracle 文档中列出了与设置时区有关的其他限制。
创建表空间和数据文件及调整其大小
Amazon RDS 仅支持数据文件、日志文件和控制文件的 Oracle Managed Files (OMF)。创建数据文件和
日志文件时,无法指定物理文件名。
以下示例创建了表空间:
create tablespace users2;
以下示例创建了临时表空间:
create temporary tablespace temp01;
因为 Oracle ALTER DATABASE 系统特权无法在 Amazon RDS 上使用,因此必须使用 ALTER TABLESPACE
调整表空间的大小。以下示例将名为 users2 的表空间的大小调整到 200 MB:
API Version 2013-05-15
141
Amazon Relational Database Service 用户指南
创建表空间和数据文件及调整其大小
alter tablespace users2 resize 200M;
API Version 2013-05-15
142
Amazon Relational Database Service 用户指南
附录:Amazon RDS 内支持的 Oracle 字符集
附录:Amazon RDS 内支持的 Oracle 字符集
下表列出了 Amazon RDS 内支持的 Oracle 数据库字符集。您可使用本页面内 rds-create-db-instance 命
令的 --character-set 参数或 CreateDBInstance API 操作的 CharacterSetName 参数的值。
值
描述
AL32UTF8
Unicode 5.0 UTF–8 通用字符集(默认)
JA16EUC
EUC 24 位日语
JA16EUCTILDE
除波浪短划线和波形符至 Unicode 及来自 Unicode
的映射外,与 JA16EUC 相同
JA16SJIS
Shift–JIS 16 位日语
JA16SJISTILDE
除波浪短划线和波形符至 Unicode 及来自 Unicode
的映射外,与 JA16SJIS 相同
KO16MSWIN949
Microsoft Windows 代码页 949 韩语
TH8TISASCII
泰国工业标准 620–2533–ASCII 8 位
VN8MSWIN1258
Microsoft Windows 代码页 1258 8 位越南语
ZHS16GBK
GBK 16 位简体中文
ZHT16HKSCS
Microsoft Windows 代码页 950,香港附属字符集
HKSCS–2001。字符集转换基于 3.0。
ZHT16MSWIN950
Microsoft Windows 代码页 950 繁体中文
ZHT32EUC
EUC 32 位繁体中文
BLT8ISO8859P13
ISO 8859–13 波罗的海文
BLT8MSWIN1257
Microsoft Windows 代码页 1257 8 位波罗的海文
CL8ISO8859P5
ISO 88559–5 拉丁语/西里尔语
CL8MSWIN1251
Microsoft Windows 代码页 1251 8 位拉丁语/西里
尔语
EE8ISO8859P2
ISO 8859–2 东欧国家语言
EL8ISO8859P7
ISO 8859–7 拉丁语/希腊语
EL8MSWIN1253
Microsoft Windows 代码页 1253 8 位拉丁语/希腊
语
EE8MSWIN1250
Microsoft Windows 代码页 1250 8 位东欧国家语言
NE8ISO8859P10
ISO 8859–10 北欧国家语言
NEE8ISO8859P4
ISO 8859–4 北欧和东北欧国家语言
WE8ISO8859P15
ISO 8859–15 西欧国家语言
US7ASCII
ASCII 7 位美国英语
WE8MSWIN1252
Microsoft Windows 代码页 1252 8 位西欧国家语言
API Version 2013-05-15
143
Amazon Relational Database Service 用户指南
附录:Amazon RDS 内支持的 Oracle 字符集
值
描述
AR8ISO8859P6
ISO 8859–6 拉丁语/阿拉伯语
AR8MSWIN1256
Microsoft Windows 代码页 1256 8 位拉丁语/阿拉
伯语
IW8ISO8859P8
ISO 8859–8 拉丁语/希伯来语
IW8MSWIN1255
Microsoft Windows 代码页 1255 8 位拉丁语/希伯
来语
TR8MSWIN1254
Microsoft Windows 代码页 1254 8 位土耳其语
WE8ISO8859P9
ISO 8859–9 西欧国家语言和土耳其语
API Version 2013-05-15
144
Amazon Relational Database Service 用户指南
附录:Oracle 数据库引擎修补程序构成信息
附录:Oracle 数据库引擎修补程序构成信息
本部分提供有关用于 Oracle 数据库引擎的 Amazon RDS 修补程序集信息。
数据库引擎版本:11.2.0.2.v2
基线:Oracle Database 修补程序集更新 (PSU) 11.2.0.2.1
故障修复:10151017, 10158965, 10080579, 9788588, 10073683, 10077191, 9744252, 9735237,
10248523, 9956713, 10019218, 9715581, 9770451, 9539440, 10022980 10209232, 10079168, 10013431,
9881076, 10238786, 10040531
数据库引擎版本:11.2.0.2.v3
基线:Oracle Database 修补程序集更新 (PSU) 11.2.0.2.3
故障修复:10151017, 10158965, 11724916, 10190642, 12586486, 12586487, 10129643, 12586488,
12586489, 10018789, 9744252, 10248523, 9956713, 10356513, 9715581, 9770451, 10378005, 10170431,
10425676, 10222719, 10126094, 9591812, 10127360, 10132870, 10094201, 9443361, 10193846,
11664046, 11069199, 10324294, 10245086, 12586490, 10205230, 12586491, 10052141, 12586492,
12586493, 12586494, 10142788, 11818335, 11830776, 12586495, 9905049, 11830777, 12586496,
11830778, 6892311, 10040921, 10077191, 10358019, 12431716, 10219576, 10258337, 11707699,
10264680, 10209232, 11651810, 10102506, 11067567, 9881076, 10278372, 10040531, 10621169,
10155605, 10082277, 10356782, 10218814, 9078442, 9788588, 10157249, 9735237, 10317487,
12326246, 11707302, 10310299, 10636231, 10230571, 11065646, 12419321, 10368698, 10079168,
10013431, 10228151, 10233732, 10324526, 8223165, 10238786, 10217802, 10061015, 9953542,
9572787, 10052956, 10080579, 11699057, 12620422, 10332111, 10227288, 10329146, 10332589,
10110863, 10073683, 9869401, 10019218, 10229719, 11664719, 9539440, 10373381, 9735282, 9748749,
11724984, 10022980, 10411618, 11800854, 12419331, 11674485, 10187168, 6523037, 10648873,
9724970, 10053725, 10084145, 10367188, 11800170, 11695285, 10157402, 9651350, 10299224
数据库引擎版本:11.2.0.2.v4 或 11.2.0.2.v5
基线:Oracle Database 修补程序集更新 (PSU) 11.2.0.2.7
故障修复:10249791, 11877623, 12569737, 14038791, 10026601, 12378147, 10115630, 11814891,
14127510, 10412247, 13923804, 12656535, 9709292, 10220033, 10092858, 12391602, 12323180,
10142857, 10620808, 12579349, 12337012, 12879027, 11811073, 11064851, 13001379, 9903826,
11738259, 14107384, 10207092, 14107385, 11882425, 9858539, 14107386, 14107387, 10633840,
14107388, 10419629, 14107389, 11708510, 10131867, 14040433, 11063191, 13916709, 12880299,
11872103, 12595730, 11056082, 12596444, 13099577, 13632725, 10031806, 13769501, 13769502,
13769503, 13769504, 9744252, 13769505, 9956713, 13769506, 13769507, 9972680, 13769508,
13769509, 11853815, 10635701, 9591812, 10127360, 11723722, 9443361, 12846268, 12846269,
9707965, 10245086, 9401552, 10039731, 11689702, 13769510, 12366627, 10077191, 9829397,
11785938, 10258337, 10264680, 10094823, 10209232, 10284570, 8672862, 9672816, 12830339,
9881076, 10621169, 10048701, 12569482, 9078442, 11057263, 10322959, 12780098, 12976376,
12340939, 11788856, 8223165, 10264696, 10142909, 11800959, 13476583, 10052956, 10285022,
10329146, 10332589, 9895207, 9869401, 12828071, 9285259, 10229719, 11724984, 10411618,
11670161, 9724970, 10113990, 10312847, 11893621, 10200390, 10084145, 10367188, 10285394,
10190642, 12586486, 12586487, 10129643, 12586488, 12917230, 12586489, 11866952, 10232083,
9715581, 10302581, 11690639, 12423475, 11889177, 10126094, 10396041, 10269503, 9970255,
9436324, 12400751, 12589039, 11785390, 12586490, 12586491, 12586492, 9795214, 12586493,
10142788, 12586494, 12586495, 9905049, 12586496, 11674898, 10419984, 6892311, 11815753,
10358019, 12431716, 9906422, 10422126, 13343244, 11937253, 9965655, 11890804, 11651810,
9382956, 11067567, 11716621, 10126822, 9869287, 9375300, 10155605, 10356782, 10326338,
API Version 2013-05-15
145
Amazon Relational Database Service 用户指南
数据库引擎版本:11.2.0.2.v6
10165083, 10051315, 13696224, 10218814, 13554409, 11076894, 10278773, 11707302, 10230571,
12419321, 9966609, 12633340, 12546006, 10137324, 11894889, 10061015, 9572787, 10284838,
10073683, 12639234, 9578670, 9748749, 10022980, 10237773, 10089333, 12419331, 11674485,
12685431, 10187168, 10648873, 10158965, 11061775, 12635537, 9746210, 10204358, 10356513,
10378005, 10170431, 12639177, 10222719, 10384285, 10035737, 12345717, 9873405, 11069199,
12670165, 10159846, 13257247, 10205230, 10052141, 11818335, 12371955, 12655433, 10040921,
11827088, 10219576, 12408350, 13343424, 11707699, 12370722, 11695333, 11841309, 11924400,
12737666, 12797765, 10281887, 10278372, 10013177, 13503598, 12543639, 10157249, 12531263,
9735237, 10317487, 10219583, 9727147, 10310299, 10636231, 11065646, 10055063, 10368698,
10079168, 11695416, 10233732, 10314582, 9953542, 10080579, 11699057, 12620422, 10427260,
11666137, 10110863, 10363186, 10417716, 10019218, 10388660, 12748240, 9539440, 10373381,
10239480, 10158493, 11842991, 10399808, 10417216, 11695285, 11800170, 10157402, 9651350,
10299224, 10151017, 11724916, 9564886, 9847634, 10018789, 10248523, 11694127, 10630870,
9770451, 10425676, 9683047, 10180307, 9835264, 10132870, 10094201, 10193846, 11664046,
10324294, 9414040, 9819805, 11830776, 11830777, 11830778, 11683713, 10200404, 10102506,
12827726, 11733179, 10229886, 10040531, 10082277, 9788588, 12326246, 12397410, 10622001,
13468884, 13386082, 10040035, 12539000, 11867127, 9842573, 9771278, 10013431, 10228151,
10324526, 12417369, 10238786, 10217802, 10332111, 10227288, 10623249, 9943960, 10021022,
9824435, 11664719, 12950644, 9735282, 11800854, 10097711, 11858315, 6523037, 10053725, 8685446
数据库引擎版本:11.2.0.2.v6
基线:Oracle Database 修补程序集更新 (PSU) 11.2.0.2.8
故障修复:13250244, 13737746, 11063821, 12409916, 14461356, 14461357, 11878443 14461358,
14683459, 14275621, 14467061, 10114837, 12649442, 10207551 12794305, 14473913, 10171273,
10373013, 10210507, 11883472, 13080778 10172453, 14624146, 14613900, 10213073, 9373370,
9478199, 9877980 10021111, 10228393, 12899768, 12713993, 9470768, 14390377, 10140809 12894807,
11686968, 12374212, 12764337, 12326708, 9956835, 11734067 7312717, 11775474, 12834027,
13326736, 9952554 10249791, 11877623, 12569737, 14038791, 10026601, 12378147, 10115630
11814891, 14127510, 10412247, 13923804, 12656535, 9709292, 10220033 10092858, 12391602,
12323180, 10142857, 10620808, 12579349, 12337012 12879027, 11811073, 11064851, 13001379,
9903826, 11738259, 14107384 10207092, 14107385, 11882425, 9858539, 14107386, 14107387,
10633840 14107388, 10419629, 14107389, 11708510, 10131867, 14040433, 11063191 13916709,
12880299, 11872103, 12595730, 11056082, 12596444, 13099577 13632725, 10031806, 13769501,
13769502, 13769503, 13769504, 9744252 13769505, 9956713, 13769506, 13769507, 9972680, 13769508,
13769509 11853815, 10635701, 9591812, 10127360, 11723722, 9443361, 12846268 12846269, 9707965,
10245086, 9401552, 10039731, 11689702, 13769510 12366627, 10077191, 9829397, 11785938,
10258337, 10264680, 10094823 10209232, 10284570, 8672862, 9672816, 12830339, 9881076, 10621169
10048701, 12569482, 9078442, 11057263, 10322959, 12780098, 12976376 12340939, 11788856,
8223165, 10264696, 10142909, 11800959, 13476583 10052956, 10285022, 10329146, 10332589,
9895207, 9869401, 12828071 9285259, 10229719, 11724984, 10411618, 11670161, 9724970, 10113990
10312847, 11893621, 10200390, 10084145, 10367188, 10285394, 10190642 12586486, 12586487,
10129643, 12586488, 12917230, 12586489, 11866952 10232083, 9715581, 10302581, 11690639,
12423475, 11889177, 10126094 10396041, 10269503, 9970255, 9436324, 12400751, 12589039,
11785390 12586490, 12586491, 12586492, 9795214, 12586493, 10142788, 12586494 12586495,
9905049, 12586496, 11674898, 10419984, 6892311, 11815753 10358019, 12431716, 9906422, 10422126,
13343244, 11937253, 9965655 11890804, 11651810, 9382956, 11067567, 11716621, 10126822, 9869287
9375300, 10155605, 10356782, 10326338, 10165083, 10051315, 13696224 10218814, 13554409,
11076894, 10278773, 11707302, 10230571, 12419321 9966609, 12633340, 12546006, 10137324,
11894889, 10061015, 9572787 10284838, 10073683, 12639234, 9578670, 9748749, 10022980, 10237773
10089333, 12419331, 11674485, 12685431, 10187168, 10648873, 10158965 11061775, 12635537,
9746210, 10204358, 10356513, 10378005, 10170431 12639177, 10222719, 10384285, 10035737,
12345717, 9873405, 11069199 12670165, 10159846, 13257247, 10205230, 10052141, 11818335,
12371955 12655433, 10040921, 11827088, 10219576, 12408350, 13343424, 11707699 12370722,
11695333, 11841309, 11924400, 12737666, 12797765, 10281887 10278372, 10013177, 13503598,
12543639, 10157249, 12531263, 9735237 10317487, 10219583, 9727147, 10310299, 10636231,
API Version 2013-05-15
146
Amazon Relational Database Service 用户指南
数据库引擎版本:11.2.0.2.v7
11065646, 10055063 10368698, 10079168, 11695416, 10233732, 10314582, 9953542, 10080579
11699057, 12620422, 10427260, 11666137, 10110863, 10363186, 10417716 10019218, 10388660,
12748240, 9539440, 10373381, 10239480, 10158493 11842991, 10399808, 10417216, 11695285,
11800170, 10157402, 9651350 10299224, 10151017, 11724916, 9564886, 9847634, 10018789, 10248523
11694127, 10630870, 9770451, 10425676, 9683047, 10180307, 9835264 10132870, 10094201, 10193846,
11664046, 10324294, 9414040, 9819805 11830776, 11830777, 11830778, 11683713, 10200404,
10102506, 12827726 11733179, 10229886, 10040531, 10082277, 9788588, 12326246, 12397410
10622001, 13468884, 13386082, 10040035, 12539000, 11867127, 9842573 9771278, 10013431,
10228151, 10324526, 12417369, 10238786, 10217802 10332111, 10227288, 10623249, 9943960,
10021022, 9824435, 11664719 12950644, 9735282, 11800854, 10097711, 11858315, 6523037, 10053725,
8685446
数据库引擎版本:11.2.0.2.v7
基线:Oracle Database 修补程序集更新 (PSU) 11.2.0.2.10(2013 年 4 月)
故障修复:16344871, 9671271, 16294412, 14841558, 12579446, 16056267, 10435074 14273397,
12428791, 12314102, 10138589, 14841812, 12842402, 16303117 10372924, 12539487, 12594032,
13377816, 16303116, 16175381, 14220725 13561951, 9868876, 9913542, 16303114, 10362871,
9801919, 12755116 13524899, 16303115, 10350832, 16303118, 12582664, 13596521, 14459552
13810393, 13147164 15896431, 10247152, 14076523, 10395345, 14023636, 13467683, 11706168
15896427, 14263073, 9926929, 10190172, 11715084, 15896432, 9896536 15896428, 15896429,
14841437, 12420002, 14262913, 13399435, 10396874 8547978, 14727315, 15896434, 14546575,
9860769, 14258925, 15896433 14546638, 11834448, 14741727, 14546673, 12845115, 15896430,
12595561 13550185, 14263036, 9912965, 14205448, 15896435, 14035825, 12848798 11856395,
10175192, 14469008, 12313857, 9233544, 9681133 13250244, 13737746, 11063821, 12409916,
14461356, 14461357, 11878443 14461358, 14683459, 14275621, 14467061, 10114837, 12649442,
10207551 12794305, 14473913, 10171273, 10373013, 10210507, 11883472, 13080778 10172453,
14624146, 14613900, 10213073, 9373370, 9478199, 9877980 10021111, 10228393, 12899768, 12713993,
9470768, 14390377, 10140809 12894807, 11686968, 12374212, 12764337, 12326708, 9956835,
11734067 7312717, 11775474, 12834027, 13326736, 9952554 10249791, 11877623, 12569737,
14038791, 10026601, 12378147, 10115630 11814891, 14127510, 10412247, 13923804, 12656535,
9709292, 10220033 10092858, 12391602, 12323180, 10142857, 10620808, 12579349, 12337012
12879027, 11811073, 11064851, 13001379, 9903826, 11738259, 14107384 10207092, 14107385,
11882425, 9858539, 14107386, 14107387, 10633840 14107388, 10419629, 14107389, 11708510,
10131867, 14040433, 11063191 13916709, 12880299, 11872103, 12595730, 11056082, 12596444,
13099577 13632725, 10031806, 13769501, 13769502, 13769503, 13769504, 9744252 13769505,
9956713, 13769506, 13769507, 9972680, 13769508, 13769509 11853815, 10635701, 9591812, 10127360,
11723722, 9443361, 12846268 12846269, 9707965, 10245086, 9401552, 10039731, 11689702, 13769510
12366627, 10077191, 9829397, 11785938, 10258337, 10264680, 10094823 10209232, 10284570,
8672862, 9672816, 12830339, 9881076, 10621169 10048701, 12569482, 9078442, 11057263, 10322959,
12780098, 12976376 12340939, 11788856, 8223165, 10264696, 10142909, 11800959, 13476583
10052956, 10285022, 10329146, 10332589, 9895207, 9869401, 12828071 9285259, 10229719, 11724984,
10411618, 11670161, 9724970, 10113990 10312847, 11893621, 10200390, 10084145, 10367188,
10285394, 10190642 12586486, 12586487, 10129643, 12586488, 12917230, 12586489, 11866952
10232083, 9715581, 10302581, 11690639, 12423475, 11889177, 10126094 10396041, 10269503,
9970255, 9436324, 12400751, 12589039, 11785390 12586490, 12586491, 12586492, 9795214, 12586493,
10142788, 12586494 12586495, 9905049, 12586496, 11674898, 10419984, 6892311, 11815753
10358019, 12431716, 9906422, 10422126, 13343244, 11937253, 9965655 11890804, 11651810,
9382956, 11067567, 11716621, 10126822, 9869287 9375300, 10155605, 10356782, 10326338, 10165083,
10051315, 13696224 10218814, 13554409, 11076894, 10278773, 11707302, 10230571, 12419321
9966609, 12633340, 12546006, 10137324, 11894889, 10061015, 9572787 10284838, 10073683,
12639234, 9578670, 9748749, 10022980, 10237773 10089333, 12419331, 11674485, 12685431,
10187168, 10648873, 10158965 11061775, 12635537, 9746210, 10204358, 10356513, 10378005,
10170431 12639177, 10222719, 10384285, 10035737, 12345717, 9873405, 11069199 12670165,
10159846, 13257247, 10205230, 10052141, 11818335, 12371955 12655433, 10040921, 11827088,
10219576, 12408350, 13343424, 11707699 12370722, 11695333, 11841309, 11924400, 12737666,
API Version 2013-05-15
147
Amazon Relational Database Service 用户指南
数据库引擎版本:11.2.0.2.v7
12797765, 10281887 10278372, 10013177, 13503598, 12543639, 10157249, 12531263, 9735237
10317487, 10219583, 9727147, 10310299, 10636231, 11065646, 10055063 10368698, 10079168,
11695416, 10233732, 10314582, 9953542, 10080579 11699057, 12620422, 10427260, 11666137,
10110863, 10363186, 10417716 10019218, 10388660, 12748240, 9539440, 10373381, 10239480,
10158493 11842991, 10399808, 10417216, 11695285, 11800170, 10157402, 9651350 10299224,
10151017, 11724916, 9564886, 9847634, 10018789, 10248523 11694127, 10630870, 9770451, 10425676,
9683047, 10180307, 9835264 10132870, 10094201, 10193846, 11664046, 10324294, 9414040, 9819805
11830776, 11830777, 11830778, 11683713, 10200404, 10102506, 12827726 11733179, 10229886,
10040531, 10082277, 9788588, 12326246, 12397410 10622001, 13468884, 13386082, 10040035,
12539000, 11867127, 9842573 9771278, 10013431, 10228151, 10324526, 12417369, 10238786,
10217802 10332111, 10227288, 10623249, 9943960, 10021022, 9824435, 11664719 12950644, 9735282,
11800854, 10097711, 11858315, 6523037, 10053725, 8685446
API Version 2013-05-15
148
Amazon Relational Database Service 用户指南
在 Amazon RDS 上使用 Microsoft SQL Server 应了解的情
况
在 Amazon RDS 上使用 Microsoft
SQL Server
Topics
• 在 Amazon RDS 上使用 Microsoft SQL Server 应了解的情况 (p. 149)
• 使用 SQL Server 数据库实例 (p. 155)
• 附录:Microsoft SQL Server 的数据库管理员常见任务 (p. 175)
在 Amazon RDS 上使用 Microsoft SQL Server 应了
解的情况
Topics
• 数据库引擎功能 (p. 150)
• Microsoft SQL Server 2012 (p. 151)
• 主要版本变更:从 2008 R2 升级到 2012 (p. 153)
• 数据库引擎版本管理 (p. 153)
• 角色和权限 (p. 153)
• 授权 (p. 154)
• 对 SQL Server 数据库实例使用 SSL (p. 155)
Amazon RDS 支持运行多版本 Microsoft SQL Server 2008 R2 和 SQL Server 2012 的数据库实例。可以
创建数据库实例、数据库快照、时间点还原以及自动或手动备份。运行多个版本 SQL Server 的数据库实
例支持镜像,可在 VPC 内使用。您还可以使用 SSL 连接运行 SQL Server 的数据库实例。
为了让用户获得托管式服务体验,Amazon RDS 未提供对数据库实例的 Shell 访问权限,并且限制对需要
高级特权的某些系统程序和表的访问权限。Amazon RDS 支持使用任何标准 SQL 客户端应用程序(如
Microsoft SQL Server Management Studio)访问数据库实例上的数据库。Amazon RDS 不允许主机通过
Telnet、安全外壳 (SSH) 或 Windows 远程桌面连接直接访问数据库实例。创建数据库实例时,您将获得
该实例上所有数据库的 db_owner 角色,并且您将具有除用于备份的权限以外的所有数据库级别权限
(Amazon RDS 自动管理备份)。
API Version 2013-05-15
149
Amazon Relational Database Service 用户指南
数据库引擎功能
要将 SQL Server 数据导入数据库实例,请按照 将数据导入 Amazon RDS 上的 SQL Server (p. 168) 部分
提供的信息操作。您不能使用备份和还原命令将数据导入数据库实例,因为 Amazon RDS 不允许您具备
可将文件放在数据库引擎可以访问的物理位置的操作系统级访问权限。此外,您也不能使用 SQL Server
Management Studio 中的复制数据库向导导入数据,因为该工具需要源服务器和目标服务器的 sysadmin
权限,而此权限不可用于数据库实例的主用户账户。
以下端口是在为 SQL Server 创建数据库实例时保留的。在创建 SQL Server 数据库实例时,请不要使用
以下端口:
• 1434
• 3389
• 47001
• 从 49152 到 49156
数据库引擎功能
以下列表显示了一部分关键的数据库引擎功能,SQL Server 2008 R2 版本目前支持所有这些功能。有关
2008 R2 SQL Server 数据库引擎所支持功能的完整列表,请转到 SQL Server 各版本支持的功能。
• 核心数据库引擎功能
• SQL Server 开发工具:
• Visual Studio Integration
• IntelliSense
• SQL Server 管理工具:
• SQL Server Management Studio (SMS)
• sqlcmd
• SQL Server Profiler(客户端跟踪;服务器端的解决方法)
• SQL Server Migration Assistant (SSMA)
• Database Engine Tuning Advisor
• SQL Server Agent
• 安全 CLR
• 全文搜索
• SSL
• 空间和位置的功能
目前不支持的 Microsoft SQL Server 数据库功能包括:
• 维护计划
• 数据库邮件
• 分布式查询(即,链接服务器)
• 透明数据加密
• 数据库日志传输
• 数据库镜像
• Windows 身份验证
• 复制
• 在该数据库实例所在的同一个服务器上运行“Reporting”、“Analysis”、“Integration”或“Master Data
Services”的能力。
• 性能数据收集器
• 其他 T–SQL 终端节点
API Version 2013-05-15
150
Amazon Relational Database Service 用户指南
Microsoft SQL Server 2012
• Distribution Transaction Coordinator (MSDTC)
• WCF Data Services
• FILESTREAM 支持
• 基于策略的管理
• SQL Server Audit
Amazon RDS 目前支持 SQL Server 2008 R2 和 SQL Server 2012 的以下版本的数据库引擎组件:
• 附带免费许可:SQL Server Express Edition、SQL Server Web Edition 和 SQL Server Standard Edition
Note
根据 Microsoft 的使用权限,SQL Server Web Edition 仅可用于支持公有且可通过 Internet 访
问的网页、网站、Web 应用程序和 Web 服务。有关更多信息,请转到 AWS 服务条款。
• 自有许可(许可移动性):SQL Server Standard Edition 和 SQL Server Enterprise Edition
根据 Microsoft 许可策略,您可以在带有 EBS 存储的 Amazon EC2 实例中运行其他 SQL Server 组件。
这包括 SQL Server Analysis Services、SQL Server Integration Services、SQL Server Reporting Services、
Data Quality Services 和 Master Data Services。
Amazon RDS 存在的 SQL Server 限制
因为连接到 Windows Server 的条带化存储存在扩展性限制,所以 Amazon RDS 当前不支持在 SQL Server
数据库实例上增加存储空间。我们建议您根据预期的未来存储增长情况预配置存储空间。如果需要增加
SQL Server 数据库实例的存储空间,您需要导出数据,在增加的存储空间中创建新数据库实例,然后再
将数据导入其中。有关详细信息,请转到 RDS SQL Server Data Migration Guide。
使用 Microsoft SQL Server Express 和 Web Editions 时,Microsoft SQL Server 数据库实例的最小存储
空间为 20 GB,使用 Standard and Enterprise Editions 时,此最小存储空间为 250 GB。
单个 Microsoft SQL Server 数据库实例上的数据库最大数目为 30 个。
除 SQL Server Express edition 外(每个数据库最大存储空间为 10 GB),所有 Microsoft SQL Server 数
据库实例的最大存储空间皆为 1024 GB。
Amazon RDS 保留了多达 40 个供系统维护使用的连接。如果为用户连接参数指定一个值,需要为您希望
使用的连接数目加上 40。
支持 DROP DATABASE,但因为 Microsoft SQL Server 中有限制,还原到成功执行 DROP DATABASE
命令后的某个时间点可能不会反映出对数据库的删除。例如,通常会将已删掉的数据库还原到距发出
DROP DATABASE 命令前还有长达 5 分钟时的状态。要解决此问题,您可以在完成还原操作后重新发出
DROP DATABASE 的命令。
此外,还原到成功执行 DROP DATABASE 命令前的时间点可能不会反映出该数据库在该时间点的状态。
例如,通常会将已删掉的数据库还原到距发出 DROP DATABASE 命令还有长达 5 分钟时的状态,这意
味着您将无法还原这几分钟之内在已删掉的数据库上处理的事务。
Microsoft SQL Server 2012
Amazon RDS 支持 SQL Server 2012 的初始发行 (RTM) 版本,即 11.00.2100.60 版本。有关 SQL Server
2012 的更多信息,请参阅 SQL Server 2012 中的新增功能。
以下是 Amazon RDS 支持的 SQL Server 2012 部分功能:
API Version 2013-05-15
151
Amazon Relational Database Service 用户指南
Microsoft SQL Server 2012
• Columnstore 索引(企业版)
• 在线索引创建、重建和删掉,适于 XML、varchar(max)、nvarchar(max) 和 varbinary(max) 数据类型
(企业版)
• 灵活的服务器角色
• 部分包含的数据库
• Sequences 属性
• THROW 语句
• 新的和增强的空间类型
• UTF–16 支持
• ALTER ANY SERVER ROLE 服务器级权限
某些 SQL Server 2012 功能目前不受支持,其中包括 2008 R2 版本不支持的一些功能。这些功能包括:
• 数据质量服务
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
主数据库服务
常开(2012 企业版中提供)
文件表
SQL Server Audit(2012 年的所有版本均提供)
数据库日志传输
数据库镜像
WCF Data Services
FILESTREAM 支持
基于策略的管理
SQL Server Audit
维护计划
数据库邮件
透明数据加密
Windows 身份验证
复制
在该数据库实例所在的同一个服务器上运行“Reporting”、“Analysis”、“Integration”或“Master Data
Services”的能力。
• 性能数据收集器
• 其他 T–SQL 终端节点
• Distribution Transaction Coordinator (MSDTC)
SQL Server 2012 中已经改变了某些 SQL Server 参数。
• SQL Server 2012 中已经移除了以下参数:awe enabled、precompute rank 和 sql mail xps。
在 SQL Server 数据库实例中无法修改这些参数,并且删除它们不会影响 SQL Server 的使用。
• SQL Server 2012 中新的 contained database authentication 参数支持“部分包含的数据库”。
当启用此参数并随后创建部分包含的数据库时,授权用户的用户名和密码储存在部分包含的数据库中,
而不是主数据库中。有关部分包含的数据库的更多信息,请转到包含的数据库。
自发布 SQL Server 2012 初始版本后,已经推出了多个累积更新程序和一个 Service Pack。Amazon RDS
计划在今后几个月发布 SQL Server 2012 的次要版本升级,包括新的累积更新修补程序和所有已发布的
Service Pack。
在版本、许可模式和实例类方面,Amazon RDS 对 SQL Server 2012 的支持与对 SQL Server 2008 R2
的支持相同。下表显示每个 SQL Server 2012 版本支持的实例类。
API Version 2013-05-15
152
Amazon Relational Database Service 用户指南
主要版本变更:从 2008 R2 升级到 2012
引擎
db.t1.micro
db.m1.small
e
gralx2
4m
.1
2.bd
企业版
否
是
否
是
标准版
否
是
否
是
网络版
否
是
否
是
精简版
是
是
否
下表显示每个 SQL Server 2012 引擎类型支持的许可模式。
引擎
附带许可
自有许可
企业版
否
是
标准版
是
是
网络版
是
否
精简版
是
否
主要版本变更:从 2008 R2 升级到 2012
Amazon RDS 支持从 Microsoft SQL Server 2008 R2 到 SQL Server 2012 的主要版本升级。可通过使用
Amazon RDS 修改数据库实例操作来执行升级。升级生产实例前,您应该全面测试所有主要版本升级。
有关升级数据库实例的信息,请参阅 升级数据库实例 (p. 196)
数据库引擎版本管理
借助 Amazon RDS,您可以控制何时将 SQL Server 实例升级到 Amazon RDS 支持的新版本。您可以保
持与特定 SQL Server 版本兼容,在生产中部署应用程序前针对新版本进行测试,并根据自己的条件和时
间执行版本升级。
除非另行指定,否则您的数据库实例将自动升级到 Amazon RDS 支持的新 SQL Server 次要版本。这种
修补将在计划的维护时段内执行,并将提前在 Amazon RDS 社区论坛中公告。要关闭自动版本升级,请
将数据库实例的 AutoMinorVersionUpgrade 参数设置为“false”。
如果您取消自动计划升级,则可以按照主要版本更新的相同过程手动升级到支持的次要版本。有关信息,
请参阅 升级数据库实例 (p. 196)。
Note
Amazon RDS 会定期汇总官方 Microsoft SQL Server 数据库修补程序并分配 Amazon RDS 特定
数据库引擎版本。目前支持的版本是 SQL Server 2008 R2 Service Pack 1 和 SQL Server 2012。
角色和权限
SQL Server 数据库引擎使用基于角色的安全机制。角色是可授予用户或从用户撤消的特权集合。
将为任何创建数据库的用户分配该数据库的 db_owner 角色,用户将拥有除用于备份外的全部数据库级别
的权限。Amazon RDS 会为您管理备份。
以下服务器级别的角色当前在 Amazon RDS 中不可用:
API Version 2013-05-15
153
Amazon Relational Database Service 用户指南
授权
• bulkadmin
• dbcreator
• diskadmin
• securityadmin
• serveradmin
• sysadmin
以下服务器级别的权限当前在 SQL Server 数据库实例上不可用:
• ADMINISTER BULK OPERATIONS
• ALTER ANY CREDENTIAL
• ALTER ANY EVENT NOTIFICATION
• ALTER ANY SERVER AUDIT
• ALTER RESOURCES
• ALTER SETTINGS(您可使用数据库参数组 API 来修改参数。有关更多信息,请参阅 使用数据库参数
组 (p. 218)。
• AUTHENTICATE SERVER
• CREATE DDL EVENT NOTIFICATION
• CREATE ENDPOINT
• CREATE TRACE EVENT NOTIFICATION
• EXTERNAL ACCESS ASSEMBLY
• SHUTDOWN(您可转而使用 RDS 重启选项)
• UNSAFE ASSEMBLY
• ALTER ANY AVAILABILITY GROUP(仅适用于 SQL Server 2012)
• CREATE ANY AVAILABILITY GROUP(仅适用于 SQL Server 2012)
授权
目前,Amazon RDS 为 SQL Server 提供了两种授权选项:附带许可和许可移动性(自有许可)。本部分
介绍了这两种许可。
Note
根据 Microsoft 的使用权限,SQL Server Web Edition 仅可用于支持公有且可通过 Internet 访问
的网页、网站、Web 应用程序和 Web 服务。有关更多信息,请转到 AWS 服务条款。
附带许可
Amazon RDS 将附带许可服务模式用于运行 Microsoft SQL Server Express Edition、Microsoft SQL Server
Web Edition 和 Microsoft SQL Server Standard Edition (SE) 的数据库实例。在这种模式下,许可由 AWS
持有且价格包含在数据库实例价格内。
许可移动性(自有许可)
Microsoft 的许可移动性计划可让 Microsoft 客户轻松地将当前的本地 Microsoft Server 应用程序工作负载
移动到 Amazon Web Services (AWS),而无需任何额外的 Microsoft 软件许可费用。此优惠面向 Microsoft
批量许可 (VL) 客户,符合条件的服务器应用程序由有效的 Microsoft 软件保障 (SA) 合同涵盖。目前,符
合此计划条件的数据库版本为 Microsoft SQL Server Standard 版和 Microsoft SQL Server Enterprise 版。
有关最新授权条款,请参考 Microsoft 产品使用权限。
API Version 2013-05-15
154
Amazon Relational Database Service 用户指南
对 SQL Server 数据库实例使用 SSL
对 SQL Server 数据库实例使用 SSL
Amazon RDS 支持对 SQL Server 数据库实例进行 SSL 加密。您可使用 SSL 对应用程序和 SQL Server
数据库实例之间的 SQL Server 连接进行加密。SSL 支持可在所有 AWS 地区中用于包括 Express、Web、
Standard 和 Enterprise 版在内的所有 SQL Server 版本。
要使用基于 SSL 的 SQL Server 数据库实例,请遵循以下常规步骤:
1.
2.
下载存储于 https://rds.amazonaws.com/doc/rds-ssl-ca-cert.pem 的公共密钥。
将证书导入您的 Windows 操作系统。有关导入证书的更多信息,请参阅如何在 Windows 7/Vista/XP
中导入受信任的根证书颁发机构。
3.
执行以下任一操作:
a.
b.
在连接字符串上添加“encrypt=true”,连接至基于 SSL 的 SQL Server 数据库实例。如果要连接
至 VPC 中的 SQL Server 数据库实例,您还必须在连接字符串上添加
“TrustServerCertificate=true”。
如果您使用 SQL Server Management Studio 连接 SQL Server 数据库实例,请执行以下操作。
有关使用 SQL Server Management Studio 的更多信息,请参阅使用 SQL Server Management
Studio。
i.
ii.
iii.
iv.
v.
vi.
启动 SQL Server Management Studio。
输入服务器信息、登录用户名和密码。
单击选项 >>。
单击加密连接复选框。
如果要连接 VPC 中的 SQL Server 数据库实例,单击其他连接参数选项卡,然后在文本框
内输入“TrustServerCertificate=true”。
单击连接。
要显示连接的加密状态,请运行以下 SQL 查询:
SELECT encrypt_option FROM sys.dm_exec_connections WHERE session_id = @@SPID
使用 SQL Server 数据库实例
Topics
• 创建运行 Microsoft SQL Server 数据库引擎的数据库实例 (p. 156)
• 连接运行 Microsoft SQL Server 数据库引擎的数据库实例 (p. 162)
• 修改运行 Microsoft SQL Server 数据库引擎的数据库实例 (p. 166)
• 将数据导入 Amazon RDS 上的 SQL Server (p. 168)
您需要对数据库实例执行的大多数任务在所有数据库引擎上的执行方式都是相同的。创建数据库实例、连
接到数据库实例和将数据导入到数据库实例均为特定于每个数据库引擎的任务。此外,此部分中的附录包
含有关使用 SQL Server 数据库实例的重要信息。
API Version 2013-05-15
155
Amazon Relational Database Service 用户指南
创建运行 Microsoft SQL Server 数据库引擎的数据库实例
创建运行 Microsoft SQL Server 数据库引擎的数据库
实例
Amazon RDS 的基本构建块是数据库实例。这是您将用于运行 SQL Server 数据库的环境。
在此示例中,您将创建一个数据库实例,它会运行名为 sqlsv-instance1 的 Microsoft SQL Server 数据库
引擎,并拥有 db.m1.small 数据库实例类、200 GB 的存储空间和保留期为 1 天的自动备份。
AWS Management Console
创建运行 Microsoft SQL Server 数据库引擎的数据库实例
启动 Microsoft SQL Server 数据库实例
1.
2.
3.
4.
Sign in to the AWS Management Console and open the Amazon RDS console at
https://console.aws.amazon.com/rds/.
在 Amazon RDS 控制台的右上角,选择您要在其中创建数据库实例的区域。
在导航窗格中,单击数据库实例。
单击启动数据库实例以启动数据库实例启动向导。
该向导随即在引擎选择页面上打开。
API Version 2013-05-15
156
Amazon Relational Database Service 用户指南
创建运行 Microsoft SQL Server 数据库引擎的数据库实例
5.
6.
在数据库实例启动向导窗口中,针对要使用的 SQL Server 数据库引擎单击选择按钮。
在数据库实例详细信息页面上,指定数据库实例信息。完成后,请单击继续。
对于此参数...
...请执行此操作:
许可模式
选择您要使用的许可模式。选择 使用数据库实例附带
的 Microsoft SQL Server 的一般许可协议,或者选择自有
许可使用现有许可。每种许可模式可能无法适用于所有版
本或所有地区。
数据库引擎版本
选择您要使用的 Microsoft SQL Server 版本。数据库引擎
版本 SQL Server 2012 11.00.210...(default) 是
适用于 Amazon RDS 的 SQL Server 的默认版本。
数据库实例类
为您的数据库实例选择一种配置。例如,一个
db.m1.small 实例类相当于 1.7 GB 内存、1 ECU(1 个
虚拟内核具有 1 个 ECU),64 位平台和中等 I/O 容量。有
关所有数据库实例类选项的更多信息,请参阅 数据库实例
类 (p. 34)。
多可用区域部署
此参数确定是否要在故障转移支持的其他可用区域为您的
数据库实例创建备用副本。此功能仅适用于 Oracle 和
MySQL 数据库。有关多个可用区域的更多信息,请参阅
地区和可用区域 (p. 37)。
自动次要版本升级
选择 ,以便在次要数据库引擎版本可用时,让数据库实例
能够自动接收这些次要升级。
分配的存储空间
键入为数据库实例分配的存储值(以 GB 为单位)。有时,
为数据库实例分配的存储空间高于数据库大小时可提高 I/O
性能。有关存储空间分配的更多信息,请参阅 Amazon
Relational Database Service 功能。
使用预配置 IOPS
确定是否要使用 RDS 中的预配置 IOPS(每秒 I/O 操作),
该高性能存储选项已针对 I/O 密集型事务处理 (OLTP) 数据
库工作负载进行了优化。有关高性能存储的更多信息,请
参阅 使用预置 IOPS 存储 (p. 257)。
数据库实例标识符
为该数据库实例键入一个最多包含 15 位字母和数字字符的
名称,该名称在您所选区域中对于您的账户是唯一的。您
可以选择对该名称进行一些巧妙处理,例如将您所选的地
区和数据库引擎包括在名称中,如 sqlsv-instance1。
主用户名
输入一个名称,该名称将用作您拥有全部数据库权限、用
来登录数据库实例的主用户名。主用户名是作为
processadmin、public 和 setupadmin 固定服务器角色成
员的 SQL Server 身份验证登录名。
主用户密码
输入一个包含 8 到 128 位可打印 ASCII 字符(的密码用不
包括 /、"、和 @)用作您的主用户密码。
API Version 2013-05-15
157
Amazon Relational Database Service 用户指南
创建运行 Microsoft SQL Server 数据库引擎的数据库实例
7.
在其他配置页面上,提供 Amazon RDS 启动 SQL Server 数据库实例所需的其他信息。下表显示示
例数据库实例的设置。指定数据库实例信息,然后单击 继续.
对于此参数...
...请执行此操作:
数据库端口
您想通过其访问数据库的特定端口。SQL Server 安装默认
为端口 1433。
可用区域
确定是否要指定特定的可用区域。
选择 VPC
确定是否要在 Virtual Private Cloud 上创建数据库实例。有
关 VPC 的更多信息,请参阅 Amazon RDS 和 Amazon
Virtual Private Cloud 服务 (p. 40)。
数据库参数组
选择数据库参数组。有关参数组的更多信息,请参阅 使用
数据库参数组 (p. 218)。
数据库安全组
选择数据库安全组。有关安全组的更多信息,请参阅 使用
数据库安全组 (p. 229)。
API Version 2013-05-15
158
Amazon Relational Database Service 用户指南
创建运行 Microsoft SQL Server 数据库引擎的数据库实例
8.
在管理选项页面上,您可以为数据库实例指定备份和维护选项。有关维护时段的更多信息,请参阅
调整首选维护时段 (p. 266)。有关备份和备份保留期的更多信息,请参阅 数据库实例备份 (p. 42)。
根据需要设定好所有设置后,单击继续。
9.
在审核页面上,核查您的数据库实例选项。如果您需要做出任何更改,单击返回返回相应页面,然后
做出必要的更正。根据需要全部设置完毕后,单击启动数据库实例。
10. 在此向导的最后一个页面上,单击关闭。
API Version 2013-05-15
159
Amazon Relational Database Service 用户指南
创建运行 Microsoft SQL Server 数据库引擎的数据库实例
11. 在 Amazon RDS 控制台中,新数据库实例显示在数据库实例列表中。数据库实例将为 creating 状
态,直到该数据库实例完成创建并可供使用。当状态更改为可用时,您即可连接到数据库实例。根据
所分配的数据库实例类和存储的不同,新实例可能需要数分钟时间才能变得可用。
CLI
创建运行 Microsoft SQL Server 数据库引擎的数据库实例
•
使用命令 rds-create-db-instance 创建数据库实例。
PROMPT>rds-create-db-instance mymsftsqlserver -s 250 -c db.m1.large -e
sqlserver-se - u <masterawsuser> -p <secretpassword> --backup-retentionperiod 3
此命令应该生成类似于下述信息的输出:
DBINSTANCE mymsftsqlserver db.m1.large sqlserver-se 250 sa creating 3 ****
n 10.50.2789 SECGROUP default active PARAMGRP default.sqlserver-se-10.5
in-sync
API
创建数据库实例
•
调用 CreateDBInstance 操作。例如,您可以使用以下参数:
• DBInstanceIdentifier =mymsftsqlserver
• Engine =sqlserver-se
• DBInstanceClass =db.m1.large
• AllocatedStorage =250
• BackupRetentionPeriod =3
• MasterUsername =<masterawsuser>
API Version 2013-05-15
160
Amazon Relational Database Service 用户指南
创建运行 Microsoft SQL Server 数据库引擎的数据库实例
• MasterUserPassword =<secretpassword>
Example
https://rds.amazonaws.com/
?Action=CreateDBInstance
&DBInstanceIdentifier=mymsftsqlserver
&DBInstanceClass=db.m1.large
&Engine=sqlserver-se
&MasterUserPassword=<secretpassword>
&BackupRetentionPeriod=3
&AllocatedStorage=250
&MasterUsername=<masterawsuser>
&Version=2012-04-02
&SignatureVersion=2
&SignatureMethod=HmacSHA256
&Timestamp=2012-04-02T19%3A36%3A35.512Z
&AWSAccessKeyId=<AWS Access Key ID>
&Signature=<Signature>
相关主题
•
•
•
•
•
数据库实例 (p. 32)
Amazon RDS 安全组 (p. 60)
连接运行 Microsoft SQL Server 数据库引擎的数据库实例 (p. 162)
数据库实例类 (p. 34)
删除数据库实例 (p. 184)
API Version 2013-05-15
161
Amazon Relational Database Service 用户指南
连接运行 Microsoft SQL Server 数据库引擎的数据库实例
连接运行 Microsoft SQL Server 数据库引擎的数据库
实例
在 Amazon RDS 预配置了您的数据库实例后,就可以使用任何标准 SQL 客户端应用程序连接该实例。
在此示例中,您将使用 Microsoft SQL Server 命令行工具与运行 Microsoft SQL Server 数据库引擎的数
据库实例连接。有关使用 SSL 连接 Microsoft SQL Server 数据库实例的信息,请参阅 对 SQL Server 数
据库实例使用 SSL (p. 155)。有关使用 Microsoft SQL Server 的更多信息,请转到 Microsoft SQL Server
网站。
Note
此示例介绍如何使用 Microsoft SQL Server Management Studio 实用工具。此实用工具是 Microsoft
SQL Server 软件发布版的一部分。要下载此实用工具的独立版本,请转到 Microsoft 下载中心 Microsoft SQL Server Management Studio Express。
Microsoft SQL Server Management Studio
使用 Microsoft SQL Server Management Studio 连接数据库实例
1.
找到您的数据库实例的 DNS 名称
a.
在 AWS Management Console 的“我的数据库实例”页上,找到运行 Microsoft SQL Server 数据
库引擎的数据库实例,选中它旁边的复选框。在下方面板的描述选项卡上,记录数据库实例的终
端节点和端口。
API Version 2013-05-15
162
Amazon Relational Database Service 用户指南
连接运行 Microsoft SQL Server 数据库引擎的数据库实例
b.
使用焕然一新的 RDS 控制台 UI 查找 DNS 名称。
在 AWS Management Console 的数据库实例页面上,选择运行 Microsoft SQL Server 数据库引
擎的数据库实例所在行的箭头。
c.
在摘要信息中,记录数据库实例的终端节点,以便在下一步骤中使用。
2.
3.
运行 Microsoft SQL Server Management Studio。
此时将显示连接到服务器对话框。
4.
在服务器类型:下拉列表框中,选择 。
5.
在服务器名称:文本字段中,输入或粘贴运行 Microsoft SQL Server 数据库引擎的数据库实例的终端
节点。用逗号替换分隔端口号的冒号。例如,服务器名称可以是:
sqlsvr-pdz.c6c8mdfntzgv0.region.rds.amazonaws.com,1433。
6.
从身份验证下拉列表框中,选择 SQL Server 。
7.
在登录: 文本框中,输入数据库实例的主用户名。
8.
9.
在密码: 文本框中输入主用户的密码输入数据库实例的主用户名。
单击连接按钮。
API Version 2013-05-15
163
Amazon Relational Database Service 用户指南
连接运行 Microsoft SQL Server 数据库引擎的数据库实例
稍等几分钟后,Microsoft SQL Server Management Studio 会连接到您的数据库实例。
10. 单击 SQL Server Management Studio 窗口左上角的新建查询按钮。
将会显示一个新的“SQL 查询”窗口。
11. 键入以下 SQL 查询:
select @@VERSION
12. 单击位于 SQL Enterprise Manager 工具栏上的 !执行按钮以运行该查询。
在输出窗口中,您会看到 Microsoft SQL Server 数据库实例返回的版本字符串。
API Version 2013-05-15
164
Amazon Relational Database Service 用户指南
连接运行 Microsoft SQL Server 数据库引擎的数据库实例
排除运行 SQL Server 的数据库实例的连接的故障
如果您在连接到 SQL Server 数据库实例时遇到问题,这些问题具有两个常见原因:您的防火墙强制的访
问规则和您授权访问数据库安全组(如果数据库实例在 VPC 内,则为 VPC 安全组)中的数据库实例的
IP 地址。如果您已使用 Microsoft SQL Server Management Studio 且已遵循上述步骤中指定的设置,但
您仍无法连接,此问题很可能是由防火墙中的传出或传入规则所致。如果无法通过您创建数据库实例时指
定的端口向外发送或接收通信,您将无法连接到数据库实例。请向您的网络管理员咨询以便确定您为数据
库实例指定的端口是否可以用于入站和出站通信。
如果您确定可以通过您在创建数据库实例时指定的端口的防火墙发送和接收通信,您需要查看以下事项。
• 无法建立与 SQL Server - Microsoft SQL Server 的连接,错误:53 - 在使用 Microsoft SQL Server
Management Studio 指定服务器名称时,必须包括端口号。例如,数据库实例的服务器名称(包括端
口号)可以是:sqlsvr-pdz.c6c8mdfntzgv0.region.rds.amazonaws.com,1433。
• 无法连接,因为目标计算机有效拒绝连接 - Microsoft SQL Server,错误:10061 - 您可以访问数据库实
例,但已拒绝连接。这通常是由用户名或密码错误所致。
相关主题
• 数据库实例 (p. 32)
• 创建运行 Microsoft SQL Server 数据库引擎的数据库实例 (p. 156)
• Amazon RDS 安全组 (p. 60)
• 删除数据库实例 (p. 184)
API Version 2013-05-15
165
Amazon Relational Database Service 用户指南
修改运行 Microsoft SQL Server 数据库引擎的数据库实例
修改运行 Microsoft SQL Server 数据库引擎的数据库
实例
AWS Management Console
要修改 SQL Server 数据库实例,请执行以下操作
1.
Sign in to the AWS Management Console and open the Amazon RDS console at
https://console.aws.amazon.com/rds/.
2.
3.
在导航窗格中,单击数据库实例。
选中要更改的数据库实例的复选框,然后单击修改。
4.
在修改数据库实例对话框中,更改所需的任何以下设置:
设置
描述
数据库实例类
在提供的列表中,单击要使用的数据库实例类。有关实例
类的信息,请参阅数据库实例类 (p. 34)。
数据库引擎版本
在提供的列表中,单击要使用的 SQL Server 数据库引擎的
版本。
多可用区域部署
如果要在多个可用区域中部署数据库实例,则单击是;否
则,单击否。
自动次要版本升级
如果希望数据库实例在发布次要引擎版本升级时自动收到
这些升级,则单击是。只有在计划的维护时段期间,才会
安装升级。
分配的存储空间
指定最初将为数据库实例分配多少存储容量(以 GB 计)。
允许的最小值为 10 GB;最大值为 1024 GB。
备份保留期
指定自动备份的保留天数。要禁用自动备份,请将此值设
置为 0。
备份窗口
设置数据库的自动备份时间范围。指定开始时间(采用通
用协调时间 (UTC))和持续时间(以小时为单位)。
维护时段
设定进行系统维护(包括升级)的时间范围。指定开始时
间(采用 UTC)和持续时间(以小时为单位)。
数据库安全组
如果有自定义数据库安全组,要将其与此数据库实例关联,
则在提供的列表中,单击所需的数据库安全组。
选项组
在提供的列表中,单击要与该数据库实例关联的选项组。
有关选项组的信息,请参阅“选项组”。
主用户密码
键入您的主用户密码。密码必须包含 8 到 30 个字母数字字
符。
5.
要立即应用更改,请选中立即应用复选框。如果清除该复选框(默认状态),将会在下一个计划的维
护时段应用更改。
6.
当所有更改如您所愿时,单击是,请修改。如果要改为取消上一步中尚未应用的任何更改,单击取
消。
API Version 2013-05-15
166
Amazon Relational Database Service 用户指南
修改运行 Microsoft SQL Server 数据库引擎的数据库实例
CLI
要修改 SQL Server 数据库实例,请执行以下操作
•
使用命令 rds-modify-db-instance。
API
要修改 SQL Server 数据库实例,请执行以下操作
•
使用 ModifyDBInstance action。
API Version 2013-05-15
167
Amazon Relational Database Service 用户指南
将数据导入 Amazon RDS 上的 SQL Server
将数据导入 Amazon RDS 上的 SQL Server
如果您要将现有的 Microsoft SQL Server 部署移动到 Amazon RDS,任务的复杂程度取决于数据库的大
小及所要传输的数据库数据元的类型。例如,如果一个数据库包含 GB 级别的数据集以及预储程序和触发
器,则其复杂程度要远高于只有几 MB 的测试数据而无触发器或预储程序的简单数据库。
SQL Server Service 的 RDS 目前不支持通过文件还原数据库,因为数据库和日志文件备份必须在 SQL
Server 实例本地存储。同样,FILESTREAM 目前也不受支持。
本主题介绍了如何将数据导入 SQL Server 数据库实例。
Topics
• 准备将数据导入 SQL Server 数据库实例 (p. 168)
• 将登录名导入 SQL Server 数据库实例 (p. 170)
• 导入数据 (p. 171)
• 清除 (p. 173)
我们建议此过程应如下所示:
1.
2.
3.
4.
5.
创建数据库实例。 (p. 156)
在将数据加载到目标数据库实例前,您应做一些准备工作 (p. 168),如禁用外键约束和数据库触发器。
您还应禁用自动备份。
查询源 SQL Server 实例,获取您要导入 (p. 170)到目标数据库实例的所有登录名。
在现有的 SQL Server 部署中,生成可从源 SQL Server 实例中获取数据的脚本,然后将脚本应用到
目标数据库实例 (p. 171)。如果存在现有脚本,可以将那些脚本应用到目标数据库实例。如果您要导
入大型数据集,脚本只能定义数据库架构;否则,脚本还可能会包括数据和其他所有的数据库数据
元。
导入数据后,撤消先前所做的所有准备工作 (p. 173):重新启用外键约束和数据库触发器,将恢复模
式切换到其原始状态,并重新启用自动备份。
Note
适用于 SQL Server 的 Amazon RDS 目前尚不支持将数据导入 msdb 数据库。Amazon RDS 目
前尚不支持使用 msdb(如数据库邮件和复制)的 SQL Server 功能。
准备将数据导入 SQL Server 数据库实例
在将数据导入 SQL Server 数据库实例前,我们建议您采用以下最佳做法:
• 阻止应用程序访问目标数据库实例。
• 创建目标数据库快照。
• 禁用目标数据库的自动备份。
• 禁用外键约束(如适用)。
• 禁用数据库触发器(如适用)。
阻止应用程序访问目标数据库实例
如果您在导入数据时阻止应用程序访问数据库实例,数据传输速度会更快。此外,您无需担心在加载数据
时会因其他应用程序无法写入到数据库实例而引起冲突。如果因出现问题而必须要回滚到之前的数据库快
照,您只会丢失已导入数据的更改,在解决问题后您可以再次导入这些更改。
API Version 2013-05-15
168
Amazon Relational Database Service 用户指南
将数据导入 Amazon RDS 上的 SQL Server
有关控制数据库实例访问权限的信息,请参阅 使用数据库安全组 (p. 229)。
创建数据库快照
如果目标数据库已存有数据,我们建议您先为数据库拍摄快照,然后再导入数据。如果数据导入过程出现
问题或您想要放弃更改,您可以使用此快照将数据库还原到先前的状态。有关数据库快照的信息,请参阅
创建数据库快照 (p. 202)。
Note
拍摄快照时,数据库的 I/O 操作会暂停几分钟,直到备份过程完成。
禁用自动备份
在导入数据时,禁用目标数据库实例的自动备份会提高导入性能。但是,您需要考虑到以下问题。执行时
间点恢复时需要使用自动备份,因此,如果禁用自动备份,在导入数据期间您无法将数据库还原到指定的
时间点。此外,系统会清除先前在数据库实例上创建的所有自动备份。但您仍可使用先前的快照来恢复数
据库,且您拍摄的所有快照仍然可用。有关自动备份的信息,请参阅 使用自动备份 (p. 199)。
禁用外键约束
如果需要禁用外键约束,可以使用以下脚本。
--Disable foreign keys on all tables
DECLARE @table_name SYSNAME;
DECLARE @cmd NVARCHAR(MAX);
DECLARE table_cursor CURSOR FOR SELECT name FROM sys.tables;
OPEN table_cursor;
FETCH NEXT FROM table_cursor INTO @table_name;
WHILE @@FETCH_STATUS = 0 BEGIN
SELECT @cmd = 'ALTER TABLE&nbsp;'+QUOTENAME(@table_name)+' NOCHECK CONSTRAINT
ALL';
EXEC (@cmd);
FETCH NEXT FROM table_cursor INTO @table_name;
END
CLOSE table_cursor;
DEALLOCATE table_cursor;
GO
禁用数据库触发器
如果需要禁用数据库触发器,可以使用以下脚本。
--Disable triggers on all tables
DECLARE @enable BIT = 0;
DECLARE @trigger SYSNAME;
API Version 2013-05-15
169
Amazon Relational Database Service 用户指南
将数据导入 Amazon RDS 上的 SQL Server
DECLARE @table SYSNAME;
DECLARE @cmd NVARCHAR(MAX);
DECLARE trigger_cursor CURSOR FOR SELECT trigger_object.name trigger_name,
table_object.name table_name
FROM sysobjects trigger_object
JOIN sysobjects table_object ON trigger_object.parent_obj = table_object.id
WHERE trigger_object.type = 'TR';
OPEN trigger_cursor;
FETCH NEXT FROM trigger_cursor INTO @trigger, @table;
WHILE @@FETCH_STATUS = 0 BEGIN
IF @enable = 1
SET @cmd = 'ENABLE ';
ELSE
SET @cmd = 'DISABLE ';
SET @cmd = @cmd + ' TRIGGER dbo.'+QUOTENAME(@trigger)+' ON dbo.'+QUOTE
NAME(@table)+' ';
EXEC (@cmd);
FETCH NEXT FROM trigger_cursor INTO @trigger, @table;
END
CLOSE trigger_cursor;
DEALLOCATE trigger_cursor;
GO
将登录名导入 SQL Server 数据库实例
SQL Server 将登录名和密码存储在 master 数据库中。因为 Amazon RDS 未授予访问 master 数据库
的权限,所以您无法直接将登录名和密码导入目标数据库实例。相反,您必须在源 SQL Server 实例上查
询 master 数据库并生成包括以下信息的 DDL 文件:您要添加到目标数据库实例的所有登录名和密码,
及您要传输的角色成员资格和权限。
有关查询 master 数据库的信息,请转到 Microsoft 知识库上的如何在 SQL Server 2005 和 SQL Server
2008 的实例之间传输登录名和密码。
该脚本会输出可在目标数据库实例上运行的另一脚本。Amazon RDS 目前仅支持 SQL Server 身份验证。
尝试使用 Windows 身份验证登录将会失败。您可以忽略这些失败情况,也可以编辑 Microsoft 脚本,使
该脚本只包含使用 SQL Server 身份验证的登录名。如果知识库文章中的脚本如下所示:
p.type IN
请改用以下信息:
p.type = 'U'
API Version 2013-05-15
170
Amazon Relational Database Service 用户指南
将数据导入 Amazon RDS 上的 SQL Server
导入数据
Microsoft SQL Server Management Studio 是一种包含在所有 Microsoft SQL Server 版本(Express 版除
外)中的图像化 SQL Server 客户端。您可以从 Microsoft 上免费下载 SQL Server Management Studio
Express。
Note
SQL Server Management Studio 应用程序只能在 Windows 环境中运行。
SQL Server Management Studio 包括有助于将数据导入 SQL Server 数据库实例的以下工具:
• 生成和发布脚本向导
• 导入和导出向导
• 批量复制功能
生成和发布脚本向导
生成和发布脚本向导可创建一个包含数据库架构或数据本身,或兼具两者的脚本。如果您在本地 SQL
Server 部署中为数据库生成了脚本,则可以运行此脚本,从而将脚本中包含的信息传输到 Amazon RDS
数据库实例。
Note
对于 1 GB 或更大的数据库,更有效的方法是,仅为数据库架构编写脚本,然后使用 SQL Server
的导入和导出向导或批量复制功能传输数据。
有关生成和发布脚本向导的更多信息,请参阅 Microsoft SQL Server 文档。
在此向导中,请特别注意设置脚本选项页面中的高级选项,确保已选中脚本需要包含的所有选项。例如,
默认情况下,脚本不包含数据库触发器。
生成并保存脚本后,您可以使用 SQL Server Management Studio 连接数据库实例,然后运行脚本。
导入和导出向导
导入和导出向导工具可创建一种特殊的集成服务包,您可以使用此集成服务包将数据从本地 SQL Server
数据库复制到目标数据库实例。此向导可筛选要将哪些表格甚至是表格内的哪些元组复制到目标数据库实
例。
Note
导入和导出向导用于大型数据集时非常有效地,但是就从本地部署中远程导出数据而言,这可能
不是最快的方式。要采用更快的方式,建议您考虑 SQL Server 批量复制功能。
有关导入和导出向导的更多信息,请转到 Microsoft SQL Server 文档
在此向导中,请在选择目标页面上执行以下操作:
• 在服务器名称框中,输入数据库实例的终端节点名称。
• 要进入服务器身份验证模式,请单击使用 SQL Server 身份验证。
• 在用户名和密码下,输入您为数据库实例创建的主用户证书。
API Version 2013-05-15
171
Amazon Relational Database Service 用户指南
将数据导入 Amazon RDS 上的 SQL Server
批量复制
SQL Server 批量复制功能是一种将数据从源数据库复制到您的数据库实例的高效工具。批量复制可将指
定的数据写入一个数据文件,如 ASCII 文件。然后您可以再次运行批量复制,将此文件内容写入目标数
据库实例。
本部分使用了 bcp 实用工具,所有版本的 SQL Server 都包含此工具。有关批量导入和导出操作的更多信
息,请转到 Microsoft SQL Server 文档。
Note
使用批量复制前,您必须先将数据库架构导入目标数据库实例。本主题前面介绍的生成和发布脚
本向导这一工具非常适合用于此操作。
以下命令用于连接本地 SQL Server 实例,并在您现有 SQL Server 部署的 C:\ 根目录中生成指定表的制
表符定界文件。指定表时需使用完全限定名,文本文件的名称与复制的表相同。
PROMPT> bcp dbname.schema_name.table_name out C:\table_name.txt -n -S localhost
-U username -P password -b 10000
其中:
• -n 指定,批量复制将使用待复制数据的本机数据类型。
• -S 指定 bcp 实用工具要连接的 SQL Server 实例。
• -U 指定 SQL Server 实例登录账户的用户名。
• -P 为 -U 指定的用户指定密码。
• -b 指定每批导入数据的行数。
有关 bcp 实用工具命令行语法的完整说明,请转到 Microsoft SQL Server 文档。
例如,假设某一数据库名为 store,使用了默认架构 dbo 且包含一个名为 customers 的表。密码为
insecure 的用户账户 admin 要将 customers 表中共计 10,000 行的数据复制到名为 customers.txt
的文件中。
PROMPT> bcp store.dbo.customers out C:\customers.txt -n -S localhost -U admin
-P insecure -b 10000
生成数据文件后,如果您已在目标数据库实例上创建了数据库和架构,则可以使用类似的命令将数据上传
到数据库实例。在此情况下,您需要使用 in 参数指定输入文件,而不是使用 out 指定输出文件。您需要
指定数据库实例的终端节点,而不是使用本地主机指定本地 SQL Server 实例。如果您使用的端口不是
1433 端口,也需要执行该指定操作。输入用户名和密码时,需使用数据库实例的主用户名和密码。语法
如下:
PROMPT> bcp dbname.schema_name.table_name in C:\table_name.txt -n -S end
point,port -U master_user_name -P master_user_password -b 10000
API Version 2013-05-15
172
Amazon Relational Database Service 用户指南
将数据导入 Amazon RDS 上的 SQL Server
为继续上述示例,我们假设主用户名是 admin,密码为 insecure。数据库实例的终端节点是
rds.ckz2kqd4qsn1.us-east-1.rds.amazonaws.com,您将使用端口 4080。命令如下:
PROMPT> bcp store.dbo.customers in C:\customers.txt -n -S rds.ckz2kqd4qsn1.useast-1.rds.amazon.com,4080 -U admin -P insecure -b 10000
清除
如果您在准备将数据导入数据库实例时遵循了本主题前面介绍的最佳做法,则现在您需要执行以下任务:
• 授予应用程序访问目标数据库实例的权限。
• 启用目标数据库实例的自动备份。
• 启用外键约束。
• 启用数据库触发器。
授予应用程序访问目标数据库实例的权限
完成数据导入后,您可以向导入期间受阻的应用程序授予访问数据库实例的权限。有关控制数据库实例访
问权限的信息,请参阅 使用数据库安全组 (p. 229)。
启用目标数据库实例的自动备份
有关自动备份的信息,请参阅 使用自动备份 (p. 199)。
启用外键约束
如果您之前禁用了外键约束,现在可通过以下脚本重新启用:
--Enable foreign keys on all tables
DECLARE @table_name SYSNAME;
DECLARE @cmd NVARCHAR(MAX);
DECLARE table_cursor CURSOR FOR SELECT name FROM sys.tables;
OPEN table_cursor;
FETCH NEXT FROM table_cursor INTO @table_name;
WHILE @@FETCH_STATUS = 0 BEGIN
SELECT @cmd = 'ALTER TABLE '+QUOTENAME(@table_name)+' CHECK CONSTRAINT ALL';
EXEC (@cmd);
FETCH NEXT FROM table_cursor INTO @table_name;
END
CLOSE table_cursor;
DEALLOCATE table_cursor;
启用数据库触发器
如果您之前禁用了数据库触发器,现在可通过以下脚本重新启用:
API Version 2013-05-15
173
Amazon Relational Database Service 用户指南
将数据导入 Amazon RDS 上的 SQL Server
--Enable triggers on all tables
DECLARE @enable BIT = 1;
DECLARE @trigger SYSNAME;
DECLARE @table SYSNAME;
DECLARE @cmd NVARCHAR(MAX);
DECLARE trigger_cursor CURSOR FOR SELECT trigger_object.name trigger_name,
table_object.name table_name
FROM sysobjects trigger_object
JOIN sysobjects table_object ON trigger_object.parent_obj = table_object.id
WHERE trigger_object.type = 'TR';
OPEN trigger_cursor;
FETCH NEXT FROM trigger_cursor INTO @trigger, @table;
WHILE @@FETCH_STATUS = 0 BEGIN
IF @enable = 1
SET @cmd = 'ENABLE ';
ELSE
SET @cmd = 'DISABLE ';
SET @cmd = @cmd + ' TRIGGER dbo.'+QUOTENAME(@trigger)+' ON dbo.'+QUOTE
NAME(@table)+' ';
EXEC (@cmd);
FETCH NEXT FROM trigger_cursor INTO @trigger, @table;
END
CLOSE trigger_cursor;
DEALLOCATE trigger_cursor;
API Version 2013-05-15
174
Amazon Relational Database Service 用户指南
附录:Microsoft SQL Server 的数据库管理员常见任务
附录:Microsoft SQL Server 的数据库管理员常见
任务
为了让用户获得托管式服务体验,Amazon RDS 未提供对数据库实例的 Shell 访问权限,并且限制对需要
高级特权的某些系统程序和表的访问权限。本部分介绍了特定的 Amazon RDS 实施。对于数据库管理员
而言,这是一些常见的运行 Microsoft SQL Server 数据库引擎的数据库实例任务。
Note
当使用 SQL Server 数据库实例时,您可以运行脚本修改新创建的数据库,但不能修改 [model]
数据库(即,用作新数据库模型的数据库)。
确定恢复模式
在 RDS 中,恢复模式、保留期和数据库状态是相关联的。更改其中一个可能会影响其他设置。例如:
• 在启用备份保留的同时,将数据库的恢复模式更改为“Simple”,会在此该设置更改完成约五分钟后导致
RDS 将恢复模式设为“Full”。
• 将备份保留设置为“0”天会导致 RDS 将恢复模式设置为“Simple”。
• 在将备份保留设置为“0”天的同时,将数据库的恢复模式从“Simple”更改为任何其他选项,会致使 RDS
将恢复模式设置回“Simple”。
• 将数据库设置为“Offline”将会使该数据库保持“Offline”状态。
SQL Server 的排序规则和字符集
当创建 SQL Server 数据库实例时,Amazon RDS 会创建默认的服务器字符集排序规则。此默认服务器排
序规则当前为“英语(美国)”,更准确地说是 SQL_Latin1_General_CP1_CI_AS。当创建新数据库或数据库
对象时,您可以通过覆盖排序规则在数据库、表或列级别更改默认排序规则。例如,您可以将默认排序规
则 SQL_Latin1_General_CP1_CI_AS 更改为 Japanese_CI_AS 以便获取日语排序规则支持。如果需要,
甚至可以对查询中的参数进行类型转换以便使用不同的排序规则。
例如,以下查询会将新创建的数据库的默认排序规则更改为 Japanese_CI_AS:
CREATE TABLE [dbo].[Account] ( [AccountID] [nvarchar](10) NOT NULL, [AccountName]
[nvarchar](100) COLLATE Japanese_CI_AS NOT NULL ) ON [PRIMARY];
SQL Server 数据库引擎通过内置 NCHAR、NVARCHAR 和 NTEXT 数据类型支持 Unicode。例如,如果
您需要 CJK 支持,请对字符存储使用这些 Unicode 数据类型,并在创建数据库和表时覆盖默认的服务器
排序规则。下面列出了一些由 Microsoft 提供的链接,其中包括 SQL Server 的排序规则和 Unicode 支持:
• 使用排序规则
• 排序规则和国际术语
• 使用 SQL Server 排序规则
• 数据库和数据库引擎应用程序的国际注意事项
API Version 2013-05-15
175
Amazon Relational Database Service 用户指南
将数据库从脱机状态转换为联机状态
将数据库从脱机状态转换为联机状态
SQL Server 方法
Amazon RDS 方法
ALTER DATABASE name SET ONLINE;
EXEC rdsadmin.dbo.rds_set_database_online name
使用 SQL Server Tuning Advisor 分析数据库实例上的
数据库工作负载
Database Engine Tuning Advisor 是 Microsoft 提供的客户端应用程序,用于分析数据库工作负载,并根
据您运行的查询种类对 SQL Server 数据库提供最佳索引集建议。像 SQL Server Management Studio 一
样,Tuning Advisor 可在连接到 RDS 数据库实例的客户端计算机上运行,且该 RDS 数据库实例运行的
是 SQL Server。客户端计算机可以是您自有网络内的本地计算机,也可以是在您的 RDS 数据库实例所
在地区中运行的 Amazon EC2 Windows 实例。
本部分介绍如何捕获工作负载供 Tuning Advisor 分析。对于捕获工作负载,这是一个首选过程,因为 RDS
限制了主机对 SQL Server 实例的访问。有关 Tuning Advisor 的完整文档可在 MSDN 上查阅。
要使用 Tuning Advisor,必须为其提供所谓的工作负载。工作负载是一系列 Transact–SQL 语句,它们是
针对您要优化的一个或多个数据库上执行的。在优化数据库时,Database Engine Tuning Advisor 会以工
作负载输入的形式使用跟踪文件、跟踪表、Transact–SQL 脚本或 XML 文件。在使用 RDS 时,工作负载
可能是客户端计算机上的文件,也可能是客户端计算机可访问的 RDS SQL Server 上的数据库表。该文
件或表必须包含对您要优化的数据库进行查询的命令,并且这些命令必须是适合重新执行的格式。
为了让 Tuning Advisor 实现最大的效率,工作负载应尽可能真实。您可以通过对数据库实例执行跟踪来
生成工作负载文件或表。运行跟踪时,可以在数据库实例上模拟负载,也可以用正常负载运行应用程序。
跟踪有两种类型:客户端和服务器端。客户端跟踪的设置比较容易,并且可以在 SQL Server Profiler 中
实时观察捕获到的跟踪事件。服务器端跟踪的设置比较复杂,并需要编写一些 Transact–SQL 脚本。此
外,因为跟踪会写入 RDS 数据库实例上的文件中,所以跟踪会占用存储空间。请务必查清正在运行的服
务器端跟踪所占用的存储空间大小,这点非常重要;因为数据库实例可能会进入存储已满状态,从而因存
储空间不足而不再可用。
对于客户端跟踪,在 SQL Server Profiler 捕获到足量的跟踪数据后,您可以通过以下方式生成工作负载
文件:将跟踪保存到本地计算机上的文件中,或保存到客户端计算机可用的数据库实例上的数据库表中。
使用客户端跟踪的主要缺点是,在重负载情况下,跟踪可能无法捕获到所有查询。这可能会降低 Database
Engine Tuning Advisor 执行的分析的有效性。如果您需要在重负载下运行跟踪并要确保可捕获到跟踪会
话期间的所有查询,则应使用服务器端跟踪。
对于服务器端跟踪,您必须将数据库实例上的跟踪文件存储到合适的工作负载文件,或您可以在完成跟踪
后将跟踪保存到数据库实例上的表中。您可以使用 SQL Server Profiler 将跟踪保存到本地计算机上的文
件,或从数据库实例的跟踪表中读取 Tuning Advisor。
在 SQL Server 数据库实例上运行客户端跟踪
在 SQL Server 数据库实例上运行客户端跟踪
1.
启动 SQL Server Profiler。此工具安装在 SQL Server 实例文件夹的“性能工具”文件夹内。要启动客
户端跟踪,您必须加载或定义一个跟踪定义模板。
2.
在 SQL Server Profiler“文件”菜单中,单击新建跟踪。在连接到服务器对话框中,输入要运行跟踪的
数据库的数据库实例终端节点、端口、主用户名和密码。
3.
在跟踪属性对话框中,输入跟踪名称并选择跟踪定义模板。应用程序附带有默认模板 TSQL_Replay。
您可以通过编辑此模板来定义跟踪。在跟踪属性对话框的事件选择选项卡下编辑事件和事件信息。有
关跟踪定义模板及使用 SQL Server Profiler 指定客户端跟踪的更多信息,请参阅 MSDN 中的文档。
API Version 2013-05-15
176
Amazon Relational Database Service 用户指南
使用 SQL Server Tuning Advisor 分析数据库实例上的数据
库工作负载
4.
5.
启动客户端跟踪并实时查看在数据库实例上执行的 SQL 查询。
完成跟踪后,在“文件”菜单中选择停止跟踪。在数据库实例上将结果另存为文件或跟踪表。
在 SQL Server 数据库实例上运行服务器端跟踪
通过编写脚本创建服务器端跟踪这一过程可能较为复杂,且已超出本文档的讨论范围。本部分包含一些您
可以用作示例的示例脚本。与客户端跟踪一样,服务器端跟踪的目的是,创建可通过 Database Engine
Tuning Advisor 打开的工作负载文件或跟踪表。
下面显示的是一个简化的示例脚本,用于启动服务器端跟踪并将详细信息捕获到工作负载文件。跟踪最初
会将信息保存到 D:\RDSDBDATA\Log 目录中的 RDSTrace.trc 文件,且会每 100 MB 转换一个跟踪文件,
这样,后续的跟踪文件命会依次命名为 RDSTrace_1.trc、RDSTrace_2.trc 等。
DECLARE @file_name NVARCHAR(245) = 'D:\RDSDBDATA\Log\RDSTrace'; DECLARE
@max_file_size BIGINT = 100; DECLARE @on BIT = 1 DECLARE @rc INT DECLARE @traceid
INT EXEC @rc = sp_trace_create @traceid OUTPUT, 2, @file_name, @max_file_size
IF (@rc != 0) BEGIN EXEC sp_trace_setevent @traceid, 10, 1, @on EXEC
sp_trace_setevent @traceid, 10, 2, @on EXEC sp_trace_setevent @traceid, 10, 3,
@on … EXEC sp_trace_setfilter @traceid, 10, 0, 7, N'SQL Profiler' EXEC
sp_trace_setstatus @traceid, 1 END
以下示例是停止跟踪的脚本。请注意,以前的脚本所创建的跟踪会继续运行,直到您显式地停止跟踪或磁
盘空间不足以运行此进程为止。
DECLARE @traceid INT SELECT @traceid = traceid FROM ::fn_trace_getinfo(de
fault)WHERE property = 5 AND value = 1 AND traceid <> 1 IF @traceid IS NOT
NULL BEGIN EXEC sp_trace_setstatus @traceid, 0 EXEC sp_trace_setstatus @traceid,
2 END
您可以将服务器端跟踪结果保存到数据库表,然后借助 fn_trace_gettable 函数,将数据库表用作 Tuning
Advisor 的工作负载。以下命令会将 D:\rdsdbdata\Log 目录(包括 RDSTrace_1.trc 等所有滚动更新文件)
中名为 RDSTrace.trc 的所有文件的结果加载到当前数据库中名为 RDSTrace 的表中:
SELECT * INTO RDSTrace FROM fn_trace_gettable('D:\rdsdbdata\Log\RDSTrace.trc',
default);
要将特定滚动更新文件保存到表中,例如 RDSTrace_1.trc 文件,请为 fn_trace_gettable 指定滚动更新文
件的名称和替换值 1,以代替默认值这一最后的参数。
SELECT * INTO RDSTrace_1 FROM fn_trace_gettable('D:\rdsdbdata\Log\RD
STrace_1.trc', 1);
使用跟踪运行 Tuning Advisor
创建跟踪后,无论是作为本地文件还是数据库表,都可以针对您的 RDS 实例运行 Tuning Advisor。Microsoft
提供了关于如何使用 Database Engine Tuning Advisor 的文档,详见 MSDN。借助 RDS 使用 Tuning
API Version 2013-05-15
177
Amazon Relational Database Service 用户指南
使用 SQL Server Agent
Advisor 的进程与使用独立远程 SQL Server 实例的进程相同。您可以在客户端计算机上使用 Tuning
Advisor UI,或者使用命令行 Dta.exe 实用工具。在这两种情况下,您都必须使用数据库实例的终端节点
连接 RDS 数据库实例,并在使用 Tuning Advisor 时提供主用户名和主用户密码。
以下代码示例演示了针对 RDS 数据库实例(使用终端节点
dta.cnazcmklsdei.us-east-1.rds.amazonaws.com)使用 dta.exe 命令行实用工具的方法。此示
例包含主用户名 admin 和主用户密码 test,要优化的示例数据库名为 RDSDTA,并且输入工作负载是本
地计算机上名为 C:\RDSTrace.trc 的跟踪文件。此外,示例命令行代码会指定名为 RDSTrace1 的跟
踪会话,并指定将输出文件放置到本地计算机,其中名为 RDSTrace.sql 的输出文件为 SQL 输出脚本,
名为 RDSTrace.txt 的输出文件为结果文件,名为 RDSTrace.xml 的输出文件为分析的 XML 文件。此
外,还有一个在名为 RDSTraceErrors 的 RDSDTA 数据库上指定的错误表。
dta -S dta.cnazcmklsdei.us-east-1.rds.amazonaws.com -U admin P test -D RDSDTA -if C:\RDSTrace.trc -s RDSTrace1 -of C:\ RDSTrace.sql -or C:\
RDSTrace.txt -ox C:\ RDSTrace.xml -e RDSDTA.dbo.RDSTraceErrors
以下为相同的示例命令行代码,只有下面一点不同:即输入工作负载是 RDSDTA 数据库上名为 RDSTrace
的远程 RDS 实例的一个相关表。
dta -S dta.cnazcmklsdei.us-east-1.rds.amazonaws.com -U admin -P test -D RDSDTA
-it RDSDTA.dbo.RDSTrace -s RDSTrace1 -of C:\ RDSTrace.sql -or C:\ RDSTrace.txt
-ox C:\ RDSTrace.xml -e RDSDTA.dbo.RDSTraceErrors
有关 dta 实用工具命令行参数的完整列表,请转到 MSDN。
使用 SQL Server Agent
借助 Amazon RDS,您可以在运行 SQL Server Standard、Web 版或 Enterprise 版的数据库实例上使用
SQL Server Agent。SQL Server Agent 是一项 Microsoft Windows 服务,可执行计划的管理任务,即所
谓的作业。您可以使用 SQL Server Agent 运行 T–SQL 作业,以在 SQL Server 数据库实例中重新生成索
引、运行损坏检查并汇集数据。
SQL Server Agent 可以按照时间表运行作业,对特定事件或需求做出响应。有关更多信息,请参阅 SQL
Server 文档中的 SQL Server Agent。您应该避免在数据库实例的维护和备份窗口期间安排作业运行,因
为这些由 AWS 启动的维护和备份过程可能会中断作业或导致其被取消。因为 Amazon RDS 会备份数据
库实例,所以,您将无法使用 SQL Server Agent 创建备份。
因为 SQL Server Agent 在数据库实例中的托管主机上运行,所以存在一些不受支持的操作。不支持使用
ActiveX、Windows 命令外壳或 Windows PowerShell 运行复制作业和命令行脚本。此外,不能手动启
动、停止或重启 SQL Server Agent,因为其操作由主机进行管理。无法从数据库实例获取通过 SQL Server
Agent 发出的电子邮件通知。
创建 SQL Server 数据库实例时,主用户名会以 SQLAgentUserRole 角色登记。要允许其他登录名/用户
使用 SQL Server Agent,必须以主用户的身份登录并执行以下操作。
1. 使用 CREATE LOGIN 命令创建另一个服务器级别的登录名。
2. 使用 CREATE USER 命令在 msdb 内创建一个用户,然后将此用户链接到上一步骤中创建的登录名。
3. 使用 sp_addrolemember 系统存储程序将用户添加到 SQLAgentUserRole。
例如,假设您的主用户名为 myawsmaster,并且您要向一个用户授予 SQL Server Agent 访问权限,此
用户的用户名为 theirname,密码为 theirpassword。您可以使用主用户名登录,然后运行以下命令。
API Version 2013-05-15
178
Amazon Relational Database Service 用户指南
使用 SQL Server Agent
--Initially set context to master database USE [master]; GO --Create a serverlevel login named theirname with password theirpassword CREATE LOGIN [theirname]
WITH PASSWORD = 'theirpassword'; GO --Set context to msdb database USE [msdb];
GO --Create a database user named theirname and link it to server-level login
theirname CREATE USER [theirname] FOR LOGIN [theirname]; GO --Added database
user theirname in msdb to SQLAgentUserRole in msdb EXEC sp_addrolemember
[SQLAgentUserRole], [theirname];
不能使用 SQL Server 管理控制台中的 UI 删除 SQL Server Agent 作业。要删除 SQL Server Agent 作业,
请运行以下 T–SQL 语句。
EXEC msdb..sp_delete_job @job_name = '<job-name>';
查看 SQL Server Agent 日志
要查看 SQL Server Agent 日志,您可以使用 RDS 控制台。有关查看日志文件的信息,请参阅 查看和列
出数据库日志文件 (p. 293)。此外,您还可以使用存储程序 rdsadmin.dbo.rds_read_error_log 查看
下述代理日志。
CREATE PROCEDURE [dbo].[rds_read_error_log] @index INT = 0, @type INT = 1,
@search_str1 VARCHAR(255) = NULL, @search_str2 VARCHAR(255) = NULL, @start_time
DATETIME = NULL, @end_time DATETIME = NULL, @sort_order NVARCHAR(4) = N'asc'
调用 rdsadmin.dbo.rds_read_error_log 存储程序时,两个参数很重要:
• @index 参数表示 Amazon RDS 将读取的日志。默认值 0 表示使用当前日志。值 1 表示使用以前的交
替日志。
• @type 参数表示读取的日志类型。默认值 1 表示使用 SQL Server 错误日志。值 2 表示使用 SQL Server
Agent 日志。所有其他参数都与搜索和排序结果相关,可将其以默认值保存。
例如,要读取当前的 SQL Server Agent 日志,您可以执行以下语句,其中 0 表示当前日志,2 表示 SQL
Server Agent 日志。
EXEC rdsadmin..rds_read_error_log 0, 2;
您可以指定 dbo 架构名称并列出参数,但这并非必要。以下三个语句与上一个示例中的语句等效。
EXEC rdsadmin.dbo.rds_read_error_log 0, 2; EXEC rdsadmin..rds_read_error_log
@index = 0, @type = 2; EXEC rdsadmin.dbo.rds_read_error_log @index = 0, @type
API Version 2013-05-15
179
Amazon Relational Database Service 用户指南
使用 SQL Server Agent
= 2;
要读取与当前 SQL Server Agent 日志相关的最后一个交替日志,可以执行以下语句,其中 1 表示上一个
日志,2 表示 SQL Server Agent 日志。
EXEC rdsadmin..rds_read_error_log 1, 2;
如果不存在交替日志,例如,如果从未交替过 SQL Server Agent 日志,那么此语句将返回以下错误消
息。
Msg 22004, Level 16, State 1, Line 0 xp_readerrorlog() returned error 2, 'The
system cannot find the file specified.'
Note
要查看 SQL Server Management Studio 中单个 SQL Server Agent 作业的历史记录,需要打开
Object Explorer,右键单击此作业,然后单击查看历史记录。
API Version 2013-05-15
180
Amazon Relational Database Service 用户指南
更改数据库实例
所有 Amazon RDS 数据库引擎的常用
任务
Topics
• 更改数据库实例 (p. 181)
• 备份和还原数据库实例 (p. 198)
• 使用 Amazon RDS 功能 (p. 209)
您需要对数据库实例执行的大多数任务在所有数据库引擎上的执行方式都是相同的。创建数据库实例、连
接到数据库实例和将数据导入到数据库实例均为特定于每个数据库引擎的任务。有关在数据库实例上针对
特定数据库引擎执行这些任务的信息,请参阅以下主题。
本部分介绍了您最有可能使用的 Amazon RDS 操作并提供了程序指令和示例。
更改数据库实例
此部分演示如何更改数据库实例。
Topics
• 重命名数据库实例 (p. 181)
• 删除数据库实例 (p. 184)
• 重启数据库实例 (p. 187)
• 为 Amazon RDS 资源加标签 (p. 188)
• 升级数据库实例 (p. 196)
重命名数据库实例
可使用 AWS Management Console、rds-modify-db-instance 命令或 ModifyDBInstance API 操作重命名
数据库实例。重命名数据库实例影响深远;下面列出了在重命名数据库实例之前应了解的情况。
• 重命名数据库实例时,该数据库实例的终端节点将更改,因为 URL 中含有分配给该数据库实例的名称。
您应当始终将流量从旧的 URL 重定向到新的。
API Version 2013-05-15
181
Amazon Relational Database Service 用户指南
重命名数据库实例
• 重命名数据库实例时,将立即删除该数据库实例使用的旧 DNS 名称,但该名称可能在缓存中保留几分
钟。重命名的数据库实例的新 DNS 名称大约在 10 分钟后生效。直到新名称生效后,重命名的数据库
实例才可用。
• 重命名实例时,不能使用现有的数据库实例名称。
• 重命名数据库实例后,所有与该实例关联的只读副本仍与该实例关联。例如,假设有一个数据库实例为
生产数据库提供服务,并且该实例关联了若干只读副本。如果重命名该数据库实例,然后在生产环境中
将其替换为一个数据库快照,则重命名的数据库实例将仍有这些只读副本与其关联。
• 如果重新使用某个数据库实例名称,则与该数据库实例名称关联的指标和事件将保持不变。例如,如果
提升一个只读副本,然后将其重命名为以前主实例的名称,则与该主实例关联的事件和指标将与重命名
的实例关联。
• 无论是否重命名,数据库实例标签会始终与数据库实例在一起。
• 重命名的数据库实例保留数据库快照。
重命名数据库实例最常见的原因是要提升只读副本或从数据库快照或 PITR 还原数据。通过重命名数据
库,不必更改任何引用数据库实例的应用程序代码,即可替换数据库实例。在这些情况下,请执行以下操
作:
1. 停止所有发往主数据库实例的流量。其中可能涉及到重定向访问数据库实例上数据库的流量,或要用
于阻止流量访问数据库实例上数据库的其他方法。
2. 将主数据库实例重命名为一个表示它不再是主数据库实例的名称,如本主题下文所述。
3. 通过从数据库快照还原或通过提升只读副本,新建一个主数据库实例,然后将这个新实例命名为以前
主数据库实例的名称。
4. 将任何只读副本与新的主数据库实例关联。
如果删除旧主数据库实例,则要负责删除旧主实例中任何不再需要的数据库快照。有关提升只读副本的信
息,请参阅使用只读副本 (p. 91)。
AWS Management Console
要重命名数据库实例,请执行以下操作:
1.
2.
3.
4.
5.
Sign in to the AWS Management Console and open the Amazon RDS console at
https://console.aws.amazon.com/rds/.
在导航窗格中,选择数据库实例。
选中要重命名的数据库实例旁的复选框。
从实例操作下拉菜单中,选择修改。
在数据库实例标识符文本框中,输入一个新名称。选中立即应用复选框,然后单击继续。
6.
单击修改数据库实例以完成更改。
CLI
要重命名数据库实例,请执行以下操作:
•
使用命令 rds-modify-db-instance 并提供旧的 DBInstanceIdentifier 值,然后使用 -n 开
关配合新数据库实例的名称。语法如下:
PROMPT>rds-modify-db-instance DBInstanceIdentifier -n NewDBInstanceIdentifier
API Version 2013-05-15
182
Amazon Relational Database Service 用户指南
重命名数据库实例
API
要重命名数据库实例,请执行以下操作:
•
调用带有以下参数的 ModifyDBInstance 命令:
• NewDBInstanceIdentifier = 新的实例名称
相关主题
• 提升要成为数据库实例的只读副本 (p. 94)
• 数据库实例 (p. 32)
API Version 2013-05-15
183
Amazon Relational Database Service 用户指南
删除数据库实例
删除数据库实例
要删除数据库实例,您必须指定实例名称并指定是否要为数据库实例拍摄最终的数据库快照。如果您选择
不创建最终数据库快照,以后就无法将数据库实例还原到它的最终状态。当您删除数据库实例时,会删除
所有的自动备份,并且无法恢复。此操作不会删除实例的手动数据库快照。
如果要删除的数据库实例有一个只读副本,应提升该只读副本或将其删除。有关提升只读副本的更多信
息,请参阅 提升要成为数据库实例的只读副本 (p. 94)
在以下示例中,介绍了如何删除一个数据库实例,包括有最终数据库快照和无最终数据库快照两种情况。
删除无最终快照的数据库实例
如果要快速删除数据库实例,可跳过创建最终数据库快照的步骤。请注意,当您删除数据库实例时,会删
除所有的自动备份,并且无法恢复。此操作不会删除手动快照。
AWS Management Console
删除无最终数据库快照的数据库实例
1.
2.
3.
4.
5.
Sign in to the AWS Management Console and open the Amazon RDS console at
https://console.aws.amazon.com/rds/.
在数据库实例列表中,选中要删除的数据库实例旁边的复选框。
单击实例操作,然后从上下文菜单中选择删除。
在创建最终快照? 下拉列表框中选择 No。
单击是,删除。
CLI
删除无最终数据库快照的数据库实例
•
使用命令 rds-delete-db-instance 删除实例。
PROMPT>rds-delete-db-instance mydbinstance mydbinstance --skip-final-snapshot
API
删除无最终数据库快照的数据库实例
•
调用带有下列参数的 DeleteDBInstance 命令:
• DBInstanceIdentifier =mydbinstance
• SkipFinalSnapshot =true
API Version 2013-05-15
184
Amazon Relational Database Service 用户指南
删除数据库实例
Example
https://rds.amazonaws.com/
?Action=DeleteDBInstance
&DBInstanceIdentifier=mydbinstance
&SkipFinalSnapshot=true
&SignatureVersion=2
&SignatureMethod=HmacSHA256
&Timestamp=2009-10-14T22%3A20%3A46.297Z
&AWSAccessKeyId=<AWS Access Key ID>
&Signature=<Signature>
删除有最终快照的数据库实例
如果希望以后能还原所删除的数据库实例,可以创建最终数据库快照。所有自动备份也将被删除,并且无
法恢复。此操作不会删除手动快照。
AWS Management Console
删除包含最终数据库快照的数据库实例
1.
2.
3.
4.
5.
6.
Sign in to the AWS Management Console and open the Amazon RDS console at
https://console.aws.amazon.com/rds/.
在数据库实例列表中,选中要删除的数据库实例旁边的复选框。
单击实例操作,然后从上下文菜单中选择删除。
在创建最终快照? 下拉列表框中选择 Yes。
在最终快照名称文本框中键入最终数据库快照的名称。
单击是,删除。
CLI
删除包含最终数据库快照的数据库实例
•
使用命令 rds-delete-db-instance 删除实例。
PROMPT>rds-delete-db-instance mydbinstance mydbinstance --final-snapshotidentifier myfinaldbsnapshot
此命令应该生成类似于下述信息的输出:
Once you begin deleting this database, it will no longer be able to accept
connections. Are you sure you want to delete this database? [Ny]y DBINSTANCE
mydbinstance 2009-10-21T01:54:49.521Z db.m1.large MySQL 50 sa deleting useast-1a 3 SECGROUP default active
API Version 2013-05-15
185
Amazon Relational Database Service 用户指南
删除数据库实例
API
删除包含最终数据库快照的数据库实例
•
调用带有下列参数的 DeleteDBInstance 命令:
• DBInstanceIdentifier =mydbinstance
• FinalDBSnapshotIdentifier =myfinaldbsnapshot
Example
https://rds.amazonaws.com/
?Action=DeleteDBInstance
&DBInstanceIdentifier=mydbinstance
&FinalDBSnapshotIdentifier=myfinaldbsnapshot
&SignatureVersion=2
&SignatureMethod=HmacSHA256
&Timestamp=2009-10-14T22%3A20%3A46.297Z
&AWSAccessKeyId=<AWS Access Key ID>
&Signature=<Signature>
相关主题
• 创建运行 MySQL 数据库引擎的数据库实例 (p. 69)
• 数据库实例 (p. 32)
API Version 2013-05-15
186
Amazon Relational Database Service 用户指南
重启数据库实例
重启数据库实例
在某些情况下,如果修改数据库实例或与该实例关联的数据库参数组,则必须重启该实例以使更改生效。
重启数据库实例将重启数据库引擎服务。数据库实例如有对关联的数据库参数组的任何修改待处理,则也
要重启。重启数据库实例导致该实例短暂中断,在此期间将数据库实例状态设置为“正在重启”。如果
Amazon RDS 实例是为多可用区域配置的,则可通过故障转移进行重启。重启完毕后,将创建 Amazon
RDS 事件。
如果数据库实例部署在多个可用区域中,则可强制在重启期间从一个可用区域故障转移到另一个。可强制
进行故障转移以测试数据库实例部署的可用性,或在进行故障转移后向原有可用区域还原操作。
重启所需的时间是特定数据库引擎的崩溃恢复过程的函数。为了缩短重启时间,我们建议在重启过程中尽
可能减少数据库活动以减少在途事务的回滚活动。
AWS Management Console
要重启数据库实例,请执行以下操作
1.
2.
3.
4.
5.
6.
Sign in to the AWS Management Console and open the Amazon RDS console at
https://console.aws.amazon.com/rds/.
在导航窗格中,单击数据库实例。
选中要重启的数据库实例的复选框。
单击实例操作,然后单击重启。
要强制从一个可用区域故障转移到另一个,请在重启数据库实例对话框中,选中通过故障转移重启?
复选框。
单击是,重启。要取消重启,请单击取消。
CLI
要重启数据库实例,请执行以下操作
•
使用 rds-reboot-db-instance 命令。要强制从一个可用区域故障转移到另一个,请使用
force-failover 参数。
PROMPT>rds-reboot-db-instance dbInstanceID --force-failover true
API
要重启数据库实例,请执行以下操作
•
调用 RebootDBInstance。若要从一个可用区域强制故障转移至另一个,请添加下面的参数:
• ForceFailover = true
API Version 2013-05-15
187
Amazon Relational Database Service 用户指南
为 Amazon RDS 资源加标签
为 Amazon RDS 资源加标签
有关 Amazon RDS 资源标签应了解的情况
使用 Amazon RDS 标签向 Amazon RDS 资源添加元数据。此外,这些标签可与 IAM 策略结合使用,以
管理对 Amazon RDS 资源的访问并控制可将什么操作应用于 Amazon RDS 资源。最后,通过将具有类
似标签的资源的支出集中在一起,这些标签可用于跟踪成本。
所有 Amazon RDS 资源均可加标签:
• 数据库实例
• 只读副本
• 数据库快照
• 预留数据库实例
• 事件订阅
•
•
•
•
数据库选项组
数据库参数组
数据库安全组
数据库子网组
Amazon RDS 标签是由您定义的名称-值对,与某种 Amazon RDS 资源关联。此名称也叫密钥。为键提
供值为可选操作。可使用标签向 Amazon RDS 资源分配任意信息。标签密钥可用于定义(例如)一个类
别,而标签值可以是该类别中的一个项目。例如,可定义“project”标签键和“Salix”标签值,表示向 Salix
项目分配了 Amazon RDS 资源。也可使用标签通过 environment=test 或 environment =production 等键
指定 Amazon RDS 资源用于测试或生产。我们建议使用一组具有一致性的标签键,以使跟踪与 Amazon
RDS 资源关联的元数据变得更轻松。
使用标签组织 AWS 账单来反映您自身的成本结构。如需进行上述操作,请注册以获取您包含标签键值的
AWS 账户账单。然后,如需查看组合资源的成本,请按有同样标签键值的资源组织您的账单信息。例如,
您可以用具体应用程序名称给数种资源添加标签,然后组织您的账单信息以查看该应用程序在数种服务上
的总体成本。要了解更多信息,请参阅 About AWS Account Billing 部分的 Cost Allocation and Tagging。
每个 Amazon RDS 资源都有一组标签,其中包含分配给该 Amazon RDS 资源的所有标签。一个标记集
可以包含多达十个标记,也可以为空。如果向 Amazon RDS 资源添加一个标签,而该标签的键与资源上
某个现有的标签相同,则新值将覆盖旧值。
AWS 不向标签应用任何语义含义;而是严格按字符串解释标签。AWS 不自动在 Amazon RDS 资源上设
置任何标签。
以下列表介绍数据库实例标签的特征。
• 标签密钥是标签的名称,属于必填内容。该字符串值的长度可以是 1 到 128 个 Unicode 字符,并且不
能以“aws:”或“rds:”为前缀。该字符串只能包含 Unicode 字母、数字、空格、“_”、“.”、“/”、“=”、“+”、“-”
的集合(Java 正则表达式:"^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-]*)$")。
• 标签值则是一个可选的标签字符串值。该字符串值的长度可以是 1 到 256 个 Unicode 字符,并且不能
以“aws:”或“rds:”为前缀。该字符串只能包含 Unicode 字母、数字、空格、“_”、“.”、“/”、“=”、“+”、“-”的
集合(Java 正则表达式:"^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-]*)$")。
在标签集中,值不必具有唯一性,且可为空值。例如,在“项目/Trinity”和“成本 – 中心/Trinity”的一个标
签集中,可以存在密钥值对。
API Version 2013-05-15
188
Amazon Relational Database Service 用户指南
为 Amazon RDS 资源加标签
可使用 AWS Management Console、命令行界面或 Amazon RDS API 添加、列出和删除 Amazon RDS
实例上的标签。在使用命令行界面或 Amazon RDS API 时,必须提供要使用的 Amazon RDS 资源的亚马
逊资源名称 (ARN)。有关构造 ARN 的详细信息,请参阅构造 Amazon RDS 亚马逊资源名称 (ARN) (p. 194)。
注意,对标签进行缓存以用于授权。因此,可能先用几分钟添加和更新 Amazon RDS 资源上的标签,然
后标签才可用。
AWS Management Console
为 Amazon RDS 资源加标签的过程对于所有资源均类似。下例展示如何为 Amazon RDS 数据库实例加
标签。
要向数据库实例添加标签,请执行以下操作:
1.
2.
Sign in to the AWS Management Console and open the Amazon RDS console at
https://console.aws.amazon.com/rds/.
在导航窗格中,单击实例。
Note
要筛选数据库实例窗格中的数据库实例列表,请在查看框旁的框中键入文本字符串。随后将
仅显示包含该字符串的数据库实例。
3.
4.
选中要加标签的数据库实例的复选框。
单击详细信息图标。
5.
在详细信息窗格中,单击标签。
API Version 2013-05-15
189
Amazon Relational Database Service 用户指南
为 Amazon RDS 资源加标签
6.
单击添加/编辑标签。
7.
键入标签的名称和值。单击保存标签。
要从数据库实例删除标签,请执行以下操作
API Version 2013-05-15
190
Amazon Relational Database Service 用户指南
为 Amazon RDS 资源加标签
1.
2.
Sign in to the AWS Management Console and open the Amazon RDS console at
https://console.aws.amazon.com/rds/.
在导航窗格中,单击实例。
Note
要筛选数据库实例窗格中的数据库实例列表,请在查看框旁的框中键入文本字符串。随后将
仅显示包含该字符串的数据库实例。
3.
4.
选中要从其删除标签的数据库实例的复选框。
单击详细信息图标。
5.
在详细信息窗格中,单击标签。
API Version 2013-05-15
191
Amazon Relational Database Service 用户指南
为 Amazon RDS 资源加标签
6.
单击要删除的标签旁的删除列中的红色“X”。
7.
单击保存标签按钮。
CLI
要添加、列出或删除数据库实例的标签,请执行以下操作
• 要向 Amazon RDS 资源添加标签,请使用 rds-add-tag-to-resource 命令。
• 要列出分配给 Amazon RDS 资源的标签,请使用 rds-list-tags-for-resource 命令。
• 要从 Amazon RDS 资源删除标签,请使用 rds-remove-tags-from-resource 命令。
有关如何构建所需 ARN 的详细信息,请参阅构造 Amazon RDS 亚马逊资源名称 (ARN) (p. 194)
API Version 2013-05-15
192
Amazon Relational Database Service 用户指南
为 Amazon RDS 资源加标签
API
要添加、列出或删除数据库实例的标签,请执行以下操作
• 要向 Amazon RDS 资源添加标签,请使用 AddTagsToResource 操作。
• 要列出分配给 Amazon RDS 资源的标签,请使用 ListTagsForResource 操作。
• 要从 Amazon RDS 资源删除标签,请使用 RemoveTagsFromResource 操作。
有关如何构建所需 ARN 的详细信息,请参阅构造 Amazon RDS 亚马逊资源名称 (ARN) (p. 194)
在通过 Amazon RDS API 使用 XML 时,标签使用如下架构:
<Tagging>
<TagSet>
<Tag>
<Key>Project</Key>
<Value>Trinity</Value>
</Tag>
<Tag>
<Key>User</Key>
<Value>Jones</Value>
</Tag>
</TagSet>
</Tagging>
下表提供了允许使用的 XML 标签及其特征的列表。请注意,密钥和值的内容是区分大小写的。例如,
project=Trinity 和 PROJECT=Trinity 是两个不同的标签。
标签元素
描述
标签集
标签集是分配给 Amazon RDS 资源的所有标签的容器。每个资源只能有一个
标签集。只能通过 Amazon RDS API 使用标签集。
标签
标签是用户定义的密钥值对。一个标签集中可以有 1 到 10 个标签。
键
密钥是标签必需的名称。该字符串值的长度可以是 1 到 128 个 Unicode 字
符,并且不能以“rds:”或“aws:”为前缀。该字符串只能由下列内容组成:Unicode
字母、数字、空格、‘_’、‘.’、‘/’、‘=’、‘+’、‘-’(Java 正则表达
式:"^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-]*)$")。
密钥在标签集中必须具有唯一性。例如,标签集中不能有键相同但值不同的
键-值对,如 project/Trinity 和 project/Xanadu。
值
值是标签的可选内容。该字符串值的长度可以是 1 到 256 个 Unicode 字符,
并且不能以“rds:”或“aws:”为前缀。该字符串只能由下列内容组成:Unicode
字母、数字、空格、‘_’、‘.’、‘/’、‘=’、‘+’、‘-’(Java 正则表达
式:"^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-]*)$")。
在标签集中,值不必具有唯一性,且可为空值。例如,在“项目/Trinity”和“成
本 – 中心/Trinity”的一个标签集中,可以存在密钥值对。
API Version 2013-05-15
193
Amazon Relational Database Service 用户指南
为 Amazon RDS 资源加标签
构造 Amazon RDS 亚马逊资源名称 (ARN)
Amazon Web Services 中创建的资源由一个独一无二的标识符表示,该标识符称为亚马逊资源名称 (ARN)。
如果使用 CLI 或 Amazon RDS API 添加、修改或删除标签,则必须提供要使用的资源的 ARN。
Amazon RDS 资源的 ARN 使用以下语法:
arn:aws:rds:<region>:<account number>:<resourcetype>:<name>
• <region> 是从中创建了 Amazon RDS 资源的 AWS 地区 ID,如 us-west-2。
下表显示 AWS 地区名称和在构造 ARN 时应使用的值。
Region
Name
tniopdn
E
美国东部(弗吉尼亚北部)地区
a
m
1
.a
-o
zn
a
cm
w
e
a
tsu
.-s1d
.s-r/ts/aep
:s-tsu
h
t
US West (Northern California) Region
a
m
1
.a
o
z-n
w
cm
u
-e
st.1d
.sr-/t/sw
e
p
:s-tsu
h
t
US West (Oregon) Region
a
m
2
.a
o
z-n
w
cm
u
-e
st.2d
.sr-/t/sw
e
p
:s-tsu
h
t
EU (Ireland) Region
a
m
1
.a
o
z-n
cw
m
e
u
-t.s1d
.sr-/t/sw
e
p
:st-ue
h
t
Asia Pacific (Tokyo) Region
a
m
1
.-a
o
zh
n
e
a
o
cw
m
tsn
.so
a
1
rp
-d
.-srts/a
e
h/tp
:sro
nt-p
h
a
t
Asia Pacific (Singapore) Region
a
m
1
.a
-o
zn
h
a
cm
e
w
tso
u
t.a
sp
1
-d
.s-rt/sa
e
h/p
tu
:sot-p
h
a
t
Asia Pacific (Sydney) Region
a
m
2
.a
-o
zn
h
a
cm
e
w
tso
u
t.a
sp
2
-d
.s-rt/sa
e
h/p
tu
:sot-p
h
a
t
South America (Sao Paulo) Region
a
m
1
.a
-o
zn
a
cm
w
e
a
ts.-1d
.s-r/ts/aep
:s-tas
h
t
GovCloud
a
m
1
.a
-o
w
zn
ca
m
g
w
o
-ve
tsu
-.1d
.s-r/tw
se/-vo
p
:g
st-su
h
t
• <account number> 是省略了短划线的账号。要查找您的账号,请在 http://aws.amazon.com 上登录到
您的 AWS 账户,单击我的账户/控制台,然后单击我的账户。
• <resourcetype> 是 Amazon RDS 资源的类型。
下表显示在构造特定 Amazon RDS 资源的 ARN 时应使用的资源类型。
资源类型
ARN 格式
数据库实例
arn:aws:rds:<region>:<account>:db:<dbinstance name>
事件订阅
arn:aws:rds:<region>:<account>:es:<subscription name>
数据库选项组
arn:aws:rds:<region>:<account>:og:<option group name>
数据库参数组
arn:aws:rds:<region>:<account>:pg:<parameter group name>
预留数据库实例
arn:aws:rds:<region>:<account>:ri:<reserve instance name>
数据库安全组
arn:aws:rds:<region>:<account>:secgrp:<security group name>
数据库快照
arn:aws:rds:<region>:<account>:snapshot:<snapshot name>
数据库子网组
arn:aws:rds:<region>:<account>:subgrp:<subnet group name>
• <name> 是 Amazon RDS 资源的资源标识符。
API Version 2013-05-15
194
Amazon Relational Database Service 用户指南
为 Amazon RDS 资源加标签
下表显示 AWS 账户为 123456789012 的 RDS 资源的 ARN 示例,在美国东部(弗吉尼亚北部)地区创
建了这些资源,并且资源名称以“my-”开头:
资源类型
示例 ARN
数据库实例
arn:aws:rds:us-east-1:123456789012:db:my-mysql-instance
事件订阅
arn:aws:rds:us-east-1:123456789012:es:my-subscription
数据库选项组
arn:aws:rds:us-east-1:123456789012:og:my-option-group-oracle-tde
数据库参数组
arn:aws:rds:us-east-1:123456789012:pg:my-param-enable-logs
预留数据库实例
arn:aws:rds:us-east-1:123456789012:ri:my-reserved-multiaz
数据库安全组
arn:aws:rds:us-east-1:123456789012:secgrp:my-public
数据库快照
arn:aws:rds:us-east-1:123456789012:snapshot:my-mysql-snap-20130507
数据库子网组
arn:aws:rds:us-east-1:123456789012:subgrp:my-subnet-10
相关主题
• 有关 Amazon RDS 资源标签应了解的情况 (p. 188)
API Version 2013-05-15
195
Amazon Relational Database Service 用户指南
升级数据库实例
升级数据库实例
Amazon RDS 支持将主要版本从 MySQL 5.1 升级到 MySQL 5.5 以及从 Microsoft SQL Server 2008 R2
升级到 SQL Server 2012。使用 Amazon RDS major 操作执行数据库实例的主要版本升级。如果已退出
次要版本自动更新,则还可使用 modify 手动应用次要版本升级。
测试升级
在数据库实例上执行主要版本升级之前,应全面测试数据库与主机应用程序的兼容性。我们建议执行以下
操作:
1. 检查新版数据库引擎的升级文档以了解是否存在可能会影响数据库或应用程序的兼容性问题:
• MySQL 5.5 升级文档
• 升级到 SQL Server 2012
2. 如果数据库实例是自定义数据库参数组的成员,则需要新建一个与新的主要版本兼容的数据库参数组,
其中具有现有设置。在升级测试实例时指定该新数据库参数组,这样升级测试可确保它正常工作。有
关创建数据库参数组的详细信息,请参阅使用数据库参数组 (p. 218)
3. 创建要升级的数据库实例的数据库快照。有关更多信息,请参阅 创建数据库快照 (p. 202)。
4. 还原该数据库快照以新建一个测试数据库实例。有关更多信息,请参阅 从数据库快照中还原 (p. 204)。
5. 使用下方详细介绍的某种方法,修改此新测试数据库实例以将其升级到新版本。如果在第 2 步中新建
了参数组,则指定该参数组。
6. 计算升级的实例使用的存储容量以决定升级是否需要额外的存储容量。
7. 对升级的数据库实例运行所需次数的质量保证测试以确保数据库和应用程序可正常使用新版本。实施
评估对第 1 步中发现的任何兼容性问题造成的影响所需的任何新测试。测试所有存储过程和函数。将
主机应用程序的测试版本引向升级的数据库实例。
8. 如果通过所有测试,则在生产数据库实例上执行升级。我们建议直到确认一切正常后,再允许向数据
库实例写入。
数据库实例升级注意事项
如果数据库实例使用只读副本,则必须先升级所有只读副本,然后再升级源实例。如果数据库实例在多可
用区域部署中,则同时升级主副本和备用副本,并且直到升级完毕后实例才可用。
Amazon RDS 在升级过程中拍摄两个数据库快照。第一个数据库快照属于作出任何升级更改之前的数据
库实例。如果升级对数据库不起作用,则可还原此快照以创建运行旧版本的数据库实例。升级完毕时,拍
摄第二个数据库快照。
如果 Amazon RDS 在升级 SQL Server 时遇到任何问题并需要回滚,则 Amazon RDS 从第一个数据库快
照还原数据库实例。
对于 MySQL 升级,第一个快照是在您删除之前将一直保留的用户快照。对于 SQL Server 升级,第一个
快照是仅保留到备份保留期结束的系统快照。
MySQL 主要版本升级通常在大约 10 分钟之内完成,而 SQL Server 升级通常在大约 30 分钟之内完成。
根据数据库实例的类的不同或者实例是否遵照 Amazon RDS 最佳实践 (p. 6)中的操作指南,升级可能需
要更长时间。如果从 Amazon RDS 控制台升级数据库实例,则该数据库实例的状态将指示升级何时完毕。
如果使用 CLI,则使用 rds-describe-db-instance 命令并检查 Status 值。
升级完毕后,无法恢复为数据库引擎的以前版本。如果要返回以前版本,则还原拍摄的第一个数据库快照
以新建数据库实例。
除了将主要版本升级应用于 MySQL 和 SQL Server 实例以外,还可手动将次要版本升级应用于 MySQL
或 Oracle 实例。还可指定自动将次要版本升级应用于 MySQL 和 Oracle 实例。有关管理次要版本升级的
详细信息,请参阅 MySQL 版本管理 (p. 65)或 Oracle 版本管理 (p. 111)
API Version 2013-05-15
196
Amazon Relational Database Service 用户指南
升级数据库实例
Note
在 SQL Server 的主要版本升级期间,可用存储空间和磁盘队列深度指标将显示 -1。升级完毕
后,这两个指标都将恢复正常。
Note
在 MySQL 的主要版本升级期间,如果需要,Amazon RDS 将运行 MySQL 二进制 mysql_upgrade
以升级表。此外,Amazon RDS 可能会清空 slow_log 和 general_log 表。
AWS Management Console
要升级数据库实例,请执行以下操作:
1.
2.
3.
4.
5.
6.
7.
8.
Sign in to the AWS Management Console and open the Amazon RDS console at
https://console.aws.amazon.com/rds/.
在导航窗格中,单击实例。
选中要升级的数据库实例的复选框。
单击实例操作,然后单击修改。
在数据库引擎版本框中,单击新版本。
要立即升级,请选中立即升级复选框。要将升级推迟到下一维护时段,则清除此复选框。
单击继续。
检查修改摘要信息。要继续升级,请单击修改数据库实例。要改为取消升级,请单击右上角的 X。
CLI
要升级数据库实例,请执行以下操作:
•
使用 CLI 命令 rds-modify-db-instance 指定数据库实例标识符并使用以下参数:
• --engine-version = 新数据库引擎版本
• --allow-major-version-upgrade =true
• --apply-immediately = true 以立即升级,或 false 以将升级推迟到下一维护时段
Example
PROMPT>rds-modify-db-instance SQLServer1 --engine-version 11.00.2100.60.v1
--allow-major-version-upgrade true --apply-immediately true
API
要升级数据库实例,请执行以下操作:
•
调用 ModifyDBInstance 配合以下参数:
• DBInstanceIdentifier = 要升级的实例的标识符
• EngineVersion = 新数据库引擎版本
• AllowMajorVersionUpgrade =true
API Version 2013-05-15
197
Amazon Relational Database Service 用户指南
备份和还原数据库实例
• ApplyImmediately = true 以立即升级,或 false 以将升级推迟到下一维护时段
Example
https://rds.amazonaws.com/
?Action=ModifyDBInstance
&DBInstanceIdentifier=MySQL-Instance1
&EngineVersion=5.5.31
&AllowMajorVersionUpgrade=true
&ApplyImmediately=true
备份和还原数据库实例
此部分演示如何备份和还原数据库实例。
Topics
• 使用自动备份 (p. 199)
• 创建数据库快照 (p. 202)
• 从数据库快照中还原 (p. 204)
• 复制数据库快照 (p. 206)
• 将数据库实例还原至指定时间 (p. 208)
API Version 2013-05-15
198
Amazon Relational Database Service 用户指南
使用自动备份
使用自动备份
Amazon RDS 可以自动备份您的所有数据库实例。您可以在创建数据库实例时设置备份保留期。如果您
未设置备份保留期,Amazon RDS 会默认备份保留期为 1 天(如果备份保留期为 1 天,则 Amazon RDS
不会收费)。您可以修改备份保留期;有效值为 0(未进行备份保留)到 35 天。
当您删除数据库实例时,会删除所有的自动备份,并且无法恢复。此操作不会删除手动快照。
在此示例中,您将对名为 mydbinstance 的现有数据库实例启用并随后禁用备份。
禁用自动备份
某些情况下(如在加载大量数据时),您可能希望临时禁用自动备份。
Important
我们强烈建议不要禁用自动备份,因为此操作会禁用时间点恢复。如果在禁用后又重新启用了自
动备份,则您只能从重新启用自动备份的时间开始进行还原。
在这些示例中,您可以通过将备份保留参数设置为 0 来禁用数据库实例的自动备份。
AWS Management Console
立即禁用自动备份
1.
2.
3.
Sign in to the AWS Management Console and open the Amazon RDS console at
https://console.aws.amazon.com/rds/.
在导航窗格中,单击数据库实例,然后单击您要修改的数据库实例旁边的复选框。
单击修改按钮。
4.
5.
6.
此时会显示修改数据库实例窗口。
在备份保留期下拉列表框中选择 0。
选中立即应用复选框。
单击确定按钮。
CLI
立即禁用自动备份
1.
将备份保留期设置为 0。
PROMPT>rds-modify-db-instance mydbinstance --backup-retention-period 0 -apply-immediately
2.
为数据库实例调用 rds-describe-db-instances,直到备份保留期的值变为 0 且 mydbinstance
status 状态可用。
PROMPT>rds-describe-db-instances mydbinstance --headers
API Version 2013-05-15
199
Amazon Relational Database Service 用户指南
使用自动备份
API
立即禁用自动备份
•
调用带有以下参数的 ModifyDBInstance 命令:
• DBInstanceIdentifier =mydbinstance
• BackupRetentionPeriod =0
Example
https://rds.amazonaws.com/
?Action=ModifyDBInstance
&DBInstanceIdentifier=mydbinstance
&BackupRetentionPeriod=0
&SignatureVersion=2
&SignatureMethod=HmacSHA256
&Timestamp=2009-10-14T17%3A48%3A21.746Z
&AWSAccessKeyId=<AWS Access Key ID>
&Signature=<Signature>
启用自动备份
如果数据库实例尚未启用自动备份,您可以随时启用。您可以利用在禁用自动备份时使用的相同请求来启
用自动备份,此时需将备份保留期设置为非零值。启用自动备份后,会立即创建备份。
当您删除数据库实例时,会删除所有的自动备份,并且无法恢复。此操作不会删除手动快照。
在此示例中,您可以将数据库实例的备份保留期参数设置为非零值(此示例中为 3),以启用该实例的自
动备份。
AWS Management Console
立即启用自动备份
1.
Sign in to the AWS Management Console and open the Amazon RDS console at
https://console.aws.amazon.com/rds/.
2.
在导航窗格中,单击数据库实例,然后单击您要修改的数据库实例旁边的复选框。
3.
单击修改按钮,或右键单击该数据库实例,然后选择上下文菜单中的修改。
4.
5.
此时会显示修改数据库实例窗口。
在备份保留期下拉列表框中选择 3。
选中立即应用复选框。
6.
单击确定按钮。
CLI
立即启用自动备份
在此示例中,将备份保留期设置为 3,启用自动备份。
API Version 2013-05-15
200
Amazon Relational Database Service 用户指南
使用自动备份
•
将备份保留期设置为 3。
PROMPT>rds-modify-db-instance mydbinstance --backup-retention-period 3 -apply-immediately
API
立即启用自动备份
•
调用带有以下参数的 ModifyDBInstance 命令:
• DBInstanceIdentifier =mydbinstance
• BackupRetentionPeriod =3
• ApplyImmediately =true
Example
https://rds.amazonaws.com/
?Action=ModifyDBInstance
&DBInstanceIdentifier=mydbinstance
&BackupRetentionPeriod=3
&ApplyImmediately=true
&SignatureVersion=2
&SignatureMethod=HmacSHA256
&Timestamp=2009-10-14T17%3A48%3A21.746Z
&AWSAccessKeyId=<AWS Access Key ID>
&Signature=<Signature>
相关主题
• 将数据库实例还原至指定时间 (p. 208)
• 数据库实例备份 (p. 42)
API Version 2013-05-15
201
Amazon Relational Database Service 用户指南
创建数据库快照
创建数据库快照
创建数据库快照时,需要识别出将要备份的数据库实例,然后为数据库快照命名,以便稍后从此快照还
原。
Note
创建数据库快照可创建数据库实例备份。在单可用区域数据库实例上创建此备份会导致 I/O 短暂
性停止,该停止通常仅持续几分钟。由于备份是在备用副本上进行的,因此多可用区域数据库实
例不会受到 I/O 停止的影响。
在此示例中,您将给名为 mydbinstance 的数据库实例创建名为 mydbsnapshot 的数据库快照。
AWS Management Console
创建数据库快照
1.
2.
3.
Sign in to the AWS Management Console and open the Amazon RDS console at
https://console.aws.amazon.com/rds/.
在导航窗格中,单击数据库实例。
单击实例操作,然后单击拍摄数据库快照。
4.
此时会显示拍摄数据库快照窗口。
在快照名称文本框内键入快照名称。
5.
单击是,拍摄快照。
CLI
创建数据库快照
•
使用命令 rds-create-db-snapshot 创建数据库快照。
PROMPT>rds-create-db-snapshot -i mydbinstance -s mydbsnapshot
此命令的输出应类似以下内容:
DBSNAPSHOT
50
mydbsnapshot
mydbinstance
API Version 2013-05-15
202
2009-10-21T01:54:49.521Z
MySQL
Amazon Relational Database Service 用户指南
创建数据库快照
creating
sa
5.1.57 general-public-license
API
创建数据库快照
•
调用带有下列参数的 CreateDBSnapshot 命令:
• DBSnapshotIdentifier =mydbsnapshot
• DBInstanceIdentifier =mydbinstance
Example
https://rds.amazon.com/
?Action=CreateDBSnapshot
&DBSnapshotIdentifier=mydbsnapshot
&DBInstanceIdentifier=mydbinstance
&SignatureVersion=2
&SignatureMethod=HmacSHA256
&Timestamp=2009-10-14T17%3A48%3A21.746Z
&AWSAccessKeyId=<AWS Access Key ID>
&Signature=<Signature>
相关主题
• 从数据库快照中还原 (p. 204)
• 复制数据库快照 (p. 206)
• 数据库实例备份 (p. 42)
API Version 2013-05-15
203
Amazon Relational Database Service 用户指南
从数据库快照中还原
从数据库快照中还原
必须先创建数据库快照,然后才能从其还原数据库实例。还原数据库实例时,提供要从其还原的数据库快
照的名称,然后为还原后新建的数据库实例提供一个名称。无法从数据库快照还原到现有数据库实例;还
原时将新建一个数据库实例。
在还原数据库实例时,仅应用默认的数据库参数和数据库安全组。如果需要自定义数据库参数或数据库安
全组,则必须在数据库实例可用后即使用 ModifyDBInstance API 或 rds-modify-db-instance 命
令行工具显式地应用它们。创建还原的数据库实例后,与数据库快照关联的选项组即与该数据库实例关
联。如果从其还原的数据库快照使用 Oracle 透明数据加密,则必须用 TDE 选项将还原的数据库实例与选
项组关联。
在本例中,从以前创建的一个名为 mydbsnapshot 的数据库快照进行还原,然后新建一个名为
mynewdbinstance 的数据库实例。
AWS Management Console
要从数据库快照还原数据库实例,请执行以下操作:
1.
2.
3.
Sign in to the AWS Management Console and open the Amazon RDS console at
https://console.aws.amazon.com/rds/.
在导航窗格中,单击快照。
单击要从其还原的数据库快照。
4.
单击还原快照。
随后将显示还原数据库实例窗口。
5.
6.
在数据库实例标识符文本框中,键入所还原的数据库实例的名称。
单击启动数据库实例按钮。
CLI
要从数据库快照还原数据库实例,请执行以下操作:
•
使用命令 rds-restore-db-instance-from-db-snapshot 将数据库快照还原为新的数据库实例。
PROMPT>rds-restore-db-instance-from-db-snapshot mynewdbinstance -s mydbsnap
shot
API Version 2013-05-15
204
Amazon Relational Database Service 用户指南
从数据库快照中还原
此命令会返回类似以下内容的输出:
DBINSTANCE mynewdbinstance db.m1.large MySQL
creating 3 n 5.1.57 general-public-license
API
要从数据库快照还原数据库实例,请执行以下操作:
•
调用 RestoreDBInstanceFromDBSnapshot 命令配合以下参数:
• DBSnapshotIdentifier =mydbsnapshot
• DBInstanceIdentifier =mynewdbinstance
Example
https://rds.amazon.com/
?Action=RestoreDBInstanceFromDBSnapshot
&DBSnapshotIdentifier=mydbsnapshot
&DBInstanceIdentifier=mynewdbinstance
&DBInstanceClass=db.m1.xlarge
&SignatureVersion=2
&SignatureMethod=HmacSHA256
&Timestamp=2009-10-15T17%3A48%3A21.746Z
&AWSAccessKeyId=<AWS Access Key ID>
&Signature=<Signature>
相关主题
• 创建数据库快照 (p. 202)
• 复制数据库快照 (p. 206)
• 数据库快照 (p. 44)
API Version 2013-05-15
205
50
sa
Amazon Relational Database Service 用户指南
复制数据库快照
复制数据库快照
Amazon RDS 会在保留期结束时、禁用自动快照时或者删除数据库实例时删除自动快照。如果要将自动
快照保留更长时间,您可以将其复制到手动快照。手动快照会一直保留,直到您将它们删除。
在此例中,您从名为 mydbinstance 的数据库实例复制自动数据库快照以创建名为 mydbsnapshotcopy 的
手动数据库快照。
AWS Management Console
复制数据库快照
1.
2.
Sign in to the AWS Management Console and open the Amazon RDS console at
https://console.aws.amazon.com/rds/.
在导航窗格中,单击快照。
3.
将筛选条件: 设置为自动快照。
选中要复制的自动快照的复选框。
单击复制快照
4.
此时会显示复制数据库快照窗口。
验证您要复制的自动快照的名称是否显示在源数据库快照:字段。
在目标数据库快照: 中键入快照名称。输入数据库实例的主用户名。
5.
单击是,复制快照。
CLI
复制数据库快照
•
使用命令 rds-copy-db-snapshot 创建数据库快照。
PROMPT>rds-copy-db-snapshot -s rds:mydbinstance-2013-09-04-22-50 -t mydbsnap
shotcopy
此命令的输出应类似以下内容:
DBSNAPSHOT mydbsnapshotcopy 2013-09-04T22:51:29.982Z mydbinstance
09-04T22:50:22.355Z mysql 5 available MasterUser
default:mysql-5-6 5.6.12 general-public-license manual
API
复制数据库快照
API Version 2013-05-15
206
2013-
Amazon Relational Database Service 用户指南
复制数据库快照
•
调用带有下列参数的 CopyDBSnapshot 命令:
• SourceDBSnapshotIdentifier =rds:mydbinstance-2013-09-04-22-50
• TargetDBSnapshotIdentifier =mydbsnapshotcopy
Example
https://rds.amazon.com/
?Action=CopyDBSnapshot
&SourceDBSnapshotIdentifier=rds:mydbinstance-2013-09-04-22-50
&DBInstanceIdentifier=mydbsnapshotcopy
&SignatureVersion=2
&SignatureMethod=HmacSHA256
&Timestamp=2011-12-12T06%3A27%3A42.551Z
&AWSAccessKeyId=<AWS Access Key ID>
&Signature=<Signature>
相关主题
• 创建数据库快照 (p. 202)
• 从数据库快照中还原 (p. 204)
• 数据库实例备份 (p. 42)
API Version 2013-05-15
207
Amazon Relational Database Service 用户指南
将数据库实例还原至指定时间
将数据库实例还原至指定时间
Amazon RDS 自动备份功能可自动创建数据库的备份。在每日的 30 分钟时期内进行此备份,用户可配置
这个称为“备份时段”的时期。可将自动备份保留一定天数,并可配置此天数(称为“备份保留期”)。可将
数据库实例还原到此保留期内的任意特定时间以新建新数据库实例。
将数据库实例还原到某个时间点时,默认数据库安全组将应用于新数据库实例。如果需要将自定义数据库
安全组应用于数据库实例,则必须在数据库实例可用后即使用 AWS 管理控制台、ModifyDBInstance API
或 rds-modify-db-instance 命令行工具显式应用这些组。
您可在备份保留期内还原到任一时间点。要确定数据库实例的最近可还原时间,可使用
rds-describe-db-instance 命令配合 --show-long 和 --headers 参数,并查看在最近可还原时
间列中返回的值。数据库实例的最近可还原时间通常为当前时间之前 5 分钟内。
当前不支持 OFFLINE、EMERGENCY 和 SINGLE_USER 模式。将任何数据库设置成上述模式之一,会
导致整个实例的最近可还原时间停滞不前。
从某个时间点进行还原时,Amazon RDS 使用的多种数据库引擎有一些特殊的注意事项。将 Oracle 数据
库实例还原到某个时间点时,可指定不同的 Oracle 数据库引擎、许可模式和 DBName (SID) 供新数据库
实例使用。将 SQL Server 数据库实例还原到某个时间点时,该实例中的每个数据库均还原到与实例中每
个其他数据库相差 1 秒以内的时间点。对于实例内跨多个数据库的事务,还原时可能会发生不一致的情
况。
某些操作(如更改 SQL Server 数据库的恢复模式)可中断用于时间点恢复的日志序列。在某些情况下,
Amazon RDS 可检测到此问题并阻止最近可还原时间前移;在另外一些情况下(如当 SQL Server 数据库
使用 BULK_LOGGED 恢复模式时),检测不到日志序列中断。如果日志序列中断,则可能无法将 SQL
Server 数据库实例还原到某个时间点。出于这些原因,Amazon RDS 不支持更改 SQL Server 数据库的
恢复模式。
AWS Management Console
要将数据库实例还原到指定时间,请执行以下操作
1.
2.
3.
Sign in to the AWS Management Console and open the Amazon RDS console at
https://console.aws.amazon.com/rds/.
在导航窗格中,单击数据库实例。
单击实例操作,然后单击还原到时间点。
随后将显示还原数据库实例窗口。
4.
5.
6.
单击使用自定义还原时间单选按钮。
在使用自定义还原时间文本框中,输入要还原到的日期和时间。
在数据库实例标识符文本框中,键入所还原的数据库实例的名称。
7.
单击启动数据库实例按钮。
CLI
要将数据库实例还原到指定时间,请执行以下操作
•
使用命令 rds-restore-db-instance-to-point-in-time 新建数据库实例。
PROMPT>rds-restore-db-instance-to-point-in-time mytargetdbinstance -s myso
urcedbinstance-db -r 2009-10-14T23:45:00.000Z
API Version 2013-05-15
208
Amazon Relational Database Service 用户指南
使用 Amazon RDS 功能
API
要将数据库实例还原到指定时间,请执行以下操作
•
调用 RestoreDBInstanceToPointInTime 命令配合以下参数:
• SourceDBInstanceIdentifier =mysourcedbinstance
• TargetDBInstanceIdentifier =mytargetdbinstance
• RestoreTime =2009-10-14T23:45:00.000Z
Example
https://rds.amazonaws.com/
?Action=RestoreDBInstanceToPointInTime
&SourceDBInstanceIdentifier=mysourcedbinstance
&TargetDBInstanceIdentifier=mytargetdbinstance
&RestoreTime=2009-10-14T23:45:00.000Z
&SignatureVersion=2
&SignatureMethod=HmacSHA256
&Timestamp=2009-10-15T17%3A48%3A21.746Z
&AWSAccessKeyId=<AWS Access Key ID>
&Signature=<Signature>
相关主题
•
•
•
•
创建数据库快照 (p. 202)
从数据库快照中还原 (p. 204)
复制数据库快照 (p. 206)
数据库实例备份 (p. 42)
使用 Amazon RDS 功能
此部分演示如何使用 Amazon RDS 功能,其中包括参数组、安全组、选项组、预配置 IOPS、虚拟私有
云和预留实例。
Topics
• 使用选项组 (p. 210)
• 使用数据库参数组 (p. 218)
• 使用数据库安全组 (p. 229)
• 使用预留数据库实例 (p. 242)
• 将 Amazon RDS 与 Amazon Virtual Private Cloud 结合使用 (p. 252)
• 使用预置 IOPS 存储 (p. 257)
• 调整首选维护时段 (p. 266)
API Version 2013-05-15
209
Amazon Relational Database Service 用户指南
使用选项组
使用选项组
一些数据库引擎提供更易于管理数据和数据库的其他功能,并为您的数据库提供更多安全保护。Amazon
RDS 使用选项组启用和配置这些功能。通过选项组可以指定各种名为选项的功能,它们是专为特定的
Amazon RDS 数据库实例提供的。选项可包含指定选项工作方式的设置。当您将数据库实例与选项组相
关联时,就会在数据库实例上启用指定的选项和选项设置。有关将 MySQL 数据库实例与选项组关联的信
息,请参阅 修改运行 MySQL 数据库引擎的数据库实例 (p. 78)。有关将 Oracle 数据库实例与选项组关联
的信息,请参阅 修改运行 Oracle 数据库引擎的数据库实例 (p. 122)。
Note
目前,选项组仅可用于 MySQL 5.6 和 Oracle 数据库实例。有关各 MySQL 选项的更多信息,请
参阅 附录:MySQL 数据库引擎选项 (p. 101)。有关各 Oracle 选项的更多信息,请参阅 附录:
Oracle 数据库引擎选项 (p. 129)。
Topics
•
•
•
•
•
•
有关选项组应了解的情况 (p. 210)
创建选项组 (p. 211)
将选项添加到选项组 (p. 212)
列出选项组的选项和选项设置 (p. 214)
修改选项设置 (p. 214)
从选项组中移除选项 (p. 215)
有关选项组应了解的情况
Amazon RDS 为每个新数据库实例提供了一个空的默认选项组。您无法修改此默认选项组,但可以修改
您创建的通过默认选项组派生其设置的任何新选项组。要将选项应用于数据库实例,您必须创建选项组
(或使用现有选项组),然后向选项组添加一个或多个选项。然后,即可将数据库实例与此选项组关联起
来。要一次性移除数据库实例的所有选项,可将数据库实例与默认(空)选项组进行关联。如果更改选项
组的选项或选项设置,这些更改将应用到与此选项组相关联的所有数据库实例。
选项设置控制选项的行为。例如,Oracle 高级安全选项 NATIVE_NETWORK_ENCRYPTION 包含可用于
为数据库实例的传入和传出网络流量指定加密算法的设置。部分选项设置已针对与 Amazon RDS 配合使
用而优化,并且不能更改。
数据库实例和数据库快照均可与选项组相关联。当从数据库快照还原或者对数据库实例执行时间点恢复
时,与数据库快照或数据库实例关联的选项组在默认情况下会与还原的数据库实例进行关联。您可以将不
同的选项组与还原的数据库实例进行关联,但是,新选项组必须包含原始选项组中包含的所有持久或永久
选项。
在数据库实例上运行这些选项需要更多内存,因此,您可能需要根据数据库实例当前的使用情况启动更大
的实例。例如,Oracle Enterprise Manager Database Control 会使用约 300 MB 的 RAM;如果您为小数
据库实例启用此选项,可能会遇到性能问题或内存不足错误。
永久选项(如 Oracle 高级安全功能 TDE 的 TDE 选项)无法从选项组中移除,其选项组也无法与数据库
实例取消关联。从数据库快照还原或执行时间点还原时,如果与快照关联的选项组包含永久选项,还原的
数据库实例只能与包含永久选项的选项组关联。
每个数据库实例显示了与选项组的关联状态。例如,活动状态表示数据库实例与选项组相关联,无效状态
表示与数据库实例关联的选项组不包含数据库实例需要的选项。如果您向数据库实例查询与之关联的选项
组的状态,Amazon RDS 还会在其尝试更改关联状态时返回 ChangeState 值(例如待处理或正在应用)。
例如,选项组中数据库实例的关联状态可以是正在创建/待处理。
API Version 2013-05-15
210
Amazon Relational Database Service 用户指南
使用选项组
创建选项组
AWS 管理控制台
创建选项组
1.
2.
Sign in to the AWS Management Console and open the Amazon RDS console at
https://console.aws.amazon.com/rds/.
在导航窗格中单击选项组。
3.
4.
单击创建组。
在创建选项组对话框中,请执行以下操作:
• 在名称框中,键入选项组的名称,在 AWS 账户内该名称需具有唯一性。此名称只能包含字母、数
字和连字符。
• 在描述框中,键入此选项组的简要说明。此描述将用于显示说明。
• 在引擎框中,单击所需的数据库引擎。
• 在主要引擎版本框中,单击所需数据库引擎的主要版本。
5.
要继续,请单击是,创建。要取消操作,请单击取消。
您现在已创建不含任何选项的新选项组。有关如何将选项添加到选项组,请参阅下一部分 将选项添加到
选项组 (p. 212)。添加了您所需的选项后,即可将数据库实例与选项组进行关联,这样即可在数据库实例
中使用其中的选项。有关将数据库实例与选项组关联的信息,请参阅 修改运行 Oracle 数据库引擎的数据
库实例 (p. 122)。
CLI
创建选项组
•
调用 rds-create-option-group 命令。
以下示例创建了名为 TestOptionGroup 的选项组,它是与 Oracle Enterprise Edition 数据库引擎相
关联的选项组。引号中的内容是描述。
PROMPT> rds-create-option-group TestOptionGroup -–engine-name oracle-ee –major-engine-version 11.2 -- description "Test option group"
您现在已创建不含任何选项的新选项组。有关如何将选项添加到选项组,请参阅下一部分 将选项添加到
选项组 (p. 212)。添加了您所需的选项后,即可将数据库实例与选项组进行关联,这样即可在数据库实例
中使用其中的选项。有关将 Oracle 数据库实例与选项组关联的信息,请参阅 修改运行 Oracle 数据库引
擎的数据库实例 (p. 122)。有关将 MySQL 数据库实例与选项组关联的信息,请参阅 修改运行 MySQL 数
据库引擎的数据库实例 (p. 78)。
API
创建选项组
•
调用 CreateOptionGroup 操作。
API Version 2013-05-15
211
Amazon Relational Database Service 用户指南
使用选项组
将选项添加到选项组
您可将选项添加到现有选项组。
AWS Management Console
将选项添加到选项组
1.
2.
3.
Sign in to the AWS Management Console and open the Amazon RDS console at
https://console.aws.amazon.com/rds/.
在导航窗格中单击选项组。
选中要修改的选项组对应的复选框,然后单击添加选项。
在添加选项对话框中,请执行以下操作:
• 单击您要添加的选项。您可能需要根据您选择的选项提供其他值。例如,如果选择 OEM 选项,您
还必须输入端口值并指定数据库安全组。
• 要在添加选项后在所有关联数据库实例上启用该选项,请在立即应用下,单击是。如果单击否(默
认),则会在下一个维护时段为每个关联数据库实例启用此选项。
API Version 2013-05-15
212
Amazon Relational Database Service 用户指南
使用选项组
4.
根据需要设置完毕后,单击添加选项。
CLI
将选项添加到选项组
•
运行 rds-add-option-to-option-group 命令处理您要添加的选项。要在所有关联数据库实例上立即启用
新选项,请加入 --apply-immediately 参数。默认情况下,会在每个关联数据库实例的下一维护
时段启用此选项。
以下示例将 Oracle Enterprise Manager Database Control (OEM) 添加到名为 TestOptionGroup
的选项组,并立即将其启用。请注意,即使您使用默认的安全组,也必须指定该安全组。
PROMPT> rds-add-option-to-option-group TestOptionGroup -–option-name OEM
--security-groups default --apply-immediately
命令输出类似于以下内容:
OPTIONGROUP testoptiongroup oracle-ee 11.2 Test option group OPTION OEM 1158
Oracle Enterprise Manager SECGROUP default authorized
API
将选项添加到选项组
•
调用 ModifyOptionGroup 操作。
API Version 2013-05-15
213
Amazon Relational Database Service 用户指南
使用选项组
列出选项组的选项和选项设置
您可以列出选项组的所有选项和选项设置。
AWS Management Console
列出选项组的选项和选项设置的步骤
1.
2.
Sign in to the AWS Management Console and open the Amazon RDS console at
https://console.aws.amazon.com/rds/.
在导航窗格中单击选项组。表中的选项列显示了选项组的选项和选项设置。
CLI
列出选项组的选项和选项设置的步骤
•
运行 rds-describe-option-groups 命令。指定您要查看其选项和设置的选项组的名称。如果不指定选
项组名称,则会显示所有选项组的描述。
以下示例列出了名为 TestOptionGroup 的选项组的选项和选项设置。
PROMPT>rds-describe-option-groups TestOptionGroup
API
列出选项组的选项和选项设置的步骤
•
调用 DescribeOptionGroups 操作。
修改选项设置
添加了包含可修改选项设置的选项后,可以随时修改以下设置。
AWS Management Console
修改选项设置的步骤
1.
Sign in to the AWS Management Console and open the Amazon RDS console at
https://console.aws.amazon.com/rds/.
2.
3.
4.
在导航窗格中单击选项组。
单击您要修改的选项所在选项组对应的复选框,然后单击修改选项。
在修改选项对话框中的安装的选项框中,单击您要修改其设置的选项。执行所需的更改。
5.
要在添加选项后启用该选项,请在立即应用下单击是。如果单击否(默认),则会在下一个维护时段
为每个关联数据库实例启用此选项。
6.
根据需要设置完毕后,单击修改选项。
API Version 2013-05-15
214
Amazon Relational Database Service 用户指南
使用选项组
CLI
修改选项设置的步骤
•
运行 rds-add-option-to-option-group 命令处理您要修改的选项组和选项。要将更改立即应用到所有关
联数据库实例,请加入 --apply-immediately 参数。默认情况下,会在每个关联数据库实例的下
一维护时段启用此选项。
以下示例会修改在名为 TestOptionGroup 的选项组中 Oracle Enterprise Manager Database Control
(OEM) 使用的端口,并立即应用此更改。
PROMPT> rds-add-option-to-option-group TestOptionGroup -–option-name OEM -port 5432 --apply-immediately
命令输出类似于以下内容:
OPTIONGROUP testoptiongroup oracle-ee 11.2 Test Option Group OPTION OEM 5432
Oracle Enterprise Manager SECGROUP default authorized
API
修改选项设置的步骤
•
调用 ModifyOptionGroup 操作。
从选项组中移除选项
您可以从选项组中移除选项。即使您从选项组中移除所有选项,Amazon RDS 也不会将其删除。与空选
项组关联的数据库实例会继续与之相关联;只是无法访问任何选项。
只要选项不是持久或永久选项,就可以从选项组中将其移除。除非取消关联与持久选项所在选项组相关联
的所有数据库实例,否则无法移除该选项。永久选项无法从选项组中移除。
即使您从选项组中移除所有选项,Amazon RDS 也不会将其删除。与空选项组关联的数据库实例会继续
与之相关联;只是无法访问任何选项。
AWS 管理控制台
从选项组中移除选项
1.
Sign in to the AWS Management Console and open the Amazon RDS console at
https://console.aws.amazon.com/rds/.
2.
3.
在导航窗格中单击选项组。
选中您要移除的选项所在选项组对应的复选框,然后单击删除选项。
API Version 2013-05-15
215
Amazon Relational Database Service 用户指南
使用选项组
4.
在删除选项对话框中,请执行以下操作:
• 选中与要删除的选项相对应的复选框。
• 要使删除命令立即生效,在立即应用下单击是。如果选择否(默认),则会在下一个维护时段为每
个关联数据库实例删除此选项。
5.
根据需要设置完毕后,单击是,删除。
API Version 2013-05-15
216
Amazon Relational Database Service 用户指南
使用选项组
CLI
从选项组中移除选项
•
运行 rds-remove-option-from-option-group 命令处理您要删除的选项。要立即应用更改,请加入
--apply-immediately 参数。默认情况下,会在每个关联数据库实例的下一维护时段删除此选项。
以下示例会从名为 TestOptionGroup 的选项组中移除 Oracle Enterprise Manager Database Control
(OEM) 选项,并立即应用此更改。
PROMPT> rds-remove-option-from-option-group TestOptionGroup –options OEM -apply-immediately
命令输出类似于以下内容:
OPTIONGROUP testoptiongroup oracle-ee 11.2 Test option group
API
从选项组中移除选项
•
调用 ModifyOptionGroup 操作。
API Version 2013-05-15
217
Amazon Relational Database Service 用户指南
使用数据库参数组
使用数据库参数组
Topics
• 有关数据库参数组应了解的情况 (p. 218)
• 创建数据库参数组 (p. 218)
• 列出数据库参数组 (p. 220)
• 查看数据库参数组的参数值 (p. 222)
• 修改数据库参数组 (p. 224)
• 数据库参数值 (p. 226)
有关数据库参数组应了解的情况
您可以使用数据库参数组管理数据库引擎配置。数据库参数组就像是引擎配置值的容器,这些值可应用于
一个或多个数据库实例。如果创建的数据库实例未指定数据库参数组,将使用默认的数据库参数组。该默
认组包含数据库引擎默认值和 Amazon RDS 系统默认值,具体根据引擎、计算等级及实例的分配存储空
间而定。请注意,并非所有数据库引擎参数都可在数据库参数组中修改。
如果希望数据库实例运行用户修改的数据库参数组,只需创建一个新的数据库参数组,修改所需的参数并
修改数据库实例,就可以使用新的数据库参数组。属于特定数据库参数组的所有数据库实例都将获得该数
据库参数组的所有参数更新。
创建数据库参数组后,您需要将它添加为数据库实例的成员。将正在运行的数据库实例添加到数据库参数
组时,您需要重新启动数据库实例,以使新数据库参数组设置生效。
可将数据库参数的值指定为整数或通过公式、变量、函数和操作符构建的整数表达式。有关更多信息,请
参阅 数据库参数值 (p. 226)。
Caution
在数据库参数组内设置参数不恰当可能会产生意外的不利影响,包括性能降低和系统不稳定。修
改数据库参数时应始终保持谨慎,且修改数据库参数组前要备份数据。将参数组更改应用于生产
数据库实例前,您应当在测试数据库实例上试用这些参数组设置更改。
Note
有些 MySQL 参数限制或禁止数据库实例使用。有关更多信息,请参阅 RDS 数据库实例的 MySQL
参数异常错误 (p. 66)。
创建数据库参数组
在此例中,您将创建一个新数据库参数组。
AWS 管理控制台
创建数据库参数组
1.
Sign in to the AWS Management Console and open the Amazon RDS console at
https://console.aws.amazon.com/rds/.
2.
3.
单击窗口左侧导航列表内的数据库参数组。
单击创建数据库参数组按钮。
4.
此时会显示创建数据库参数组窗口。
在数据库参数组系列下拉列表框中选择一个数据库参数组系列。
API Version 2013-05-15
218
Amazon Relational Database Service 用户指南
使用数据库参数组
5.
6.
7.
在数据库参数组文本框内键入新数据库参数组的名称。
在描述文本框内键入新数据库参数组的描述。
单击是,创建按钮。
CLI
创建数据库参数组
•
使用 rds-create-db-parameter-group 命令。以下示例为 5.1 版 MySQL 创建名为 mydbparametergroup
的数据库参数组,其描述内容为“My new parameter group”。
PROMPT>rds-create-db-parameter-group mydbparametergroup -f MySQL5.1 -d "My
new parameter group"
此命令生成类似于下述信息的输出:
DBPARAMETERGROUP mydbparametergroup mysql5.1 My new parameter group
API
创建数据库参数组
•
调用 CreateDBParameterGroup。以下示例为 5.1 版 MySQL 创建名为 mydbparametergroup 的新
数据库参数组,其描述内容为“My new parameter group”。
API Version 2013-05-15
219
Amazon Relational Database Service 用户指南
使用数据库参数组
Example
https://rds.amazonaws.com/
?Action=CreateDBParameterGroup
&DBParameterGroupName=mydbparametergroup
&Description=My%20new%20parameter%20group
&DBParameterGroupFamily=MySQL5.1
&Version=2012-01-15
&SignatureVersion=2
&SignatureMethod=HmacSHA256
&Timestamp=2012-01-15T22%3A06%3A23.624Z
&AWSAccessKeyId=<AWS Access Key ID>
&Signature=<Signature>
此命令会返回类似以下内容的响应:
<CreateDBParameterGroupResponse xmlns="http://rds.amazonaws.com/admin/201201-15/">
<CreateDBParameterGroupResult>
<DBParameterGroup>
<DBParameterGroupFamily>mysql5.1</DBParameterGroupFamily>
<Description>My new parameter group</Description>
<DBParameterGroupName>mydbparametergroup</DBParameterGroupName>
</DBParameterGroup>
</CreateDBParameterGroupResult>
<ResponseMetadata>
<RequestId>700a8afe-0b81-11df-85f9-eb5c71b54ddc</RequestId>
</ResponseMetadata>
</CreateDBParameterGroupResponse>
列出数据库参数组
您可列出为 AWS 账户创建的数据库参数组。
Note
您首次描述 MySQL 5.5 参数组系列的引擎默认参数时,或首次未指定自定义 MySQL 5.5 参数组
而创建基于 MySQL 5.5 的数据库实例时,系统将自动创建 default.mysql5.5 参数组系列。
AWS 管理控制台
列出 AWS 账户的所有数据库参数组
1.
2.
Sign in to the AWS Management Console and open the Amazon RDS console at
https://console.aws.amazon.com/rds/.
单击窗口左侧导航列表内的数据库参数组。
数据库参数组会显示在我的数据库参数组列表中。
API Version 2013-05-15
220
Amazon Relational Database Service 用户指南
使用数据库参数组
CLI
列出 AWS 账户的所有数据库参数组
•
使用 rds-describe-db-parameter-groups 命令。以下示例列出 AWS 账户的所有可用数据库参数组。
PROMPT>rds-describe-db-parameter-groups
此命令会返回类似以下内容的响应:
DBPARAMETERGROUP default.mysql5.1 mysql5.1 Default parameter group for
MySQL5.1 DBPARAMETERGROUP default.mysql5.5 mysql5.5 Default parameter group
for MySQL5.5 DBPARAMETERGROUP mydbparametergroup mysql5.5 My new parameter
group
API
列出 AWS 账户的所有数据库参数组
•
调用 DescribeDBParameterGroups 操作。以下示例返回数据库参数组列表。
API Version 2013-05-15
221
Amazon Relational Database Service 用户指南
使用数据库参数组
Example
https://rds.amazonaws.com/
?Action=DescribeDBParameterGroups
&MaxRecords=100
&Version=2012-01-15
&SignatureVersion=2
&SignatureMethod=HmacSHA256
&Timestamp=2009-10-22T19%3A31%3A42.262Z
&AWSAccessKeyId=<AWS Access Key ID>
&Signature=<Signature>
此命令会返回类似以下内容的响应:
<DescribeDBParameterGroupsResponse xmlns="http://rds.amazonaws.com/admin/201201-15/">
<DescribeDBParameterGroupsResult>
<DBParameterGroups>
<DBParameterGroup>
<Engine>mysql5.1</Engine>
<Description>Default parameter group for MySQL5.1</Descrip
tion>
<DBParameterGroupName>default.mysql5.1</DBParameterGroupName>
</DBParameterGroup>
<DBParameterGroup>
<Engine>mysql5.1</Engine>
<Description>My new parameter group</Description>
<DBParameterGroupName>mydbparametergroup</DBParameterGroup
Name>
</DBParameterGroup>
</DBParameterGroups>
</DescribeDBParameterGroupsResult>
<ResponseMetadata>
<RequestId>41731881-0b82-11df-9a9b-c1bd5894571c</RequestId>
</ResponseMetadata>
</DescribeDBParameterGroupsResponse>
查看数据库参数组的参数值
您可获得数据库参数组内所有参数的列表及它们的值。
AWS 管理控制台
查看数据库参数组的参数值
1.
2.
Sign in to the AWS Management Console and open the Amazon RDS console at
https://console.aws.amazon.com/rds/.
单击窗口左侧导航列表内的数据库参数组。
数据库参数组会显示在我的数据库参数组列表中。
API Version 2013-05-15
222
Amazon Relational Database Service 用户指南
使用数据库参数组
3.
从我的数据库参数组列表内选择一个数据库参数组。
为数据库参数组定义的参数列表会显示在信息面板内。您可使用信息面板右上方的箭头键滚动参数。
CLI
查看数据库参数组的参数值
•
使用 rds-describe-db-parameters 命令。以下示例列出名为 mydbparametergroup 的数据库参数组的
参数和参数值。
PROMPT>rds-describe-db-parameters mydbparametergroup
此命令会返回类似以下内容的响应:
DBPARAMETER Parameter Name Parameter Value Source Data Type Apply Type Is
Modifiable DBPARAMETER allow-suspicious-udfs engine-default boolean static
false DBPARAMETER auto_increment_increment engine-default integer dynamic
true DBPARAMETER auto_increment_offset engine-default integer dynamic true
DBPARAMETER binlog_cache_size 32768 system integer dynamic true DBPARAMETER
socket /tmp/mysql.sock system string static false
API
查看数据库参数组的参数值
•
调用 DescribeDBParameters 操作。以下示例列出名为 mydbparametergroup 的数据库参数组的参
数和参数值。
Example
https://rds.amazonaws.com/
?Action=DescribeDBParameters
&DBParameterGroupName=mydbparametergroup
&MaxRecords=100
&Version=2012-01-15
&SignatureVersion=2
&SignatureMethod=HmacSHA256
&Timestamp=2009-10-22T19%3A31%3A42.262Z
&AWSAccessKeyId=<AWS Access Key ID>
&Signature=<Signature>
此命令会返回类似以下内容的响应:
<DescribeDBParametersResponse xmlns="http://rds.amazonaws.com/admin/201201-15/">
<DescribeDBParametersResult>
<Marker>bWF4X3RtcF90YWJsZXM=</Marker>
API Version 2013-05-15
223
Amazon Relational Database Service 用户指南
使用数据库参数组
<Parameters>
<Parameter>
<DataType>boolean</DataType>
<Source>engine-default</Source>
<IsModifiable>false</IsModifiable>
<Description>Controls whether user-defined functions that have only
an xxx symbol for the main function can be loaded</Description>
<ApplyType>static</ApplyType>
<AllowedValues>0,1</AllowedValues>
<ParameterName>allow-suspicious-udfs</ParameterName>
</Parameter>
<Parameter>
<DataType>integer</DataType>
<Source>engine-default</Source>
<IsModifiable>true</IsModifiable>
<Description>Intended for use with master-to-master replication,
and can be used to control the operation of AUTO_INCREMENT columns</Descrip
tion>
<ApplyType>dynamic</ApplyType>
<AllowedValues>1-65535</AllowedValues>
<ParameterName>auto_increment_increment</ParameterName>
</Parameter>
<Parameter>
<DataType>integer</DataType>
<Source>engine-default</Source>
<IsModifiable>true</IsModifiable>
<Description>Determines the starting point for the AUTO_INCREMENT
column value</Description>
<ApplyType>dynamic</ApplyType>
<AllowedValues>1-65535</AllowedValues>
<ParameterName>auto_increment_offset</ParameterName>
</Parameter>
(... sample truncated...)
</Parameters>
</DescribeDBParametersResult>
<ResponseMetadata>
<RequestId>99c0937a-0b83-11df-85f9-eb5c71b54ddc</RequestId>
</ResponseMetadata>
</DescribeDBParametersResponse>
修改数据库参数组
您可在数据库参数组内修改参数。根据参数类型(动态或静态)和为参数更新选择的应用方法,这些参数
会立即应用于属于数据库参数组的数据库实例,或在数据库实例下次重新启动时应用于该数据库实例。
数据库引擎
立即应用
等待重启
MySQL
动态
动态和静态
Oracle
动态
动态和静态
SQL Server
动态
仅静态
API Version 2013-05-15
224
Amazon Relational Database Service 用户指南
使用数据库参数组
AWS 管理控制台
修改数据库参数组
1.
2.
Sign in to the AWS Management Console and open the Amazon RDS console at
https://console.aws.amazon.com/rds/.
单击窗口左侧导航列表内的数据库参数组。
3.
可用的数据库参数组会显示在我的数据库参数组列表中。
在我的数据库参数组列表内,选择您要修改的参数组。
4.
5.
在窗口底部的信息面板内,选择编辑参数。
在编辑参数对话框内,更改您要修改的参数值。您可使用对话框右上方的箭头键滚动参数。
6.
请注意,您无法更改默认参数组内的值。
单击保存更改,然后在确认对话框内单击关闭。
CLI
修改数据库参数组
•
使用 rds-modify-db-parameter-group 命令。以下示例修改名为 mydbparametergroup 的数据
库参数组中的 max_connections 和 max_allowed_packet 值。
Note
Amazon RDS 不支持为单一参数传送用逗号分隔的多个参数值。
PROMPT>rds-modify-db-parameter-group mydbparametergroup --parameters
"name=max_connections,value=250,method=immediate" --parameters
"name=max_allowed_packet,value=1024,method=immediate"
此命令生成类似下面的输出:
DBPARAMETERGROUP mydbparametergroup
API
修改数据库参数组
Note
Amazon RDS 不支持为单一参数传送用逗号分隔的多个参数值。
•
调用 ModifyingDBParameterGroup 操作。以下示例修改名为 mydbparametergroup 的数据库参数组
中的 max_connections 和 max_allowed_packet 值。
API Version 2013-05-15
225
Amazon Relational Database Service 用户指南
使用数据库参数组
Example
https://rds.amazonaws.com/
?Action=ModifyDBParameterGroup
&DBParameterGroupName=mydbparametergroup
&Parameters.member.1.ParameterName=max_allowed_packet
&Parameters.member.1.ParameterValue=1024
&Parameters.member.1.ApplyMethod=immediate
&Version=2012-01-15
&SignatureVersion=2
&SignatureMethod=HmacSHA256
&Timestamp=2012-01-15T22%3A29%3A47.865Z
此命令会返回类似以下内容的响应:
<ModifyDBParameterGroupResponse xmlns="http://rds.amazonaws.com/admin/201201-15/">
<ModifyDBParameterGroupResult>
<DBParameterGroupName>mydbparametergroup</DBParameterGroupName>
</ModifyDBParameterGroupResult>
<ResponseMetadata>
<RequestId>3b824e10-0b87-11df-972f-21e99bc6881d</RequestId>
</ResponseMetadata>
</ModifyDBParameterGroupResponse>
数据库参数值
可将数据库参数的值指定为:
•
•
•
•
整型常量。
数据库参数公式。
数据库参数函数。
字符串常量。
数据库参数公式
数据库参数公式是用大括号括起来的解析为整数值的表达式:{}.可以为数据库参数值指定公式或将公式指
定为数据库参数函数的参数。
语法
{FormulaVariable}
{FormulaVariable*Integer}
{FormulaVariable*Integer/Integer}
API Version 2013-05-15
226
Amazon Relational Database Service 用户指南
使用数据库参数组
{FormulaVariable/Integer}
数据库参数公式变量
公式变量返回整数。变量名称区分大小写。
AllocatedStorage
返回数据卷的大小(以字节为单位)。
DBInstanceClassMemory
返回分配给与当前数据库实例关联的数据库实例的内存字节数,少于管理实例的 Amazon RDS 进程
所占用的内存。
EndPointPort
返回连接数据库实例时使用的端口号。
数据库参数公式运算符
数据库参数公式支持两种运算符:除法和乘法。
除法运算符:/
由除数除以被除数,返回整数商。商数的小数将被截断,而不四舍五入。
语法
dividend / divisor
被除数和除数参数必须为整数表达式。
乘法运算符:*
由除数除以被除数,返回整数商。商数的小数将被截断,而不四舍五入。
语法
expression * expression
两个表达式都必须为整数。
数据库参数函数
可将参数变量指定为整数或公式。每个函数都必须至少包含一个变量。多个参数可通过用逗号分隔的列表
指定。列表不能包含空成员,例如 argument1、argument3。函数名称区分大小写。
Note
CLI 目前不支持数据库参数函数。
GREATEST()
返回整数或参数公式列表中的最大值。
语法
GREATEST(argument1, argument2,...argumentn)
返回整数。
API Version 2013-05-15
227
Amazon Relational Database Service 用户指南
使用数据库参数组
LEAST()
返回整数或参数公式列表中的最小值。
语法
LEAST(argument1, argument2,...argumentn)
返回整数。
SUM()
加上指定整数或参数公式的值。
语法
SUM(argument1, argument2,...argumentn)
返回整数。
数据库参数值示例
这些示例显示了将公式和函数作为数据库参数值的情况。
Caution
在数据库参数组内设置参数不恰当可能会产生意外的不利影响,包括性能降低和系统不稳定。修
改数据库参数时应始终保持谨慎,且修改数据库参数组前要备份数据。将参数组更改应用于生产
数据库实例前,您应当在使用时间点还原创建的测试数据库实例上试用这些参数组更改。
您可以在 Oracle 进程参数中指定 GREATEST 函数,以将用户进程数量设置为大于 80 或 9868951 除以
DBInstanceClassMemory 的值。
GREATEST({DBInstanceClassMemory/9868951},80)
可在 MySQL max_binlog_cache_size 参数值中指定 LEAST() 函数,以将事务在 MySQL 实例中可以使用
的最大缓存大小设置为少于 1MB 或 DBInstanceClass/256 的值:
LEAST({DBInstanceClassMemory/256},10485760)
API Version 2013-05-15
228
Amazon Relational Database Service 用户指南
使用数据库安全组
使用数据库安全组
数据库安全组控制通过网络访问不在 VPC 内的数据库实例。默认情况下,禁止新数据库安全组进行网络
访问;必须在创建新数据库安全组后,专门授权其可访问 IP 范围或 EC2 安全组。
如果您是 Amazon RDS 的新客户,或者您是使用新区域的现有客户,您将具有默认的 VPC。要确定您是
否具有默认 VPC,请参阅下面的步骤 2。不能对 VPC 内的数据库实例使用数据库安全组;必须创建 VPC
安全组。有关创建 VPC 安全组的信息,请参阅您的 VPC 的安全组。
Topics
• 创建数据库安全组 (p. 229)
• 列出可用的数据库安全组 (p. 233)
• 查看数据库安全组 (p. 233)
• 从 IP 范围向数据库安全组授予网络访问权限 (p. 235)
• 授权从 Amazon EC2 实例通过网络访问数据库实例 (p. 237)
• 撤消从 IP 范围到数据库实例的网络访问权限 (p. 239)
• 相关主题 (p. 241)
创建数据库安全组
要创建数据库安全组,需要提供名称和描述。
AWS Management Console
创建数据库安全组
1.
2.
Sign in to the AWS Management Console and open the Amazon RDS console at
https://console.aws.amazon.com/rds/.
确定在当前区域中您的 AWS 账户支持的平台。
如果推荐的平台指示 EC2,VPC,在当前区域中,您的 AWS 账户不会使用默认 VPC。可继续按下方
的步骤创建数据库安全组,通过它可访问数据库实例。
API Version 2013-05-15
229
Amazon Relational Database Service 用户指南
使用数据库安全组
如果推荐的平台指示 VPC,在当前区域中,您的 AWS 账户会使用默认 VPC。这意味着您必须创建
VPC 安全组以允许访问数据库实例,而不是创建数据库安全组。有关创建 VPC 安全组的信息,请参
阅您的 VPC 的安全组。
API Version 2013-05-15
230
Amazon Relational Database Service 用户指南
使用数据库安全组
3.
4.
单击窗口左侧导航窗格中的安全组。
单击创建数据库安全组。
5.
在名称和说明文本框中键入新数据库安全组的名称和说明。注意,安全组名称不能含有空格。
API Version 2013-05-15
231
Amazon Relational Database Service 用户指南
使用数据库安全组
6.
单击是,创建。随即将创建数据库安全组。注意,默认情况下,不能通过新创建的数据库安全组访问
数据库实例。必须指定可访问数据库实例的 IP 地址范围或 Amazon EC2 安全组。要为数据库安全组
指定 IP 地址或 Amazon EC2 安全组,请参阅从 IP 范围向数据库安全组授予网络访问权限 (p. 235)。
CLI
创建数据库安全组
•
使用命令 rds-create-db-security-group 配合以下参数:
PROMPT>rds-create-db-security-group mydbsecuritygroup -d "My new security
group"
注意,默认情况下,不能通过新创建的数据库安全组访问数据库实例。必须指定可访问数据库实例的 IP
地址范围或 Amazon EC2 安全组。要为数据库安全组指定 IP 地址或 Amazon EC2 安全组,请参阅从 IP
范围向数据库安全组授予网络访问权限 (p. 235)。
API
创建数据库安全组
•
调用 CreateDBSecurityGroup 配合以下参数:
• DBSecurityGroupName =mydbsecuritygroup
• Description ="My new security group"
Example
https://rds.amazonaws.com/
?Action=CreateDBSecurityGroup
&DBParameterGroupName=mydbsecuritygroup
&Description=My%20new%20db%20security%20group
&Version=2012-01-15
&SignatureVersion=2
&SignatureMethod=HmacSHA256
&Timestamp=2012-01-20T22%3A06%3A23.624Z
&AWSAccessKeyId=<AWS Access Key ID>
&Signature=<Signature>
API Version 2013-05-15
232
Amazon Relational Database Service 用户指南
使用数据库安全组
注意,默认情况下,不能通过新创建的数据库安全组访问数据库实例。必须指定可访问数据库实例的 IP
地址范围或 Amazon EC2 安全组。要为数据库安全组指定 IP 地址或 Amazon EC2 安全组,请参阅从 IP
范围向数据库安全组授予网络访问权限 (p. 235)。
列出可用的数据库安全组
可列出已为 AWS 账户创建了哪些数据库安全组。
AWS Management Console
要列出 AWS 账户所有可用的数据库安全组,请执行以下操作
1.
Sign in to the AWS Management Console and open the Amazon RDS console at
https://console.aws.amazon.com/rds/.
2.
在窗口左侧的导航窗格中,单击数据库安全组。
随后将在数据库安全组列表中显示可用的数据库安全组。
CLI
要列出 AWS 账户所有可用的数据库安全组,请执行以下操作
•
使用命令 rds-describe-db-security-groups 列出 AWS 账户所有可用的数据库安全组。
PROMPT>rds-describe-db-security-groups
API
要列出 AWS 账户所有可用的数据库安全组,请执行以下操作
•
调用 DescribeDBSecurityGroups,不含任何参数。
Example
https://rds.amazonaws.com/
?Action=DescribeDBSecurityGroups
&MaxRecords=100
&Version=2009-10-16
&SignatureVersion=2
&SignatureMethod=HmacSHA256
&AWSAccessKeyId=<AWS Access Key ID>
&Signature=<Signature>
查看数据库安全组
可查看有关数据库安全组的详细信息以了解已向哪些 IP 范围授权。
AWS Management Console
要查看特定数据库安全组的属性,请执行以下操作
API Version 2013-05-15
233
Amazon Relational Database Service 用户指南
使用数据库安全组
1.
2.
3.
Sign in to the AWS Management Console and open the Amazon RDS console at
https://console.aws.amazon.com/rds/.
在窗口左侧的导航窗格中,单击数据库安全组。
选择要查看的数据库安全组的详细信息图标。
4.
随后将显示该数据库安全组的详细信息。
CLI
要查看特定数据库安全组的属性,请执行以下操作
•
使用 rds-describe-db-security-groups 查看数据库安全组。指定要查看的数据库安全组。
PROMPT>rds-describe-db-security-groups <mydbsecuritygroup>
API Version 2013-05-15
234
Amazon Relational Database Service 用户指南
使用数据库安全组
API
要查看特定数据库安全组的属性,请执行以下操作
•
调用 DescribeDBSecurityGroups 命令配合以下参数:
• DBSecurityGroupName =<mydbsecuritygroup>
Example
https://rds.amazonaws.com/
?Action=DescribeDBSecurityGroups
&DBParameterGroupName=mydbsecuritygroup
&Version=2009-10-16
&SignatureVersion=2
&SignatureMethod=HmacSHA256
&Timestamp=2009-10-16T22%3A23%3A07.107Z
&AWSAccessKeyId=<AWS Access Key ID>
&Signature=<Signature>
从 IP 范围向数据库安全组授予网络访问权限
默认情况下,禁止通过网络访问数据库实例。如果要访问不在 VPC 内的数据库实例,则必须为数据库安
全组设置访问规则以允许从特定 EC2 安全组或 CIDR IP 范围进行访问。然后,必须将该数据库实例与该
数据库安全组关联。此过程称为“传入”。为数据库安全组配置传入规则后,同一规则即适用于与该数据库
安全组关联的所有数据库实例。
Caution
如果要访问在防火墙后的数据库实例,请与网络管理员联系以确定应使用的 IP 地址。
下例中配置一个数据库安全组,其中具有 CIDR IP 范围的传入规则。
AWS Management Console
配置一个数据库安全组,其中具有 CIDR IP 范围的传入规则
1.
Sign in to the AWS Management Console and open the Amazon RDS console at
https://console.aws.amazon.com/rds/.
2.
3.
从控制台窗口左侧的导航窗格中,选择数据库安全组。
选择要授权的数据库安全组的详细信息图标。
API Version 2013-05-15
235
Amazon Relational Database Service 用户指南
使用数据库安全组
4.
在安全组详细信息部分中,选择连接类型下拉列表中的 CIDR/IP,在 CIDR 文本框中键入想要添加到
此数据库安全组的传入规则的 CIDR 范围,然后单击添加。
Tip
AWS Management Console 在“CIDR”文本字段下根据连接显示一个 CIDR IP。如果您不是
从防火墙后访问数据库实例,这可以是您可使用的 CIDR IP。
5.
传入规则的状态将是正在授权,直到新的传入规则应用到与修改的数据库安全组关联的所有数据库实
例。在成功应用了传入规则后,状态将更改为已授权。
CLI
要配置一个数据库安全组,其中具有 CIDR IP 范围的传入规则,请执行以下操作
•
使用命令 rds-authorize-db-security-group-ingress 修改数据库安全组。
PROMPT>rds-authorize-db-security-group-ingress mydbsecuritygroup --cidr-ip
192.168.1.10/27
API Version 2013-05-15
236
Amazon Relational Database Service 用户指南
使用数据库安全组
此命令应该生成类似于下述信息的输出:
SECGROUP
IP-RANGE
mydbsecuritygroup My new DBSecurityGroup
192.168.1.10/27 authorizing
API
要配置一个数据库安全组,其中具有 CIDR IP 范围的传入规则,请执行以下操作
•
调用 AuthorizeDBSecurityGroupIngress 命令配合以下参数:
• DBSecurityGroupName =mydbsecuritygroup
• CIDRIP =192.168.1.10/27
Example
https://rds.amazonaws.com/
?CIDRIP=192.168.1.10%2F27
&DBSecurityGroupName=mydbsecuritygroup
&Version=2009-10-16
&Action=AuthorizeDBSecurityGroupIngress
&SignatureVersion=2
&SignatureMethod=HmacSHA256
&Timestamp=2009-10-22T17%3A10%3A50.274Z
&AWSAccessKeyId=<AWS Access Key ID>
&Signature=<Signature>
授权从 Amazon EC2 实例通过网络访问数据库实例
如果要从 Amazon EC2 实例访问数据库实例,则必须先确定 EC2 实例和数据库实例是否在 VPC 中。如
果使用的是默认 VPC,则可分配在创建或修改 EC2 实例将访问的数据库实例时用于 EC2 实例的同一 EC2
或 VPC 安全组。
如果数据库实例和 EC2 实例不在 VPC 中,则必须为数据库实例的安全组配置一个传入规则,该规则允许
来自 Amazon EC2 实例的流量。为此,可将 EC2 实例的 Amazon EC2 安全组添加到数据库实例的数据
库安全组。本例中向 Amazon EC2 安全组的数据库安全组添加一个传入规则。
Important
• 向 Amazon EC2 安全组的数据库安全组添加传入规则仅允许从与该 Amazon EC2 安全组关联
的 Amazon EC2 实例访问您的数据库实例。
• 无法向所在 AWS 地区与您的数据库实例不同的 Amazon EC2 安全组授权。可向 IP 范围授权,
也可指定同一地区中的 Amazon EC2 安全组,后者指代另一地区中的 IP 地址。
API Version 2013-05-15
237
Amazon Relational Database Service 用户指南
使用数据库安全组
AWS Management Console
要向 Amazon EC2 安全组授予访问权限,请执行以下操作
1.
2.
Sign in to the AWS Management Console and open the Amazon RDS console at
https://console.aws.amazon.com/rds/.
从控制台窗口左侧的导航窗格中,选择数据库安全组。
3.
选择要授予访问权限的数据库安全组的详细信息图标。
4.
在安全组详细信息部分中,从连接类型下拉列表中选择“EC2 安全组”,然后选择您要使用的 Amazon
EC2 安全组。然后,单击添加。
5.
传入规则的状态将是正在授权,直到新的传入规则应用到与修改的数据库安全组关联的所有数据库实
例。在成功应用了传入规则后,状态将更改为已授权。
CLI
要向 Amazon EC2 安全组授予访问权限,请执行以下操作
•
使用命令 rds-authorize-db-security-group-ingress 向 Amazon EC2 安全组授权访问权限
API Version 2013-05-15
238
Amazon Relational Database Service 用户指南
使用数据库安全组
PROMPT>rds-authorize-db-security-group-ingress default --ec2-security-groupname myec2group --ec2-security-group-owner-id 987654321021
此命令应该生成类似于下述信息的输出:
SECGROUP Name
Description
SECGROUP default default
EC2-SECGROUP myec2group
987654321021
authorizing
API
要向 Amazon EC2 安全组授予网络访问权限,请执行以下操作
•
调用 AuthorizeDBSecurityGroupIngress 命令配合以下参数:
• EC2SecurityGroupName =myec2group
• EC2SecurityGroupOwnerId =987654321021
Example
https://rds.amazonaws.com/
?Action=AuthorizeDBSecurityGroupIngress
&EC2SecurityGroupOwnerId=987654321021
&EC2Security&shy;GroupName=myec2group
&Version=2009-10-16
&SignatureVersion=2
&SignatureMethod=HmacSHA256
&Timestamp=2009-10-22T17%3A10%3A50.274Z
&AWSAccessKeyId=<AWS Access Key ID>
&Signature=<Signature>
撤消从 IP 范围到数据库实例的网络访问权限
可通过撤消关联的 CIDR IP 传入规则,轻松撤消从某个 CIDR IP 范围通过网络访问属于某个数据库安全
组的数据库实例的权限。
在此示例中,您撤消了一个数据库安全组上的 CIDR IP 进入规则。
AWS Management Console
要撤消数据库安全组上 CIDR IP 范围的传入规则,请执行以下操作。
1.
2.
Sign in to the AWS Management Console and open the Amazon RDS console at
https://console.aws.amazon.com/rds/.
从控制台窗口左侧的导航窗格中,选择数据库安全组。
API Version 2013-05-15
239
Amazon Relational Database Service 用户指南
使用数据库安全组
3.
选择要撤销的传入规则所属的数据库安全组的详细信息图标。
4.
在安全组详细信息部分中,单击要撤消的传入规则旁的删除。
5.
该传入规则的状态将为正在撤销,直到已从所有与所修改的数据库安全组关联的数据库实例中删除该
传入规则为止。成功删除该传入规则后,将从该数据库安全组中删除该传入规则。
CLI
要撤消数据库安全组上 CIDR IP 范围的传入规则,请执行以下操作
•
使用命令 rds-revoke-db-security-group-ingress 修改数据库安全组。
PROMPT>rds-revoke-db-security-group-ingress <mydbsecuritygroup> --cidr-ip
192.168.1.1/27
此命令应该生成类似于下述信息的输出:
SECGROUP mydbsecuritygroup My new DBSecurityGroup
IP-RANGE 192.168.1.1/27 revoking
API Version 2013-05-15
240
Amazon Relational Database Service 用户指南
使用数据库安全组
API
要撤消数据库安全组上 CIDR IP 范围的传入规则,请执行以下操作
•
调用 RevokeDBSecurityGroupIngress 命令配合以下参数:
• DBSecurityGroupName =<mydbsecuritygroup>
• CIDRIP =192.168.1.10/27
Example
https://rds.amazonaws.com/
?Action=RevokeDBSecurityGroupIngress
&DBSecurityGroupName=mydbsecuritygroup
&CIDRIP=192.168.1.10%2F27
&Version=2009-10-16
&SignatureVersion=2&SignatureMethod=HmacSHA256
&Timestamp=2009-10-22T22%3A32%3A12.515Z
&AWSAccessKeyId=<AWS Access Key ID>
&Signature=<Signature>
相关主题
• Amazon RDS 安全组 (p. 60)
API Version 2013-05-15
241
Amazon Relational Database Service 用户指南
使用预留数据库实例
使用预留数据库实例
Topics
• 有关预留数据库实例应了解的情况 (p. 242)
• 描述可用预留数据库实例服务 (p. 243)
• 购买预留数据库实例 (p. 246)
• 描述预留数据库实例 (p. 248)
• 相关主题 (p. 251)
有关预留数据库实例应了解的情况
预留数据库实例能让您以极低的费率支付一次性前期费用,并可预留数据库实例一年或三年。可使用命令
行工具、API 或 AWS Management Console列出和购买当前有售的预留数据库实例产品。
现有三种预留实例在售:高使用率、中使用率、低使用率,通过这几种类型,可根据预期的使用率优化
Amazon RDS 成本。有关预留实例类型的详细信息,请参阅 Amazon RDS 预留实例。
高使用率预留数据库实例适合容量基准始终如一的工作负载,即运行稳定状态的工作负载。高使用率预留
数据库实例所需的前期投入最高,但如果计划运行时间超过预留数据库实例期的 79%,则节省程度最大
(最多比按需价格低 58%)。与其他预留数据库实例不同的是,使用高使用率预留数据库实例时,将支
付一次性费用,无论数据库实例是否运行,接下来在期限内只需支付较低的每小时费用。
如果计划长期使用预留数据库实例,但希望一次性费用较低或可灵活地在关闭数据库实例时停止付费,则
最好选择中使用率预留数据库实例。此产品类型相当于 Amazon RDS 的 2011-12-19 API 版之前销售的
预留数据库实例产品。当计划运行时间超过预留数据库实例期的 40% 时,中使用率预留实例是一种更具
成本效益的选择。此选项能节省按需定价 49% 以上的费用。使用中使用率预留数据库实例时,将支付稍
高于低使用率预留数据库实例的一次性费用,但在运行数据库实例时每小时的使用费率更低。
低使用率预留数据库实例最适合一天仅运行几小时或一周仅运行几天的周期性工作负载。使用低使用率预
留数据库实例时,将支付一次性费用,接下来在运行数据库实例时支付打折的每小时使用费。当实例运行
时间超过预留数据库实例期的 17% 时,即开始节省成本,在预留数据库实例的整个期限内,最多可节省
按需费率的 33%。
记住:用于预留实例购买的打折使用费与实例类型和可用区域相关联。如果关闭一个正在运行的数据库实
例,已在该数据库实例上通过购买预留数据库实例而享受折扣费率,并且该预留数据库实例的期限尚未到
期,则如果在期限内启动规格相同的另一数据库实例,则将继续享受该折扣费率。为预留实例预先付款
后,将预留供您使用的资源;由于为您预留这些资源,因此无论您是否使用这些资源,这些资源都将向您
收费。
下表汇总了不同预留数据库实例产品类型之间的区别。
预留实例提供物
提供物
预支费用
使用费
高利用率
最高
最低小时费用。无论是否 如果计划使用预留数据库
使用预留数据库实例,在 实例的时间超过 3 年期
整个期限内均按此收费。 的 79%,则总成本最
低。
中利用率
平均值
对使用数据库实例的每个 适合于弹性工作负载或者
小时收取每小时使用费。 当您预期为中度使用(即
超过 3 年期的 40%)。
API Version 2013-05-15
242
优势
Amazon Relational Database Service 用户指南
使用预留数据库实例
提供物
预支费用
使用费
优势
低利用率
最低
支付的小时使用费。在所
有产品类型中费用最高,
但仅在使用预留数据库实
例时收费。
如果计划一直运行预留数
据库实例,则总成本最
高,但是,如果预计不经
常使用预留数据库实例
(超过 3 年期的大约
15%),则总成本最
低。
描述可用预留数据库实例服务
在购买预留数据库实例之前,可了解有关在售预留数据库实例产品的信息。
此示例显示了如何获取可用预留数据库实例服务的定价和信息。
AWS Management Console
获取可用预留数据库实例服务的定价和信息
1.
2.
3.
4.
5.
6.
7.
8.
9.
Sign in to the AWS Management Console and open the Amazon RDS console at
https://console.aws.amazon.com/rds/.
在导航窗格中,单击预留数据库购买链接。
单击购买预留数据库实例。
使用产品描述下拉列表框选择数据库引擎和许可类型。
从数据库实例类下拉列表框中选择数据库实例类。
从多可用区域部署下拉列表框中选择是否需要多可用区域部署。
从期限下拉列表框中选择需要预留数据库实例的时间长度。
从产品类型下拉列表框中选择产品类型。
选择产品类型后,即显示相应信息。选择所需的预留实例后,单击继续。
10. 汇总屏幕显示实例信息和成本。单击页面右上角的 X 可避免产生任何费用。
CLI
获取有关预留数据库实例的信息
•
在命令提示符处输入下面的命令:
PROMPT>rds-describe-reserved-db-instances-offerings --headers
此调用返回类似于下述信息的输出:
API Version 2013-05-15
243
Amazon Relational Database Service 用户指南
使用预留数据库实例
OFFERING
Duration
OFFERING
OfferingId
Class
Multi-AZ
Fixed Price Usage Price Description Offering Type
438012d3-4052-4cc7-b2e3-8d3372e0e706 db.m1.large
y
1820.00 USD 0.368 USD
mysql
Medium Utilization
OFFERING 649fd0c8-cf6d-47a0-bfa6-060f8e75e95f db.m1.small
n
227.50 USD 0.046 USD
mysql
Medium Utilization
OFFERING 123456cd-ab1c-47a0-bfa6-12345667232f db.m1.small
n
162.00 USD
0.00 USD
mysql
Heavy Utilization
Recurring Charges:
Amount Currency Frequency
Recurring Charges:
0.123
USD
Hourly
OFFERING 123456cd-ab1c-37a0-bfa6-12345667232d db.m1.large
y
700.00 USD
0.00 USD
mysql
Heavy Utilization
Recurring Charges:
Amount Currency Frequency
Recurring Charges:
1.25
USD
Hourly
OFFERING 123456cd-ab1c-17d0-bfa6-12345667234e db.m1.xlarge n
4242.00 USD
2.42 USD
mysql
Light Utilization
API
获取有关可用预留数据库实例的信息
•
调用 DescribeReservedDBInstancesOfferings。
Example
https://rds.amazonaws.com/
?Action=DescribeReservedDBInstancesOfferings
&Version=2012-01-15
&SignatureVersion=2
&SignatureMethod=HmacSHA256
&Timestamp=2012-01-18T18%3A31%3A36.118Z
&AWSAccessKeyId=<AWS Access Key ID>
&Signature=<Signature>
此调用返回类似于下述信息的输出:
<DescribeReservedDBInstancesOfferingsResponse xmlns="http://rds.amazon
aws.com/doc/2012-01-15/">
<DescribeReservedDBInstancesOfferingsResult>
<ReservedDBInstancesOfferings>
<ReservedDBInstancesOffering>
<Duration>31536000</Duration>
<OfferingType>Medium Utilization</OfferingType>
<CurrencyCode>USD</CurrencyCode>
<RecurringCharges/>
<FixedPrice>1820.0</FixedPrice>
<ProductDescription>mysql</ProductDescription>
<UsagePrice>0.368</UsagePrice>
<MultiAZ>true</MultiAZ>
<ReservedDBInstancesOfferingId>438012d3-4052-4cc7-b2e38d3372e0e706</ReservedDBInstancesOfferingId>
<DBInstanceClass>db.m1.large</DBInstanceClass>
API Version 2013-05-15
244
1y
1y
1y
1y
1y
Amazon Relational Database Service 用户指南
使用预留数据库实例
</ReservedDBInstancesOffering>
<ReservedDBInstancesOffering>
<Duration>31536000</Duration>
<OfferingType>Medium Utilization</OfferingType>
<CurrencyCode>USD</CurrencyCode>
<RecurringCharges/>
<FixedPrice>227.5</FixedPrice>
<ProductDescription>mysql</ProductDescription>
<UsagePrice>0.046</UsagePrice>
<MultiAZ>false</MultiAZ>
<ReservedDBInstancesOfferingId>649fd0c8-cf6d-47a0-bfa6060f8e75e95f</ReservedDBInstancesOfferingId>
<DBInstanceClass>db.m1.small</DBInstanceClass>
</ReservedDBInstancesOffering>
<ReservedDBInstancesOffering>
<Duration>31536000</Duration>
<OfferingType>Heavy Utilization</OfferingType>
<CurrencyCode>USD</CurrencyCode>
<RecurringCharges>
<RecurringCharge>
<RecurringChargeFrequency>Hourly</RecurringChargeFrequency>
<RecurringChargeAmount>0.123</RecurringChargeAmount>
</RecurringCharge>
</RecurringCharges>
<FixedPrice>162.0</FixedPrice>
<ProductDescription>mysql</ProductDescription>
<UsagePrice>0.0</UsagePrice>
<MultiAZ>false</MultiAZ>
<ReservedDBInstancesOfferingId>TEMP-DELETE-1</ReservedDBInstancesOf
feringId>
<DBInstanceClass>db.m1.small</DBInstanceClass>
</ReservedDBInstancesOffering>
<ReservedDBInstancesOffering>
<Duration>31536000</Duration>
<OfferingType>Heavy Utilization</OfferingType>
<CurrencyCode>USD</CurrencyCode>
<RecurringCharges>
<RecurringCharge>
<RecurringChargeFrequency>Hourly</RecurringChargeFrequency>
<RecurringChargeAmount>1.25</RecurringChargeAmount>
</RecurringCharge>
</RecurringCharges>
<FixedPrice>700.0</FixedPrice>
<ProductDescription>mysql</ProductDescription>
<UsagePrice>0.0</UsagePrice>
<MultiAZ>true</MultiAZ>
<ReservedDBInstancesOfferingId>TEMP-DELETE-2</ReservedDBInstancesOf
feringId>
<DBInstanceClass>db.m1.large</DBInstanceClass>
</ReservedDBInstancesOffering>
<ReservedDBInstancesOffering>
<Duration>31536000</Duration>
<OfferingType>Light Utilization</OfferingType>
<CurrencyCode>USD</CurrencyCode>
<RecurringCharges/>
<FixedPrice>4242.0</FixedPrice>
<ProductDescription>mysql</ProductDescription>
<UsagePrice>2.42</UsagePrice>
API Version 2013-05-15
245
Amazon Relational Database Service 用户指南
使用预留数据库实例
<MultiAZ>false</MultiAZ>
<ReservedDBInstancesOfferingId>TEMP-DELETE-3</ReservedDBInstancesOf
feringId>
<DBInstanceClass>db.m1.xlarge</DBInstanceClass>
</ReservedDBInstancesOffering>
</ReservedDBInstancesOfferings>
</DescribeReservedDBInstancesOfferingsResult>
<ResponseMetadata>
<RequestId>5e4ec40b-2978-11e1-9e6d-771388d6ed6b</RequestId>
</ResponseMetadata>
</DescribeReservedDBInstancesOfferingsResponse>
购买预留数据库实例
此示例显示了如何购买预留数据库实例服务。
Important
按本节中的示例操作将在您的 AWS 账户上产生费用。
AWS Management Console
本例展示购买特定的预留数据库实例产品 649fd0c8-cf6d-47a0-bfa6-060f8e75e95f,预留数据库实例 ID
为 myreservationID。
购买预留数据库实例
1.
2.
3.
4.
5.
6.
Sign in to the AWS Management Console and open the Amazon RDS console at
https://console.aws.amazon.com/rds/.
在导航窗格中,单击预留数据库实例链接。
单击购买预留数据库实例按钮。
从产品描述下拉列表框中选择数据库引擎类型。
从数据库实例类下拉列表框中选择数据库实例类。
从多可用区域部署下拉列表框中选择是否需要多可用区域部署。
7.
8.
9.
10.
从期限下拉列表框中选择需要预留数据库实例的时间长度。
从产品类型下拉列表框中选择产品类型。
可在预留数据库 ID 文本框中输入预留数据库实例 ID。
单击继续按钮。
购买预留数据库实例对话框显示所选的预留数据库实例属性以及到期应付款的汇总。
11. 单击是,购买按钮以继续购买预留数据库实例。
CLI
本例展示购买特定的预留数据库实例产品 649fd0c8-cf6d-47a0-bfa6-060f8e75e95f,预留数据库实例 ID
为 myreservationID。
购买预留数据库实例
•
在命令提示符处输入下面的命令:
API Version 2013-05-15
246
Amazon Relational Database Service 用户指南
使用预留数据库实例
PROMPT>rds-purchase-reserved-db-instances-offering 649fd0c8-cf6d-47a0-bfa6060f8e75e95f -i myreservationID
该命令返回的输出类似于下方内容:
RESERVATION ReservationId
Class
Multi-AZ Start Time
Duration Fixed Price Usage Price Count State
Description
Offering Type
RESERVATION myreservationid
db.m1.small y
2011-1219T00:30:23.247Z 1y
455.00 USD
0.092 USD
1
payment-pending
mysql
Medium Utilization
API
本例展示购买特定的预留数据库实例产品 649fd0c8-cf6d-47a0-bfa6-060f8e75e95f,预留数据库实例 ID
为 myreservationID。
购买预留数据库实例
•
调用 PurchaseReservedDBInstancesOffering 命令配合以下参数:
• ReservedDBInstancesOfferingId =649fd0c8-cf6d-47a0-bfa6-060f8e75e95f
• ReservedDBInstanceID =myreservationID
• DBInstanceCount =1
API Version 2013-05-15
247
Amazon Relational Database Service 用户指南
使用预留数据库实例
Example
https://rds.amazonaws.com/
?Action=PurchaseReservedDBInstancesOffering
&ReservedDBInstancesOfferingId=649fd0c8-cf6d-47a0-bfa6-060f8e75e95f
&ReservedDBInstanceID=myreservationID
&DBInstanceCount=1
&SignatureVersion=2
&SignatureMethod=HmacSHA256
&Timestamp=2012-01-14T17%3A48%3A21.746Z
&AWSAccessKeyId=<AWS Access Key ID>
&Signature=<Signature>
此调用返回类似于下述信息的输出:
<PurchaseReservedDBInstancesOfferingResponse xmlns="http://rds.amazon
aws.com/doc/2012-01-15/">
<PurchaseReservedDBInstancesOfferingResult>
<ReservedDBInstance>
<OfferingType>Medium Utilization</OfferingType>
<CurrencyCode>USD</CurrencyCode>
<RecurringCharges/>
<ProductDescription>mysql</ProductDescription>
<ReservedDBInstancesOfferingId>649fd0c8-cf6d-47a0-bfa6060f8e75e95f</ReservedDBInstancesOfferingId>
<MultiAZ>true</MultiAZ>
<State>payment-pending</State>
<ReservedDBInstanceId>myreservationID</ReservedDBInstanceId>
<DBInstanceCount>10</DBInstanceCount>
<StartTime>2011-12-18T23:24:56.577Z</StartTime>
<Duration>31536000</Duration>
<FixedPrice>123.0</FixedPrice>
<UsagePrice>0.123</UsagePrice>
<DBInstanceClass>db.m1.small</DBInstanceClass>
</ReservedDBInstance>
</PurchaseReservedDBInstancesOfferingResult>
<ResponseMetadata>
<RequestId>7f099901-29cf-11e1-bd06-6fe008f046c3</RequestId>
</ResponseMetadata>
</PurchaseReservedDBInstancesOfferingResponse>
描述预留数据库实例
您可以获取有关 AWS 账户的预留数据库实例的信息。
AWS 管理控制台
获取有关 AWS 账户的预留数据库实例的信息
1.
Sign in to the AWS Management Console and open the Amazon RDS console at
https://console.aws.amazon.com/rds/.
API Version 2013-05-15
248
Amazon Relational Database Service 用户指南
使用预留数据库实例
2.
在导航窗格中,单击预留数据库实例链接。
“我的数据库实例”列表中会显示您账户中的预留数据库实例。可单击列表中的任何预留数据库实例,
在控制台底部的详细信息窗格中查看有关该预留数据库实例的详细信息。
CLI
获取有关 AWS 账户的预留数据库实例的信息
•
在命令提示符处输入下面的命令:
PROMPT>rds-describe-reserved-db-instances --headers
此命令应该返回类似于下述信息的输出:
RESERVATION ReservationId Class Multi-AZ Start Time Duration Fixed Price
Usage Price Count State Description Offering Type RESERVATION ki-real-ritest5 db.m1.small y 2011-12-09T23:37:44.720Z 1y 455.00 USD 0.092 USD 1 retired
mysql Medium Utilization
API
获取有关 AWS 账户的预留数据库实例的信息
•
调用 DescribeReservedDBInstances。
API Version 2013-05-15
249
Amazon Relational Database Service 用户指南
使用预留数据库实例
Example
https://rds.amazonaws.com/
?Action=DescribeReservedDBInstances
&Version=2012-01-15
&SignatureVersion=2
&SignatureMethod=HmacSHA256
&Timestamp=2012-01-15T17%3A48%3A21.746Z
&AWSAccessKeyId=<AWS Access Key ID>
&Signature=<Signature>
API 返回类似于下述信息的输出:
<DescribeReservedDBInstancesResponse xmlns="http://rds.amazonaws.com/doc/201201-15/">
<DescribeReservedDBInstancesResult>
<ReservedDBInstances>
<ReservedDBInstance>
<OfferingType>Medium Utilization</OfferingType>
<CurrencyCode>USD</CurrencyCode>
<RecurringCharges/>
<ProductDescription>mysql</ProductDescription>
<ReservedDBInstancesOfferingId>649fd0c8-cf6d-47a0-bfa6060f8e75e95f</ReservedDBInstancesOfferingId>
<MultiAZ>false</MultiAZ>
<State>payment-failed</State>
<ReservedDBInstanceId>myreservationid</ReservedDBInstanceId>
<DBInstanceCount>1</DBInstanceCount>
<StartTime>2010-12-15T00:25:14.131Z</StartTime>
<Duration>31536000</Duration>
<FixedPrice>227.5</FixedPrice>
<UsagePrice>0.046</UsagePrice>
<DBInstanceClass>db.m1.small</DBInstanceClass>
</ReservedDBInstance>
<ReservedDBInstance>
<OfferingType>Medium Utilization</OfferingType>
<CurrencyCode>USD</CurrencyCode>
<RecurringCharges/>
<ProductDescription>mysql</ProductDescription>
<ReservedDBInstancesOfferingId>649fd0c8-cf6d-47a0-bfa6060f8e75e95f</ReservedDBInstancesOfferingId>
<MultiAZ>false</MultiAZ>
<State>payment-failed</State>
<ReservedDBInstanceId>myreservationid2</ReservedDBInstanceId>
<DBInstanceCount>1</DBInstanceCount>
<StartTime>2010-12-15T01:07:22.275Z</StartTime>
<Duration>31536000</Duration>
<FixedPrice>227.5</FixedPrice>
<UsagePrice>0.046</UsagePrice>
<DBInstanceClass>db.m1.small</DBInstanceClass>
</ReservedDBInstance>
</ReservedDBInstances>
</DescribeReservedDBInstancesResult>
<ResponseMetadata>
API Version 2013-05-15
250
Amazon Relational Database Service 用户指南
使用预留数据库实例
<RequestId>23400d50-2978-11e1-9e6d-771388d6ed6b</RequestId>
</ResponseMetadata>
</DescribeReservedDBInstancesResponse>
相关主题
• Amazon RDS 付费方法 (p. 4)
API Version 2013-05-15
251
Amazon Relational Database Service 用户指南
将 Amazon RDS 与 Amazon Virtual Private Cloud 结合使用
将 Amazon RDS 与 Amazon Virtual Private Cloud 结
合使用
本部分介绍了在 VPC 中使用数据库实例的常见任务。有关在 VPC 中使用 Amazon RDS 的详细信息,请
参阅 Amazon RDS 和 Amazon Virtual Private Cloud 服务 (p. 40)。有关 Amazon VPC 的详细信息,请参
阅 Amazon Virtual Private Cloud 文档。
Topics
• 确定是否具有默认 VPC (p. 252)
• 在 VPC 中创建数据库实例 (p. 253)
Note
如果要启动 VPC 中的数据库实例,则必须将该 VPC 的实例租期属性设置为默认值。有关 VPC
中实例租期的信息,请参阅《Amazon Virtual Private Cloud 用户指南》中的使用 EC2 专用实例。
所有默认 VPC 的实例租期属性均设置为默认值。
确定是否具有默认 VPC
2013 年初在若干地区推出了可在默认 VPC 中创建数据库实例的功能。现已增加了其他地区,并且不久就
会有更多地区获得此功能。某些新 Amazon RDS 客户和某些从未用过 Amazon RDS 或 Amazon EC2 的
现有客户均已具有使用默认 VPC 的功能。可根据以下过程确定是否具有 VPC。有关将 Amazon RDS 与
VPC 结合使用的详细信息,请参阅 Amazon RDS 和 Amazon Virtual Private Cloud 服务 (p. 40)
控制台
要确定是否具有默认 VPC,请执行以下操作
在 AWS Management Console中,确认已在导航栏中选择了所需的地区。在控制台的我的资源部分中,
查看支持的平台。值为 EC2,VPC 表示必须使用 Amazon VPC 服务创建 VPC,并且没有默认 VPC。值
VPC 表示具有默认 VPC,并且将在默认 VPC 中启动所有数据库实例。注意,即使具有默认 VPC,也可
使用 Amazon VPC 服务创建 VPC。
例如,以下内容表示 AWS 账户具有默认 VPC,并且该默认 VPC 的标识符为 vpc-7553fa1d。
API Version 2013-05-15
252
Amazon Relational Database Service 用户指南
将 Amazon RDS 与 Amazon Virtual Private Cloud 结合使用
在 VPC 中创建数据库实例
如果 AWS 账户没有默认 VPC,或在特定地区没有默认 VPC,则可使用 Amazon VPC 服务创建 VPC,
并在该 VPC 中启动数据库实例。
在 VPC 中创建数据库实例分为四个步骤。
1. 步骤 1:创建 Virtual Private Cloud (VPC) (p. 253)
2. 步骤 2:创建数据库子网组 (p. 254)
3. 步骤 3:创建 VPC 安全组 (p. 255)
4. 步骤 4:在 VPC 中创建数据库实例 (p. 255)
步骤 1:创建 Virtual Private Cloud (VPC)
应清楚地了解要用于 VPC 的方案类型。使用 Amazon VPC 的场景上记载了使用 VPC 的最常见场景。其
中每个场景均有详细解释该场景情景的链接,并且章节末尾有一个称为实施情景的链接,给出如何针对该
情景创建 VPC 的说明。按照这些说明创建 VPC。
创建 VPC 后,即至少需要在两个可用区域中创建该 VPC 中的一个子网。在创建数据库子网组时将使用
这些子网。
API Version 2013-05-15
253
Amazon Relational Database Service 用户指南
将 Amazon RDS 与 Amazon Virtual Private Cloud 结合使用
如果希望可公开访问 VPC 中的数据库实例,则必须通过启用 VPC 属性“DNS 主机名”和“DNS 解析”,更
新 VPC 的 DNS 信息。有关更新 VPC 实例的 DNS 信息的信息,请参阅更新对 VPC 的 DNS 支持。有关
Amazon VPC 的详细信息,请参阅 Amazon VPC 文档以了解有关创建 VPC 的详细说明。
相关主题
• 步骤 2:创建数据库子网组 (p. 254)
• 步骤 3:创建 VPC 安全组 (p. 255)
• 步骤 4:在 VPC 中创建数据库实例 (p. 255)
步骤 2:创建数据库子网组
数据库子网组是建议为 VPC 创建并随后指定给数据库实例的子网(通常为私有子网)集合。通过数据库
子网组,可在使用 CLI 或 API 创建数据库实例时指定特定 VPC;如果使用 Amazon RDS 控制台,则只
需选择要使用的 VPC 和子网。每个数据库子网组必须在地区内的至少两个可用区域中有至少一个子网。
在 VPC 中创建数据库实例时,必须选择数据库子网组。Amazon RDS 随后使用该数据库子网组和首选可
用区域选择一个子网及该子网中的一个 IP 地址。Amazon RDS 创建该数据库实例的弹性网络接口,并将
该接口与该 IP 地址关联。对于多可用区域部署,通过为地区内的两个或更多可用区域定义子网,如果需
求增加,则 Amazon RDS 可在另一个可用区域中新建备用实例。即使是单一可用区域部署,您也需要这
样做,以防以后需要将它们转换为多可用区域部署。
在本例中,您创建一个数据库子网组,然后添加为 VPC 创建的子网。
AWS Management Console
创建数据库子网组并关联数据库安全组
1.
2.
3.
4.
5.
6.
7.
8.
Open the Amazon RDS console at https://console.aws.amazon.com/rds/.
在控制台窗口左侧的导航窗格中单击子网组。
单击创建数据库子网组按钮。
在名称文本框中键入数据库子网组的名称。
在说明文本框中键入数据库子网组的描述。
从 VPC ID 下拉列表框中选择所创建的 VPC。
在说明文本框中键入数据库子网组的描述。
单击将子网添加到此子网组部分中的添加所有子网链接。
9.
单击是,创建。
API Version 2013-05-15
254
Amazon Relational Database Service 用户指南
将 Amazon RDS 与 Amazon Virtual Private Cloud 结合使用
10. 单击关闭。
随后将在 RDS 控制台上的数据库子网组列表中显示新数据库子网组。可单击该数据库子网组,在窗
口底部的详细信息窗格中查看详细信息,其中包括与该组关联的所有子网。
现已创建数据库子网组,可启动要在 VPC 中运行的数据库实例。有关示例,请继续进行步骤 4:在 VPC
中创建数据库实例 (p. 255)。
相关主题
• 步骤 3:创建 VPC 安全组 (p. 255)
• 步骤 4:在 VPC 中创建数据库实例 (p. 255)
• 步骤 1:创建 Virtual Private Cloud (VPC) (p. 253)
步骤 3:创建 VPC 安全组
在创建数据库实例之前,必须创建一个 VPC 安全组与该数据库实例关联。可在 Amazon VPC 文档中了
解如何创建 VPC 安全组
相关主题
• 步骤 4:在 VPC 中创建数据库实例 (p. 255)
• 步骤 1:创建 Virtual Private Cloud (VPC) (p. 253)
• 步骤 2:创建数据库子网组 (p. 254)
步骤 4:在 VPC 中创建数据库实例
此步骤中,在新建的 VPC 中创建一个 MySQL 数据库实例。如果希望可公开访问 VPC 中的数据库实例,
则必须启用 VPC 属性“DNS 主机名”和“DNS 解析”。有关更新 VPC 实例的 DNS 信息的信息,请参阅更新
对 VPC 的 DNS 支持。
AWS Management Console
在 VPC 中创建 Amazon RDS 数据库实例
1.
2.
3.
4.
在导航窗格中,单击实例。
单击启动数据库实例按钮。
单击 MySQL 数据库引擎对应的选择按钮。
在数据库实例启动向导的数据库实例详细信息面板上,选择您的数据库实例配置。单击继续。
5.
6.
在其他配置页上,用选择 VPC 下拉列表框选择所创建的 VPC。
从子网组下拉列表框中选择所创建的数据库子网组。
7.
8.
9.
单击继续。
在管理选项页中,保持默认选项,然后单击继续。
在“检查”页中,单击启动数据库实例。
10. 在确认页上,单击关闭。
11. 可在 RDS 控制台的数据库实例列表中看到您的数据库实例。单击视图可查看详细信息窗格。运行您
的数据库实例后,请记下在详细信息窗格中显示的终端节点;将使用它连接到您的数据库实例。
API Version 2013-05-15
255
Amazon Relational Database Service 用户指南
将 Amazon RDS 与 Amazon Virtual Private Cloud 结合使用
相关主题
• 步骤 1:创建 Virtual Private Cloud (VPC) (p. 253)
• 步骤 2:创建数据库子网组 (p. 254)
• 步骤 3:创建 VPC 安全组 (p. 255)
API Version 2013-05-15
256
Amazon Relational Database Service 用户指南
使用预置 IOPS 存储
使用预置 IOPS 存储
Topics
• 有关预置 IOPS 存储应了解的情况 (p. 257)
• 修改数据库实例以使用预置 IOPS 存储 (p. 260)
• 修改使用预置 IOPS 存储的数据库实例的 IOPS 和存储设置 (p. 262)
• 创建使用预置 IOPS 存储的数据库实例 (p. 263)
• 创建使用预置 IOPS 存储的只读副本 (p. 265)
有关预置 IOPS 存储应了解的情况
如果要求性能稳定,并且数据库工作负载产生大量随机 I/O,则可使用 Amazon RDS 预置 IOPS(每秒输
入/输出操作数)存储提高数据库实例的性能。预置 IOPS 存储是一种存储方式,可提供快速、可预测和
一致的吞吐量性能。创建数据库实例时,指定 IOPS 速率和存储空间分配。Amazon RDS 预置该 IOPS
速率和存储空间,有效期为数据库实例的整个生命周期或直到更改这两项设置为止。预置 IOPS 存储针对
性能要求严苛的联机事务处理 (OLTP) 工作负载进行了优化。
Note
无法减小为数据库实例分配的标准存储或预置 IOPS 存储。
可使用 AWS Management Console、Amazon RDS API 或命令行界面 (CLI) 创建使用预置 IOPS 存储的
数据库实例。由您指定所需的 IOPS 速率和存储空间容量。预置的 MySQL 或 Oracle 数据库实例的 IOPS
速率最大可达 30000,分配的存储空间最大可达 3 TB。预置的 SQL Server 数据库实例的 IOPS 速率最
大可达 10000,分配的存储空间最大可达 1 TB。
Note
实际达到的 IOPS 可能与指定的值不同,具体取决于数据库工作负载、数据库实例大小以及数据
库引擎可用的页面大小和通道带宽。有关更多信息,请参阅 影响实际达到的 IOPS 速率的因
素 (p. 258)。
请求的 IOPS 速率与分配的存储空间容量的比率很重要。对于 MySQL 和 Oracle 数据库实例,数据库实
例的 IOPS 与存储空间(以 GB 计)的比率应在 3:1 到 10:1 之间。对于 SQL Server 数据库实例,该比
率应为 10:1。例如,可先预置一个 Oracle 数据库实例,具有 1000 IOPS 和 200 GB 存储空间(比率为
5:1)。然后,可扩展到 2000 IOPS 和 200 GB 存储空间(比值为 10:1)、3000 IOPS 和 300 GB 存储空
间,直到 30000 IOPS 和 3 TB (3000 GB) 存储空间的 Oracle 数据库引擎。
下表显示每个数据库引擎的 IOPS 和存储空间范围。
预置 IOPS 的范围
存储空间的范围
IOPS 与存储
空间 (GB) 的
比率的范围
MySQL
1000 - 30000 IOPS
100 GB - 3 TB
3:1 - 10:1
Oracle
1000 - 30000 IOPS
100 GB - 3 TB
3:1 - 10:1
SQL Server Express 和
Web
1000 - 10000 IOPS
100 GB - 1 TB
10:1
SQL Server Standard 和
Enterprise 版
2000 - 10000 IOPS
200 GB - 1 TB
10:1
API Version 2013-05-15
257
Amazon Relational Database Service 用户指南
使用预置 IOPS 存储
可修改现有的 Oracle 或 MySQL 数据库实例以使用预置 IOPS 存储,也可修改预置 IOPS 存储的设置。
影响实际达到的 IOPS 速率的因素
实际达到的 IOPS 速率可能与所预置的数量不同,具体取决于页面大小和网络带宽,这二者在某种程度上
由数据库引擎决定。数据库实例大小和数据库工作负载也会影响该速率。
页面大小和通道带宽
理论最大 IOPS 速率还是数据库 I/O 页面大小和可用通道带宽的函数。MySQL 使用 16 KB 的页面大小,
而 Oracle 和 SQL Server 使用 8 KB。在具有 1000 兆位每秒 (Mbps) 的全双工 I/O 通道带宽的数据库实例
上,页面 I/O 的最大 IOPS 约为每方向 6250 IOPS(对于 16 KB I/O)和每方向 12500 IOPS(对于 8 KB
I/O)。一半读取一半写入的工作负载可达到 12500 IOPS(对于 16 KB I/O)或 25000 IOPS(对于 8 KB
I/O)。
如果某个通道上的流量满载,则不能重新分配另一个通道上的可用 IOPS。因此,可达到的 IOPS 速率将
小于预置 IOPS 速率。
读取或写入每页均构成一个 I/O 操作。读取或写入多页的数据库操作将对每个数据库操作使用多个 I/O 操
作。就 PIOPS 容量占用而言,将大于 16 KB 的 IO 请求视为多个 IO。一个 20 KB 的 IO 请求将占用 1.25
个 IO,一个 24 KB 的请求将占用 1.5 个 IO,一个 32 KB 的请求将占用 2 个 IO,以此类推。不将 IO 请
求拆分为多个单独的 IO;而是将所有 IO 请求原封不动地提交到存储设备。例如,如果数据库提交一个
128 KB 的 IO 请求,则该请求作为一个 128 KB 的 IO 请求进入存储设备,但它将占用与 8 个 16 KB 的
IO 请求等量的 PIOPS 容量。
下表显示每个数据库引擎的页面大小和理论最大 IOPS 速率。IOPS 速率以 m2.4xlarge 实例类为准,该类
为全双工,并具有在读写之间达到完全平衡的工作负载。SQL Server 限于 10000 的原因是当前存储空间
的限制为 1 TB,并且当前 IOPS 与存储空间的最大比率为 10:1。
数据库引擎
页面大小
最大 IOPS 速率
MySQL
16 KB
20,000
Oracle
8 KB
25,000
SQL Server
8 KB
10,000
Note
如果预置的 IOPS 速率高于最大 IOPS 速率或高于实际达到的速率,则仍可从降低延迟和提高总
体吞吐量获益。
数据库实例类
如果使用的与预置 IOPS 存储,则建议使用 m1.large、m1.xlarge、m2.2xlarge、m2.4xlarge 或 cr1.8xlarge
实例类。这些实例类型针对预置 IOPS 存储进行了优化;而其他实例类型未经优化。此外,m1.large 实例
类的预置 IOPS 的可用网络带宽为 500 兆位每秒 (Mbps),相比之下,m1.xlarge、m2.2xlarge 或 m2.4xlarge
实例为 1000 Mbps。因此,对于类似需要大量 IOPS 的工作负载,m1.xlarge,m2.2xlarge、m2.4xlarge
和 cr1.8xlarge 实际达到的 IOPS 数将高于 m1.large。
数据库工作负载
自动备份、数据库快照和扩展存储操作等系统活动可能会占用一些 I/O,因此普通数据库操作可用的总容
量将有所降低。如果数据库的设计方案导致并发度问题、锁定或其他形式的数据库争用情况,则可能无法
直接使用所有预置带宽。
如果预置的 IOPS 容量满足工作负载的高峰需求,则在非高峰期内,应用程序占用的平均 IOPS 将可能低
于预置。
API Version 2013-05-15
258
Amazon Relational Database Service 用户指南
使用预置 IOPS 存储
为了帮助确认预置 IOPS 存储得到充分利用,我们增加了一个新的 CloudWatch 指标,称为“磁盘队列深
度”。如果应用程序的平均队列长度保持在预置的每 1000 IOPS 中大约有 5 个未完成的 I/O 操作,则可认
为正在占用预置的容量。例如,如果预置了 10000 IOPS,则至少应有 50 个未完成的 I/O 操作才能使用
预置的容量。
将预置 IOPS 存储与多可用区域、只读副本、快照、VPC 和数据库实例类结合使
用
对于生产 OLTP 使用案例,我们建议使用多可用区域部署以增强容错,并使用预置 IOPS 存储以提高且可
预测性能。除了多可用区域部署外,预置 IOPS 存储还作为以下功能的补充:
• 用于网络隔离和增强安全性的 Amazon VPC。
• 只读副本 – 只读副本上的存储类型与主数据库实例上的存储类型相互独立。例如,如果主数据库实例使
用标准存储,则可添加使用预置 IOPS 存储的只读副本,反之亦然。如果将基于标准存储的只读副本与
使用预置 IOPS 存储的主数据库实例结合使用,则只读副本的性能可能与主数据库实例和只读副本均使
用预置 IOPS 存储的配置中的性能反差巨大。
• 数据库快照 – 如果所使用的数据库实例使用预置 IOPS 存储,则可使用数据库快照还原配置相同的数据
库实例,无论目标数据库实例使用标准存储还是预置 IOPS 存储。如果数据库实例使用标准存储,则可
使用数据库快照仅还原使用标准存储的数据库实例。
• 可将预置 IOPS 存储与运行所需数据库引擎的任何数据库实例类结合使用;但是,较小的数据库实例类
将无法始终充分利用预置 IOPS 存储。我们建议使用 db.m1.large、db.m1.xlarge、m2.2xlarge 或
m2.4xlarge 数据库实例类,这些类针对预置 IOPS 存储经过优化。
预置 IOPS 存储成本
由于预置 IOPS 存储预留资源供您使用,因此无论在给定月中是否使用这些资源,均向您收取这些资源的
费用。当您使用预置 IOPS 存储时,不再按月向您收取 Amazon RDS I/O 费用。如果只想为所使用的 I/O
付费,则使用标准存储的数据库实例可能是更好的选择。有 Amazon RDS 定价信息,请参阅 Amazon
RDS 产品页。
充分利用 Amazon RDS 预置 IOPS
使用预置 IOPS 存储可增加系统可同时处理的 IO 请求数。并发度提高可降低延迟,因为 IO 请求在队列
中占用的时间变少。降低延迟可加快数据库提交,从而缩短响应时间并提高数据库吞吐量。
例如,设想一个预置了 10000 预置 IOPS 的大负荷 OLTP 数据库,它在运行时,通道的读取吞吐量始终
限制在 105 Mbps。工作负载未达到完全平衡,因此有一些写入通道带宽未加以利用。该实例使用的 IOPS
低于 10000,但仍将因容量提高到 20000 预置 IOPS 而获益。
将预置 IOPS 容量从 10000 提高到 20000 使系统的并发 IO 容量倍增。并发度提高意味着延迟降低,从
而可更快地完成事务,因此提高了数据库事务速率。读写延迟将不同程度地缩短,而系统将根据无论哪个
资源首先受到限制而达到一种新的平衡。
在这些情况下,即使数据库事务速率可大大提高,预置 IOPS 的用量实际上反而有可能减少。例如,随着
写入吞吐量提高,可能会发现写入请求数下降。这是个好现象,表示数据库更加充分地利用组提交。写入
吞吐量提高而写入 IOPS 保持不变,表示写入的日志已增大,但仍小于 16 KB。写入吞吐量提高而写入
IO 变少,表示写入的日志已增大,并且平均大小已大于 16 KB,因为这些 IO 请求占用预置 IOPS 容量的
多个 IO。
CLI 和 Amazon RDS API 中对预置 IOPS 存储的支持情况
命令行界面 (CLI) 在以下命令中支持预置 IOPS 存储:
• rds-create-db-snapshot – 输出显示 IOPS 值。
• rds-create-db-instance – 包括输入参数 iops,而输出显示 IOPS 速率。
• rds-modify-db-instance – 包括输入参数 iops,而输出显示 IOPS 速率。
API Version 2013-05-15
259
Amazon Relational Database Service 用户指南
使用预置 IOPS 存储
• rds-restore-db-instance-from-db-snapshot – 包括输入参数 iops,而输出显示当前 IOPS 速率。如果指
定了立即应用,则输出还显示待处理 IOPS 速率。
• rds-restore-db-instance-to-point-in-time – 包括输入参数 iops,而输出显示 IOPS 速率。
• rds-create-db-instance-read-replica – 包括输入参数 iops,而输出显示 IOPS 速率。
Amazon RDS API 在以下操作中支持预置 IOPS 存储:
• CreateDBInstance – 包括输入参数 iops,而输出显示 IOPS 速率。
• CreateDBInstanceReadReplica – 包括输入参数 iops,而输出显示 IOPS 速率。
• CreateDBSnapshot – 输出显示 IOPS 速率。
• ModifyDBInstance – 包括输入参数 iops,而输出显示 IOPS 速率。
• RestoreDBInstanceFromDBSnapshot – 包括输入参数 iops,而输出显示当前 IOPS 速率。如果指
定了立即应用,则输出还显示待处理 IOPS 速率。
• RestoreDBInstanceToPointInTime – 包括输入参数 iops,而输出显示 IOPS 速率。
修改数据库实例以使用预置 IOPS 存储
可使用 Amazon RDS 控制台、 Amazon RDS API 或命令行界面 (CLI) 修改使用标准存储的数据库实例以
使用预置 IOPS 存储。必须指定分配的存储空间值,或同时指定分配的存储空间和 IOPS 值。可能需要修
改分配的存储空间以保持 IOPS 与存储空间的所需比率。有关 IOPS 与存储空间的比率的详细信息,请参
阅有关预置 IOPS 存储应了解的情况 (p. 257)。
Note
无法修改现有 SQL Server 数据库实例以使用预置 IOPS 存储。
开始从预置 IOPS 存储转换为标准存储时,数据库实例将在一段较短的时间内不可用,反之亦然。对于在
单个可用区域中的数据库实例,开始该转换后,数据库实例将在几分钟内不可用。对于多可用区域部署,
数据库实例不可用的时间仅为完成故障转移操作所用的时间,通常约为 3 到 6 分钟。尽管在转换期间可
读写数据库实例,但直到转换过程完成,可能都会感到性能下降。此过程可能耗时数小时。
Important
在 3 月 15 日之前应用过一个或多个扩展存储操作(修改以提高存储容量)的数据库实例将经历
一段较长的迁移时间,但仅为一次性。该迁移的持续时间取决于多种因素,如数据库负载、存储
大小、存储类型(标准或 PIOPS)、预置的 IOPS 量(如有)和以前的扩展存储操作数量。典型
迁移时间将在 24 小时以内,但某些情况下可能会耗时数日。迁移期间可使用数据库实例,但可
能会感到性能下降。在进行迁移时,将暂停夜间备份,并且不能进行任何其他 Amazon RDS 操
作,包括“修改”、“重启”、“删除”、“创建只读副本”和“拍摄数据库快照”。这个一次性较长的迁移时
间过后,数据库实例未来的所有存储操作都将加快速度进行。
AWS Management Console
要修改数据库实例以使用预置 IOPS 存储
1.
Sign in to the AWS Management Console and open the Amazon RDS console at
https://console.aws.amazon.com/rds/.
2.
3.
4.
从 Amazon RDS 控制台的导航窗格中,单击数据库实例。
选择要修改的数据库实例。
在实例操作下拉列表中,单击修改。
API Version 2013-05-15
260
Amazon Relational Database Service 用户指南
使用预置 IOPS 存储
5.
选中使用预置 IOPS 复选框。输入分配的存储空间和预置 IOPS 的值,所输入的值必须保持最小分配
的存储空间值与预置 IOPS 值的所需比率。Oracle 和 MySQL 数据库实例的该比率可为 3:1 到 10:1,
SQL Server 可为 10:1。
6.
要立即开始转换数据库实例以使用预置 IOPS 存储,请选中立即应用复选框。如果清除了该复选框
(默认),则将在下一个维护时段内应用更改。
根据需要设置完毕后,单击修改。
7.
CLI
要修改数据库实例以使用预置 IOPS 存储
使用 rds-modify-db-instance 命令。设置以下参数:
• --allocated-storage – 为数据库实例分配的存储空间容量,以 GB 计。
• --iops – 数据库实例的 IOPS 速率,以每秒的 I/O 操作数量表示。
• --apply-immediately – 设置为 True 立即开始转换。如果为 False(默认值),则将在下一个维
护时段内应用转换。
API
使用 ModifyDBInstance 操作。设置以下参数:
• AllocatedStorage – 为数据库实例分配的存储空间容量,以 GB 计。
• Iops – 数据库实例的新 IOPS 速率,以每秒的 I/O 操作数量表示。
• ApplyImmediately – 如果要立即开始转换,则将此项设置为 True。如果为 False(默认值),则
将在下一个维护时段内应用转换。
API Version 2013-05-15
261
Amazon Relational Database Service 用户指南
使用预置 IOPS 存储
修改使用预置 IOPS 存储的数据库实例的 IOPS 和存储设置
可使用 AWS 管理控制台、Amazon RDS API 或命令行界面 (CLI) 修改使用预置 IOPS 存储的 Oracle 或
MySQL 数据库实例的设置。必须指定所需的 IOPS 速率和存储空间容量。可根据数据库引擎,从 1000
IOPS 和 100 GB 存储空间直到 30000 IOPS 和 3 TB (3000 GB) 存储空间进行选择。不能从当前为数据库
实例分配的值中减少分配的存储空间容量。有关详细信息,请参阅有关预置 IOPS 存储应了解的情
况 (p. 257)。
Note
无法修改 SQL Server 数据库实例的 IOPS 速率或分配的存储空间设置。
AWS Management Console
修改数据库实例的预配置 IOPS 设置
1.
2.
Sign in to the AWS Management Console and open the Amazon RDS console at
https://console.aws.amazon.com/rds/.
在导航窗格中,单击数据库实例。
Note
要筛选数据库实例的列表,请在搜索数据库实例... 框中,键入 Amazon RDS 将用于筛选结
果的文本字符串。将仅显示其名称包含该字符串的数据库实例。
3.
4.
5.
选择具有要修改的预置 IOPS 存储的数据库实例。
在实例操作下拉列表中,单击修改。
在修改数据库实例页上,输入分配的存储空间或预置 IOPS 所需的值。
API Version 2013-05-15
262
Amazon Relational Database Service 用户指南
使用预置 IOPS 存储
7.
如果为分配的存储空间或预置 IOPS 指定的值超出其他参数支持的限制,则显示一条警告消息,其中
指示其他参数所需的值范围。
要立即将更改应用于数据库实例,请选中立即应用复选框。如果使复选框处于清除状态,则会在下次
维护时段期间应用更改。
单击继续。
8.
检查将更改的参数,然后单击修改数据库实例以完成修改。
6.
随后将在等待更改值列中显示分配的存储空间或预置 IOPS 的新值。
CLI
修改数据库实例的预配置 IOPS 设置
使用 rds-modify-db-instance 命令。设置以下参数:
• --allocated-storage – 为数据库实例分配的存储空间容量,以 GB 计。
• --iops – 数据库实例的预置 IOPS 的新数量,以每秒的 I/O 操作数量表示。
• --apply-immediately – 设置为 True 立即开始转换。如果为 False(默认值),则将在下一个维
护时段内应用转换。
API
修改数据库实例的预配置 IOPS 设置
使用 ModifyDBInstance 操作。设置以下参数:
• AllocatedStorage – 为数据库实例分配的存储空间容量,以 GB 计。
• Iops – 数据库实例的新 IOPS 速率,以每秒的 I/O 操作数量表示。
• ApplyImmediately – 如果要立即开始转换,则将此项设置为 True。如果为 False(默认值),则
将在下一个维护时段内应用转换。
创建使用预置 IOPS 存储的数据库实例
在启动数据库实例时设置几个参数即可创建使用预置 IOPS 的数据库实例。可使用 AWS Management
Console、Amazon RDS API 或命令行界面 (CLI)。有关创建数据库实例时应使用的设置的详细信息,请
参阅创建运行 MySQL 数据库引擎的数据库实例 (p. 69)、创建运行 Oracle 数据库引擎的数据库实例 (p. 113)
或创建运行 Microsoft SQL Server 数据库引擎的数据库实例 (p. 156)。
AWS Management Console
要创建使用预置 IOPS 存储的新数据库实例,请执行以下操作
1.
2.
Sign in to the AWS Management Console and open the Amazon RDS console at
https://console.aws.amazon.com/rds/.
从 Amazon RDS 控制台中,单击启动数据库实例。
3.
在 RDS 数据库实例启动向导中的引擎选择页上,单击所需的数据库引擎旁的选择按钮。
API Version 2013-05-15
263
Amazon Relational Database Service 用户指南
使用预置 IOPS 存储
4.
5.
6.
在数据库实例详细信息页上,输入所需的值。有关创建数据库实例时应使用的设置的详细信息,请参
阅创建运行 MySQL 数据库引擎的数据库实例 (p. 69)、创建运行 Oracle 数据库引擎的数据库实
例 (p. 113)或创建运行 Microsoft SQL Server 数据库引擎的数据库实例 (p. 156)。
选中使用预置 IOPS 复选框。分配的存储空间和预置 IOPS 的值将改变以反映最小分配的存储空间值
和成比例的预置 IOPS 值。可更改这些值,但对于 MySQL 和 Oracle 实例,预置 IOPS 与分配的存
储空间的比率必须在 3:1 到 10:1 的范围内,而 SQL Server 要求该比率为 10:1。
当设置如您所愿时,单击继续。输入其余值以创建数据库实例。
CLI
要创建使用预置 IOPS 存储的新数据库实例,请执行以下操作
使用 rds-create-db-instance 命令。指定所需的参数,并加入以下适用于预置 IOPS 存储的参数的值:
• --allocated-storage - 为数据库实例分配的存储空间容量,以 GB 计。
• --iops - 数据库实例的新 IOPS 速率,以每秒的 I/O 操作数量表示。
API
要创建使用预置 IOPS 存储的新数据库实例,请执行以下操作
使用 CreateDBInstance 操作。指定所需的参数,并加入以下适用于预置 IOPS 存储的参数的值:
• AllocatedStorage - 为数据库实例分配的存储空间容量,以 GB 计。
• Iops - 数据库实例的新 IOPS 速率,以每秒的 I/O 操作数量表示。
API Version 2013-05-15
264
Amazon Relational Database Service 用户指南
使用预置 IOPS 存储
创建使用预置 IOPS 存储的只读副本
可创建使用预置 IOPS 存储的 MySQL 只读副本。可通过使用标准存储或预置 IOPS 存储的源数据库实例
创建使用预置 IOPS 存储的只读副本。
AWS Management Console
要新建使用预置 IOPS 存储的数据库实例,请执行以下操作
1.
2.
3.
Sign in to the AWS Management Console and open the Amazon RDS console at
https://console.aws.amazon.com/rds/.
在导航窗格中,单击数据库实例。
4.
选择要用作只读副本源的预置 IOPS 存储所属的 MySQL 数据库实例,然后单击实例操作并选择创建
只读副本。
在创建只读副本数据库实例页上,键入只读副本的数据库实例标识符。
5.
单击是,创建只读副本。
CLI
创建使用预配置 IOPS 的数据库实例只读副本
使用 rds-create-db-instance-read-replica 命令。指定所需的参数,并加入以下适用于预置 IOPS 存储的
参数的值:
• --allocated-storage - 为数据库实例分配的存储空间容量,以 GB 计。
• --iops - 数据库实例的新 IOPS 速率,以每秒的 I/O 操作数量表示。
API
创建使用预配置 IOPS 的数据库实例只读副本
使用 CreateDBInstanceReadReplica 操作。指定所需的参数,并加入以下适用于预置 IOPS 存储的
参数的值:
• AllocatedStorage - 为数据库实例分配的存储空间容量,以 GB 计。
• Iops - 数据库实例的新 IOPS 速率,以每秒的 I/O 操作数量表示。
API Version 2013-05-15
265
Amazon Relational Database Service 用户指南
调整首选维护时段
调整首选维护时段
每个数据库实例都有一个每周维护时段,您可在此期间应用任何系统更改。如果创建数据库实例时未指定
首选的维护时段,Amazon RDS 会在每周随机选定一个日期,并指定一个 30 分钟的维护时段。这个 30
分钟维护时段是随机从每个地区的 8 小时时间段中选择出来的。下表列出了各地区的默认维护时段。
Region
Time Block
美国东部(弗吉尼亚北部)地 03:00-11:00 UTC
区
US West (Northern California) 06:00-14:00 UTC
Region
US West (Oregon) Region
06:00-14:00 UTC
EU (Ireland) Region
22:00-06:00 UTC
Asia Pacific (Tokyo) Region
17:00-03:00 UTC
Asia Pacific (Sydney) Region 12:00-20:00 UTC
Asia Pacific (Singapore)
Region
14:00-22:00 UTC
South America (São Paulo)
Region
00:00-08:00 UTC
GovCloud
06:00-14:00 UTC
维护时段应该在使用频率最低时出现,因而它可能需要不时修改。数据库实例只会在所应用的系统更改必
须中断的期间出现不可用现象,且持续时间只是这些必要更改所需的最低程度的时间。
在以下示例中,将调整数据库实例的首选维护时段。
为了执行此示例,我们假设存在名为 mydbinstance 的数据库实例,它首选的维护时段为 UTC 时间
“Sun:05:00–Sun:06:00”。
AWS 管理控制台
调整首选维护时段
1.
启动 AWS Management Console。
a.
b.
Sign in to the AWS Management Console and open the Amazon RDS console at
https://console.aws.amazon.com/rds/.
单击控制台显示屏左侧的“导航”面板上的数据库实例链接。
此时会显示我的实例列表。
c.
右键单击我的数据库实例列表内的数据库实例,然后从下拉菜单中选择修改。
此时会显示修改数据库实例窗口。
2.
以“day:hour:minute–day:hour:minute”格式在“维护时段”文本框内键入维护时段。
API Version 2013-05-15
266
Amazon Relational Database Service 用户指南
调整首选维护时段
Note
数据库实例的维护时段不能与备份时段重叠。如果向与备份窗口重叠的维护时段内输入值,
会显示一条错误消息。
3.
单击确定按钮。
维护时段的更改会立即生效。
CLI
调整首选维护时段
•
使用带有以下参数的 rds-modify-db-instance 命令:
PROMPT>rds-modify-db-instance mydbinstance --preferred-maintenance-window
Tue:04:00-Tue:04:30
此命令生成类似于下述信息的输出。
DBINSTANCE mydbinstance 2009-10-22T18:10:15.274Z db.m1.large mysql 60 master
available mydbinstance.clouwupjnvmq.us-east-1.rds.amazonaws.com 3306 useast-1a 1 n 5.1.57 general-public-license SECGROUP default active PARAMGRP
default.mysql5.1 in-sync
API
调整首选维护时段
•
调用带有以下参数的 ModifyDBInstance 命令:
• DBInstanceIdentifier =mydbinstance
• PreferredMaintenanceWindow =Tue:04:00-Tue:04:30
Example
https://rds.amazonaws.com/
?Action=ModifyDBInstance
&DBInstanceIdentifier=mydbinstance
&PreferredMaintenanceWindow=Tue:04:00-Tue:04:30
&SignatureVersion=2
&SignatureMethod=HmacSHA256
&Timestamp=2009-10-14T17%3A48%3A21.746Z
&AWSAccessKeyId=<AWS Access Key ID>
&Signature=<Signature>
API Version 2013-05-15
267
Amazon Relational Database Service 用户指南
调整首选维护时段
相关主题
• 数据库实例维护 (p. 39)
• 数据库实例 (p. 32)
• 数据库实例类 (p. 34)
API Version 2013-05-15
268
Amazon Relational Database Service 用户指南
监视数据库实例
Topics
• 查看数据库实例指标 (p. 270)
• 使用 Amazon RDS 事件通知 (p. 273)
• 查看 Amazon RDS 事件 (p. 286)
• 使用数据库日志文件 (p. 288)
跟踪数据库或数据库实例的性能和运行状况有多种方法。您可以使用免费的 Amazon CloudWatch 服务监
视数据库实例的性能和运行状况。您可以订阅 Amazon RDS 事件以便在数据库实例、数据库快照、数据
库参数组或数据库安全组更改时收到通知。此外,您还可以使用 Amazon RDS 控制台或 Amazon RDS
API 查看、下载或监视数据库日志文件。最后,您可以查询一些加载到数据库表的数据库日志文件。
API Version 2013-05-15
269
Amazon Relational Database Service 用户指南
查看数据库实例指标
查看数据库实例指标
Amazon RDS 和 Amazon CloudWatch 集成在一起,因此可收集多种指标。可用 Amazon CloudWatch
监控这些指标。
在本例中,使用 Amazon CloudWatch 收集一个 Amazon RDS 数据库实例在过去一小时的存储空间统计
数据。
AWS Management Console
要查看数据库实例的使用情况和性能统计数据,请执行以下操作
1.
2.
3.
Sign in to the AWS Management Console and open the Amazon RDS console at
https://console.aws.amazon.com/rds/.
在导航窗格中,单击数据库实例。
选中要监控的数据库实例的复选框。
4.
单击位于窗口顶部的显示监控。
此选项卡中显示多种图形,其中指示所选数据库实例的各种指标。
API Version 2013-05-15
270
Amazon Relational Database Service 用户指南
CLI
Tip
可使用时间范围下拉列表框选择这些图形表示的指标时间范围。
单击任意图形,您可以获得更为详细的视图,借助此视图您可将其他特定于指标的筛选条件
应用到指标数据上。
CLI
Note
以下 CLI 示例需要 Amazon CloudWatch 命令行工具。有关 Amazon CloudWatch 的详细信息以
及要下载开发人员工具,请转到 Amazon CloudWatch 产品页。注意,本例中提供的 StartTime
和 EndTime 值仅作说明用途。必须将其替换为您的数据库实例相应的开始时间和结束时间值。
有关 Amazon RDS 指标的完整列表,请转到 Amazon CloudWatch 开发者指南中的 Amazon RDS
维度与指标。
要查看数据库实例的使用情况和性能统计数据,请执行以下操作
•
使用 Amazon CloudWatch 命令 mon-get-stats 配合以下参数:
PROMPT>mon-get-stats FreeStorageSpace --dimensions="DBInstanceIdenti
fier=mydbinstance" --statistics= Average --namespace="AWS/RDS" --start-time
2009-10-16T00:00:00 --end-time 2009-10-16T00:02:00
API
注意,本例中提供的 StartTime 和 EndTime 值仅作说明用途。必须将其替换为您的数据库实例相应的
开始时间和结束时间值。
要查看数据库实例的使用情况和性能统计数据,请执行以下操作
•
调用 Amazon CloudWatch API GetMetricStatistics 配合以下参数:
• Statistics.member.1 =Average
• Namespace =AWS/RDS
• StartTime =2009-10-16T00:00:00
• EndTime =2009-10-16T00:02:00
• Period =60
• MeasureName =FreeStorageSpace
API Version 2013-05-15
271
Amazon Relational Database Service 用户指南
相关主题
Example
http://monitoring.amazonaws.com/
?SignatureVersion=2
&Action=GetMetricStatistics
&Version=2009-05-15
&StartTime=2009-10-16T00:00:00
&EndTime=2009-10-16T00:02:00
&Period=60
&Statistics.member.1=Average
&Dimensions.member.1="DBInstanceIdentifier=mydbinstance"
&Namespace=AWS/RDS
&MeasureName=FreeStorageSpace
&Timestamp=2009-10-15T17%3A48%3A21.746Z
&AWSAccessKeyId=<AWS Access Key ID>
&Signature=<Signature>
相关主题
• 使用 Amazon RDS 事件通知 (p. 273)
• 使用数据库日志文件 (p. 288)
API Version 2013-05-15
272
Amazon Relational Database Service 用户指南
使用 Amazon RDS 事件通知
使用 Amazon RDS 事件通知
Topics
• Amazon RDS 事件类别和事件消息 (p. 274)
• 订阅 Amazon RDS 事件通知 (p. 277)
• 列出 Amazon RDS 事件通知订阅 (p. 279)
• 修改 Amazon RDS 事件通知订阅 (p. 280)
• 将源标识符添加到 Amazon RDS 事件通知订阅 (p. 282)
• 从 Amazon RDS 事件通知订阅删除源标识符 (p. 283)
• 列出 Amazon RDS 事件通知类别 (p. 284)
• 删除 Amazon RDS 事件通知订阅 (p. 285)
Amazon RDS 使用 Amazon Simple Notification Service (Amazon SNS) 在发生 Amazon RDS 事件时提
供通知。这些通知可以采用 AWS 地区 Amazon SNS 支持的任何通知形式,例如电子邮件、文本消息或
调用 HTTP 终端节点。
Amazon RDS 将这些事件划分成您可以订阅的各种类别,以便在其中一种类别的事件发生时向您发送通
知。您可以为数据库实例、数据库快照、数据库安全组或数据库参数组订阅一种事件类别。例如,如果您
为指定数据库实例订阅备份类别,您将在发生影响数据库实例的备份相关事件时收到通知。如果您为数据
库安全组订阅配置更改类别,您将在数据库安全组被修改时收到通知。当事件通知订阅发生更改时,您也
会收到通知。
事件通知将发送到您创建订阅时提供的地址。您可能希望创建多种不同的订阅,例如创建一个收到所有事
件通知的订阅和另一个只包含生产数据库实例的重要事件的订阅。您可以轻松地关闭通知,无需通过在
Amazon RDS 控制台上将 Enabled 单选按钮设置为 No 或将 Enabled 参数设置为false (使用 CLI 或
Amazon RDS API)来删除订阅。
Note
使用 SMS 文本消息的 Amazon RDS 事件通知目前可用于主题 ARN 和 US-East (Northern Virginia)
Region 的 Amazon RDS 资源。有关使用 SNS 的文本消息的更多信息,请参阅使用 Amazon SNS
发送和接收 SMS 通知。
Amazon RDS 使用 Amazon SNS 主题的亚马逊资源名称 (ARN) 标识每个订阅。Amazon RDS 控制台将
在您创建订阅时创建 ARN。如果您使用 CLI 或 API,则必须在创建订阅时使用 Amazon SNS 控制台或
Amazon SNS API 创建 ARN。
Amazon RDS 事件通知的账单是通过 Amazon Simple Notification Service (Amazon SNS) 发出的。Amazon
SNS 费用在使用事件通知时适用。有关 Amazon SNS 账单的更多信息,请参阅 Amazon Simple Notification
Service 定价。
订阅 Amazon RDS 事件通知的流程如下:
1. 使用 Amazon RDS 控制台、CLI 或 API 创建 Amazon RDS 事件通知订阅。
2. Amazon RDS 将批准电子邮件或 SMS 消息发送到您订阅时提交的地址。要确认订阅,请单击您发送
的通知上的链接。
3. 确认订阅后,您的订阅状态即会在 Amazon RDS 控制台的我的事件订阅部分中更新。
4. 您将开始接收事件通知。
以下部分列出了可以设置通知的所有类别和事件。还提供了有关订阅和使用 Amazon RDS 事件订阅的信
息。
API Version 2013-05-15
273
Amazon Relational Database Service 用户指南
Amazon RDS 事件类别和事件消息
Amazon RDS 事件类别和事件消息
Amazon RDS 按照您可以使用 Amazon RDS 控制台、CLI 或 API 订阅的类别生成大量事件。每个类别应
用于一种源类型,可以是数据库实例、数据库快照、数据库安全组和数据库参数组。
数据库实例源类型的事件类别包括:可用性、备份、配置更改、创建、删除、故障转移、故障、低存储、
维护、恢复和还原。
数据库快照源类型的事件类别包括:创建、删除和还原。
数据库安全组源类型的事件类别包括:配置更改和故障。
数据库参数组源类型的事件类别为配置更改。
下表显示了数据库实例为源类型时的事件类别和事件列表。
数据库实例源类型的类别和事件
类别
Amazon RDS 事件 ID
描述
可用性
RDS-EVENT-0006
数据库实例正在重启,在完成重启之前将不可用。
可用性
RDS-EVENT-0004
数据库实例已关闭。
可用性
RDS-EVENT-0022
重启 MySQL 时出现了错误。
备份
RDS-EVENT-0002
数据库实例的手动备份已完成。
备份
RDS-EVENT-0001
数据库实例的手动备份已启动。
配置
RDS-EVENT-0009
数据库实例已添加到安全组。
RDS-EVENT-0024
正在将数据库实例转换为多可用区域数据库实例。
RDS-EVENT-0030
正在将数据库实例转换为单可用区域数据库实例。
RDS-EVENT-0012
正在更改此数据库实例的数据库实例类。
RDS-EVENT-0018
正在更改此数据库实例的当前存储设置。
RDS-EVENT-0011
此数据库实例的参数组已更改。
RDS-EVENT-0028
已禁用此数据库实例的自动备份。
RDS-EVENT-0032
已启用此数据库实例的自动备份。
更改
配置
更改
配置
更改
配置
更改
配置
更改
配置
更改
配置
更改
配置
更改
API Version 2013-05-15
274
Amazon Relational Database Service 用户指南
Amazon RDS 事件类别和事件消息
类别
Amazon RDS 事件 ID
描述
配置
RDS-EVENT-0033
共有 [计数] 个用户与主用户名匹配。已重置未与特定主
机关联的用户。
RDS-EVENT-0025
数据库实例已转换为多可用区域数据库实例。
RDS-EVENT-0029
数据库实例已转换为单可用区域数据库实例。
RDS-EVENT-0014
已更改此数据库实例的数据库实例类。
RDS-EVENT-0017
已更改此数据库实例的存储设置。
RDS-EVENT-0010
数据库实例已从安全组中删除。
RDS-EVENT-0016
已重置数据库实例的主密码。
创建
RDS-EVENT-0005
正在创建数据库实例。
删除
RDS-EVENT-0003
正在删除数据库实例。
故障转移
RDS-EVENT-0034
由于数据库实例上近期执行过故障转移,因此 Amazon
RDS 未尝试请求执行的故障转移。
故障转移
RDS-EVENT-0013
导致备用实例的提示的多可用区域故障转移启动。
故障转移
RDS-EVENT-0015
用于提升备用实例的多可用区域故障转移已完成。DNS
可能需要几分钟的时间才能传输到新的主数据库实例。
故障转移
RDS-EVENT-0050
成功恢复实例后已激活多可用区域。
故障转移
RDS-EVENT-0051
多可用区域完成激活。现在即可访问数据库。
故障
RDS-EVENT-0031
数据库实例已出现故障。我们建议您启动数据库实例的
时间点恢复。
故障
RDS-EVENT-0036
数据库实例位于不兼容的网络中。部分指定子网 ID 无
效或不存在。
故障
RDS-EVENT-0035
数据库实例包含无效参数。例如,由于为此实例类设置
的内存相关参数过高,MySQL 无法启动,因此,客户
应该执行的操作是修改内存参数并重启数据库实例。
低存储
RDS-EVENT-0007
为数据库实例分配的存储已用尽。要解决此问题,您应
该为数据库实例分配额外存储。
维护
RDS-EVENT-0026
数据库实例正在执行脱机维护。数据库实例目前不可
用。
维护
RDS-EVENT-0027
数据库实例的脱机维护已完成。数据库实例现已可用。
更改
配置
更改
配置
更改
配置
更改
配置
更改
配置
更改
配置
更改
API Version 2013-05-15
275
Amazon Relational Database Service 用户指南
Amazon RDS 事件类别和事件消息
类别
Amazon RDS 事件 ID
描述
通知
RDS-EVENT-0044
操作员发出的通知。有关更多信息,请参阅事件消息。
通知
RDS-EVENT-0045
在读取复制过程中出现错误。有关更多信息,请参阅事
件消息。有关排除只读副本错误的信息,请参阅 解决只
读副本问题 (p. 95)。
通知
RDS-EVENT-0046
只读副本已恢复复制。此消息在您首次创建只读副本以
及在出现错误或复制停止后恢复复制时出现。
通知
RDS-EVENT-0047
由于出现复制错误的时间已超过 30 天,因此已停止读
取复制过程。只读副本在读取操作期间仍可访问,但无
法与主实例同步。我们建议您删除该只读副本并创建一
个新副本。有关排除损坏的只读副本错误的信息,请参
阅 解决只读副本问题 (p. 95)。
通知
RDS-EVENT-0054
您使用的 MySQL 存储引擎不是 InnoDB,InnoDB 是建
议用于 Amazon RDS 的 MySQL 存储引擎。有关
MySQL 存储引擎的信息,请参阅 Amazon RDS 支持的
存储引擎 (p. 65)。
通知
RDS-EVENT-0055
数据库实例包含的表的数量超过建议用于 Amazon RDS
的最佳实践。请减少您的数据库实例中表的数量。有关
推荐的最佳实践的信息,请参阅 Amazon RDS 基本操
作指南 (p. 6)。
恢复
RDS-EVENT-0020
数据库实例恢复已启动。恢复时间因要恢复的数据量不
同而异。
恢复
RDS-EVENT-0021
数据库实例完成恢复。
恢复
RDS-EVENT-0023
已请求手动备份,但 Amazon RDS 当前正在创建数据
库快照。在 Amazon RDS 完成数据库快照之后再提交
请求。
恢复
RDS-EVENT-0052
多可用区域实例恢复已启动。恢复时间因要恢复的数据
量不同而异。
恢复
RDS-EVENT-0053
多可用区域实例完成恢复。
还原
RDS-EVENT-0008
数据库实例已从数据库快照还原。
还原
RDS-EVENT-0019
数据库实例已从时间点备份中还原。
下表显示了数据库参数组为源类型时的事件类别和事件列表。
数据库参数组源类型的类别和事件
类别
RDS 事件 ID
描述
配置
RDS-EVENT-0037
参数组已修改。
更改
下表显示了数据库安全组为源类型时的事件类别和事件列表。
数据库安全组源类型的类别和事件
API Version 2013-05-15
276
Amazon Relational Database Service 用户指南
订阅 Amazon RDS 事件通知
类别
RDS 事件 ID
描述
配置
RDS-EVENT-0038
安全组已修改。
RDS-EVENT-0039
属于 [用户] 的 Amazon EC2 安全组不存在;已撤消安
全组的授权。
更改
故障
下表显示了数据库快照为源类型时的事件类别和事件列表。
数据库快照源类型的类别和事件
类别
RDS 事件 ID
描述
创建
RDS-EVENT-0042
已创建数据库快照。
创建
RDS-EVENT-0040
正在创建数据库快照。
删除
RDS-EVENT-0041
已删除数据库快照。
还原
RDS-EVENT-0043
正在从数据库快照还原数据库实例。
订阅 Amazon RDS 事件通知
您可以创建 Amazon RDS 事件通知订阅,这样才能在特定数据库实例、数据库快照、数据库安全组和数
据库参数组发生事件时收到通知。创建订阅最简单的方式是使用 RDS 控制台。如果您选择使用 CLI 或
API 创建事件通知,则必须创建 Amazon Simple Notification Service 主题并订阅有关 Amazon SNS 控制
台或 Amazon SNS API 的主题。您还需要保留主题的亚马逊资源名称 (ARN),因为提交 CLI 命令或 API
操作时会使用该名称。有关创建 SNS 主题和订阅主题的信息,请参阅 Amazon SNS 入门。
您可以指定要获得通知的源类型和触发事件的 Amazon RDS 源的类型。这些由 SourceType(源类型)
和 SourceIdentifier(生成事件的 Amazon RDS 源)定义。如果您指定 SourceType 和 SourceIdentifier,
例如 SourceType = db-instance 和 SourceIdentifier = myDBInstance1,您将收到指定源的所有数据库实
例事件。如果您指定 SourceType,但不指定 SourceIdentifier,您将收到此源类型的所有 Amazon RDS
源的事件通知。如果您既不指定 SourceType 又不指定 SourceIdentifier,则会收到属于您客户账户的所
有 Amazon RDS 源所生成事件的通知。
AWS Management Console
订阅 RDS 事件通知
1.
Sign in to the AWS Management Console and open the Amazon RDS console at
https://console.aws.amazon.com/rds/.
2.
3.
4.
在 Amazon RDS 控制台“导航”窗格中,单击事件订阅。
在事件订阅窗格中,单击创建事件订阅。
在创建事件订阅对话框中,请执行以下操作:
a.
在名称文本框中键入事件通知订阅的名称。
b.
c.
在发送通知至下拉菜单上选择 Amazon SNS 主题的现有 Amazon SNS Amazon 资源名称 (ARN)
或单击创建主题输入主题的名称和收件人列表。
从源类型下拉菜单中选择源类型。
d.
e.
选择是启用订阅。如果要创建订阅但尚不发送通知,则选择否。
根据您选择的源类型,选择事件类别和您想接收其事件通知的源。
API Version 2013-05-15
277
Amazon Relational Database Service 用户指南
订阅 Amazon RDS 事件通知
f.
5.
单击是,创建。
Amazon RDS 控制台显示正在创建订阅。
CLI
订阅 RDS 事件通知
•
使用 rds-create-event-subscription 命令。
API
订阅 Amazon RDS 事件通知
•
调用 CreateEventSubscription。
API Version 2013-05-15
278
Amazon Relational Database Service 用户指南
列出 Amazon RDS 事件通知订阅
列出 Amazon RDS 事件通知订阅
您可以列出当前的 Amazon RDS 事件通知订阅。
AWS Management Console
列出当前的 Amazon RDS 事件通知订阅
1.
Sign in to the AWS Management Console and open the Amazon RDS console at
https://console.aws.amazon.com/rds/.
2.
在 Amazon RDS 控制台“导航”窗格中,单击事件订阅。“事件订阅”窗格显示了所有事件通知订阅。
CLI
列出当前的 Amazon RDS 事件通知订阅
•
使用 rds-describe-event-subscriptions 命令。
API
列出当前的 Amazon RDS 事件通知订阅
•
调用 DescribeEventSubscriptions。
API Version 2013-05-15
279
Amazon Relational Database Service 用户指南
修改 Amazon RDS 事件通知订阅
修改 Amazon RDS 事件通知订阅
创建订阅后,您可以更改订阅名称、源标识符、类别或主题 ARN。
AWS Management Console
修改 Amazon RDS 事件通知订阅
1.
Sign in to the AWS Management Console and open the Amazon RDS console at
https://console.aws.amazon.com/rds/.
2.
3.
4.
在 Amazon RDS 控制台“导航”窗格中,单击事件通知。
在数据库事件通知窗格中,选择您要修改的订阅。
在下方的窗格中更改您的订阅。
5.
单击更新。Amazon RDS 控制台显示正在修改订阅。
CLI
修改 Amazon RDS 事件通知订阅
•
使用 rds-modify-event-subscription 命令。
API Version 2013-05-15
280
Amazon Relational Database Service 用户指南
修改 Amazon RDS 事件通知订阅
API
修改 Amazon RDS 事件
•
调用 ModifyEventSubscription。
API Version 2013-05-15
281
Amazon Relational Database Service 用户指南
将源标识符添加到 Amazon RDS 事件通知订阅
将源标识符添加到 Amazon RDS 事件通知订阅
您可以向现有订阅添加源标识符(生成事件的 Amazon RDS 源)。
AWS Management Console
将源标识符添加到 Amazon RDS 事件通知订阅
•
您可以使用 Amazon RDS 控制台轻松地添加或删除源标识符,具体方法是在修改订阅时选择或取消
选择它们。有关更多信息,请参阅主题 修改 Amazon RDS 事件通知订阅 (p. 280)。
CLI
将源标识符添加到 Amazon RDS 事件通知订阅
•
使用 rds-add-source-identifier-to-subscription 命令。
API
将源标识符添加到 Amazon RDS 事件通知订阅
•
调用 AddSourceIdentifierToSubscription。
API Version 2013-05-15
282
Amazon Relational Database Service 用户指南
从 Amazon RDS 事件通知订阅删除源标识符
从 Amazon RDS 事件通知订阅删除源标识符
如果您不再希望收到该源的事件通知,可以从订阅中删除源标识符(生成事件的 Amazon RDS 源)。
AWS Management Console
从 Amazon RDS 事件通知订阅删除源标识符
•
您可以使用 Amazon RDS 控制台轻松地添加或删除源标识符,具体方法是在修改订阅时选择或取消
选择它们。有关更多信息,请参阅主题 修改 Amazon RDS 事件通知订阅 (p. 280)。
CLI
从 Amazon RDS 事件通知订阅删除源标识符
•
使用 rds-remove-source-identifier-from-subscription 命令。
API
从 Amazon RDS 事件通知订阅删除源标识符
•
调用 RemoveSourceIdentifierFromSubscription。
API Version 2013-05-15
283
Amazon Relational Database Service 用户指南
列出 Amazon RDS 事件通知类别
列出 Amazon RDS 事件通知类别
资源类型的所有事件都划分为不同类别。要查看可用类别列表,请使用下列过程。
AWS Management Console
列出 Amazon RDS 事件通知类别
•
当您创建或修改事件通知订阅后,事件类别会在 Amazon RDS 控制台上显示。有关更多信息,请参
阅主题 修改 Amazon RDS 事件通知订阅 (p. 280)。
CLI
列出 Amazon RDS 事件通知类别
•
使用 rds-describe-event-categories 命令。
API
列出 Amazon RDS 事件通知类别
•
调用 DescribeEventCategories。
API Version 2013-05-15
284
Amazon Relational Database Service 用户指南
删除 Amazon RDS 事件通知订阅
删除 Amazon RDS 事件通知订阅
如果您不再需要某一订阅,则可将其删除。订阅该主题的所有用户将不再收到该订阅指定的事件通知。
AWS Management Console
删除 Amazon RDS 事件通知订阅
1.
Sign in to the AWS Management Console and open the Amazon RDS console at
https://console.aws.amazon.com/rds/.
2.
3.
4.
在 Amazon RDS 控制台“导航”窗格中,单击数据库事件订阅。
在我的数据库事件订阅窗格中,单击您要删除的订阅。
单击删除。
5.
Amazon RDS 控制台显示正在删除订阅。
CLI
删除 Amazon RDS 事件通知订阅
•
使用 rds-delete-event-subscription 命令。
API
删除 Amazon RDS 事件通知订阅
•
调用 DeleteEventSubscription。
API Version 2013-05-15
285
Amazon Relational Database Service 用户指南
查看 Amazon RDS 事件
查看 Amazon RDS 事件
Amazon RDS 会记录与数据库实例、数据库快照、数据库安全组和数据库参数组相关的事件。此信息包
含事件的日期和时间、事件的源名称和源类型以及一条与事件相关的消息。您可以通过 AWS 管理控制
台、rds-describe-events CLI 命令或 DescribeEvents API 轻松地检索 RDS 资源事件。
在此示例中,您可以查看过去 24 小时(以秒为单位)的所有 Amazon RDS 事件。
AWS Management Console
查看过去 24 小时的所有 Amazon RDS 实例事件
1.
2.
Sign in to the AWS Management Console and open the Amazon RDS console at
https://console.aws.amazon.com/rds/.
单击窗口左侧导航列表内的数据库事件。
我的数据库事件列表中会显示可用的事件。
Note
您可以使用查看下拉列表框按照类型筛选事件,然后使用查看下拉列表框右侧的文本框进一
步筛选结果。
CLI
查看过去 24 小时的所有 Amazon RDS 实例事件
•
使用带有下列参数的命令 rds-describe-events 来查看过去 24 小时的所有 Amazon RDS 事件。
PROMPT>rds-describe-events --duration 1440
API
查看过去 24 小时的所有 Amazon RDS 实例事件
•
调用带有下列参数的 DescribeEvents 命令:
• Duration =1440
API Version 2013-05-15
286
Amazon Relational Database Service 用户指南
相关主题
Example
https://rds.amazonaws.com/
?Action=DescribeEvents
&Duration=1440
&MaxRecords=100
&Version=2012-01-15
&SignatureVersion=2
&SignatureMethod=HmacSHA256
&Timestamp=2012-01-22T20%3A00%3A44.420Z
&AWSAccessKeyId=<AWS Access Key ID>
&Signature=<Signature>
相关主题
• 使用 Amazon RDS 事件通知 (p. 273)
API Version 2013-05-15
287
Amazon Relational Database Service 用户指南
使用数据库日志文件
使用数据库日志文件
Topics
• 使用 MySQL 数据库日志文件 (p. 288)
• 使用 Oracle 数据库日志文件 (p. 290)
• 使用 SQL Server 数据库日志文件 (p. 292)
• 查看和列出数据库日志文件 (p. 293)
• 下载数据库日志文件 (p. 296)
• 监视数据库日志文件 (p. 299)
可使用 Amazon RDS 控制台、命令行界面 (CLI) 或 Amazon RDS API 查看、下载和监视数据库日志。例
如,可查看、下载或监视 MySQL 的错误日志、慢速查询日志和一般日志。还可通过将 MySQL 日志引向
主数据库中的数据库表并查询该表,查看这些日志。注意,不支持查看、监视或下载事务日志。
有五种方法可访问数据库日志文件。
• 查看:可使用 Amazon RDS 控制台查看日志文件的内容。还可运行 rds-describe-db-log-file 命令或调
用 DescribeDBLogFiles API 操作以列出为数据库实例提供的日志文件。
• 监视:可使用 Amazon RDS 控制台查看日志文件的实时更新。还可运行 rds-watch-db-logfile 命令或调
用 DownloadDBLogFilePortion API 操作以监视数据库日志文件和轮询以检索最新日志文件内容。
• 下载:可使用 Amazon RDS 控制台下载日志文件的内容。还可运行 rds-download-db-logfile 命令以下
载日志文件的内容。
• 查询:可将 MySQL 慢速查询日志和一般日志引向数据库表,然后针对该表运行查询以获取日志文件的
内容。使日志可写入数据库表可导致性能降低。
• 二进制:可使用 MySQL mysqlbinlog 实用工具将二进制日志下载或流式传输到本地计算机。
Note
如果无法查看现有 Oracle 数据库实例的日志文件的列表,则重新启动该实例以查看列表。
使用 MySQL 数据库日志文件
可通过 Amazon RDS 控制台或 API 直接监视 MySQL 错误日志、慢速查询日志和一般日志。可使用
mysqlbinlog 实用工具下载或流式传输二进制日志。默认情况下生成 MySQL 错误日志;必须使用数据库
参数组中的参数设置启用慢速查询日志和一般日志才能生成这些日志。所有日志文件均每小时轮换一次,
仅保留过去 24 小时的日志。
访问 MySQL 错误日志
MySQL 错误日志写入 mysql-error.log 文件。可通过使用 RDS 控制台或使用 Amazon RDS API 检索日
志,查看 mysql-error.log 文件。mysql-error.log 文件每 5 分钟刷新一次,其内容附加到
mysql-error-running.log。mysql-error-running.log 文件每小时轮换一次,保留过去 24 小时内每小时生成
的文件。每个日志文件在其名称后均附加生成它时所在的小时(UTC 时间)。日志文件还有时间戳,帮
助您确定写入日志条目的时间。
MySQL 仅在启动、关闭和遇到错误时写入错误日志。数据库实例可数小时或数日不向错误日志写入新条
目。如果看不到最近的条目,则原因是服务器未遇到导致日志条目的错误条件。
API Version 2013-05-15
288
Amazon Relational Database Service 用户指南
使用 MySQL 数据库日志文件
访问 MySQL 慢速查询日志和一般日志
可通过在数据库参数组中设置参数,将 MySQL 慢速查询日志和一般日志写入文件或数据库表。有关创建
和修改数据库参数组的信息,请参阅使用数据库参数组 (p. 218)。必须先设置这些参数,然后才能在 Amazon
RDS 控制台中或使用 Amazon RDS API 查看慢速查询日志或一般日志。
将 slow_query_log 参数设置为 1 创建慢速查询日志,将 general_log 参数设置为 1 创建一般日志。
将 log_output 参数设置为 FILE 或 TABLE 将日志写入文件系统或数据库表。可将 long_query_time
参数设置为浮点值,这样可按微秒为间隔将慢速查询记录到 MySQL 慢速查询日志。例如,将
long_query_time 参数设置为 0.1 秒(即 100 毫秒)对于调试耗时不足一秒的慢速事务有帮助。
要使用 Amazon RDS 控制台或 Amazon RDS API 处理日志,请将 log_output 参数设置为 FILE。如同
MySQL 错误日志一样,这些日志文件也每小时轮换一次。保留过去 24 小时内生成的日志文件。
Amazon RDS 自动轮换慢速日志和一般日志以缓解日志过大造成数据库无法使用或影响性能的情况。符
合以下某个条件时,即发生这种情况:
• 如果磁盘空间使用率大于分配空间的 90%,并且日志的分配存储空间使用率大于 10% 或日志使用的存
储空间大于 5 GB。
• 如果日志的分配存储空间使用率大于 20% 或日志使用的存储空间大于 10 GB,无论总磁盘使用情况如
何。
在这两种条件下都会创建客户可见的事件并会通知您已发生了日志交替。注意,这些是当前的条件,
Amazon RDS 可能会更改这些值。您始终都应自行管理日志并安排日志交替操作。
管理基于表的日志
可将一般日志和慢速查询日志引向数据库实例上的表,并可通过查询访问这些文件。注意,启用此日志记
录可因保留这些日志而增加数据库负载,导致性能降低。创建 MySQL 数据库实例时,一般日志和慢速查
询日志均被禁用。要启用日志记录,请创建数据库参数组,然后将 general_log 和 slow_query_log
服务器参数设置为 1。
将参数 general_log 设置为 1 使 mysql.general_log 表开始积累数据库上的所有活动。同样,将参
数 slow_query_log 设置为 1 使 mysql.slow_log 表开始积累所有慢速查询。如果运行查询的时间超
出 long_query_time 服务器变量指定的时间,则将该查询定义为慢速查询。默认值为 10 秒,但可通过
修改与数据库实例关联的数据库参数组,更改该值。
直到通过将相应参数重置为 0 而禁用相应参数,日志表才不再增大。随着时间的推移,通常会累积大量的
数据,这些数据会占用相当大比例的分配存储空间。Amazon RDS 不允许您截断日志表,但您可以移动
其中的内容。表的交替会将表的内容保存到备份表,然后创建一个新的空日志表。可用以下命令行过程轮
换日志表,其中 PROMPT> 表示命令提示符:
PROMPT> CALL mysql.rds_rotate_slow_log; PROMPT> CALL mysql.rds_ro
tate_general_log;
要完全移除旧数据并回收磁盘空间,请连续两次调用相应的程序。
访问 MySQL 5.6 二进制日志
可使用 mysqlbinlog 实用工具从运行 MySQL 5.6 的 Amazon RDS 实例下载或流式传输二进制日志。二进
制日志下载到本地计算机,从中可执行使用 mysql 实用工具执行重播日志等操作。有关使用 mysqlbinlog
实用工具的详细信息,请转到 Using mysqlbinlog to Back Up Binary Log Files(使用 mysqlbinlog 备份二
进制日志文件)。
API Version 2013-05-15
289
Amazon Relational Database Service 用户指南
使用 Oracle 数据库日志文件
要针对 Amazon RDS 实例运行 mysqlbinlog 实用工具,请使用以下选项:
• 指定 --read-from-remote-server 选项。
• --host:指定该实例所在的终端节点中的 DNS 名称。
• --port:指定该实例使用的端口。
• --user:指定已授予了复制从属权限的 MySQL 用户。
• --password:指定用户的密码,或忽略密码值,以使实用工具将提示您输入密码。
• 指定 --raw 选项以按二进制格式下载文件。
• --result-file:指定接收原始输出的本地文件。
• 一个或多个二进制日志文件的名称。可使用 SQL 命令 SHOW BINARY LOGS 获取可用日志的列表。
• 要流式传输二进制日志文件,还可指定 --stop-never 选项。
有关 mysqlbinlog 选项的详细信息,请转到 mysqlbinlog - Utility for Processing Binary Log Files
(mysqlbinlog - 处理二进制日志文件的实用工具)。
例如:
mysqlbinlog --read-from-remote-server --host=MySQL56Instance1.cg034hpkmmjt.re
gion.rds.amazonaws.com --port=3306 --user ReplUser --password --raw --resultfile=/tmp/ binlog.00098
Amazon RDS 通常会尽快清除二进制日志,但实例上仍必须有该二进制日志以供 mysqlbinlog 访问。使
用 mysql.rds-set-configuration 存储过程指定 RDS 保留二进制日志的小时数,以使您可在此期间
下载这些日志。如果确实设置了保留期,则监视实例的存储用量以了解实例的存储容量是否开始短缺。
本例将保留期设置为 1 天:
call mysql.rds_set_configuration(‘binlog retention hours’, 24);
使用 mysql.rds-show-configuration 存储过程显示当前设置:
call mysql.rds_show_configuration;
使用 Oracle 数据库日志文件
可使用 Amazon RDS 控制台或 API 访问 Oracle 警报日志、审核文件和跟踪文件。默认情况下,这些文
件将保留 7 天。注意,如果日志变得非常大,则 Oracle 数据库引擎可轮换这些日志。如果要将审核文件
或跟踪文件保留更长时间,则应下载这些文件。将文件存储在本地可降低 Amazon RDS 存储成本,并为
您的数据留出更多空间。
切换联机日志文件
为了产生托管服务体验,Amazon RDS 不允许通过 shell 访问数据库实例,而仅限访问某些需要高级特权
的系统过程和表。可使用以下 Amazon RDS 特有的实施切换联机日志文件。
Oracle 方法
Amazon RDS 方法
alter system switch logfile;
exec rdsadmin.rdsadmin_util.switch_logfile;
API Version 2013-05-15
290
Amazon Relational Database Service 用户指南
使用 Oracle 数据库日志文件
使用 Oracle 跟踪文件
本节介绍 Amazon RDS 特有的创建、刷新、访问和删除跟踪文件的过程。
列出文件
有两个过程可供允许访问 background_dump_dest 中的任何文件。第一种方法刷新一个视图,该视图
包含当前在 background_dump_dest 中的所有文件的列表:
exec rdsadmin.manage_tracefiles.refresh_tracefile_listing;
刷新视图后,请使用以下视图访问结果。
rdsadmin.tracefile_listing
生成跟踪文件
由于对于 alter session 没有限制,因此 Oracle 中许多用于生成跟踪文件的标准方法仍可供 Amazon
RDS 数据库实例使用。为需要更大访问权限的跟踪文件提供了以下程序。
Hanganalyze
Oracle 方法
Amazon RDS 方法
oradebug hanganalyze 3
exec rdsadmin.manage_tracefiles.hanganalyze;
系统状态转储
Oracle 方法
Amazon RDS 方法
oradebug dump systemstate 266
exec
rdsadmin.manage_tracefiles.dump_systemstate;
检索跟踪文件
可使用 Amazon RDS 托管外部表的标准 SQL 查询,检索 background_dump_dest 中的任何跟踪文件。
要使用此方法,必须执行此程序以将此表的位置设置到指定跟踪文件。
例如,可使用上面提到的 rdsadmin.tracefile_listing 视图列出系统中的所有跟踪文件。然后,可
以使用以下程序设置 tracefile_table 视图,从而使视图指向预定的跟踪文件:
exec
rdsadmin.manage_tracefiles.set_tracefile_table_location('CUST01_ora_3260_SYSTEMSTATE.trc');
以下示例在当前架构中创建了一个外部表,并将表位置设定在提供的文件中。可以使用 SQL 查询将内容
检索到本地文件中。
# eg: send the contents of the tracefile to a local file:
sql customer_dba/password@cust01 << EOF > /tmp/systemstatedump.txt
select * from tracefile_table;
EOF
API Version 2013-05-15
291
Amazon Relational Database Service 用户指南
使用 SQL Server 数据库日志文件
清除跟踪文件
跟踪文件可积累并占用磁盘空间。Amazon RDS 默认清除跟踪文件,并清除 7 天之前的日志文件。可以
使用 show_configuration 程序查看和设置跟踪文件保留期。
以下示例显示了当前的跟踪文件保留期,然后设置了新的跟踪文件保留期。
# Show the current tracefile retention
SQL> exec rdsadmin.rdsadmin_util.show_configuration;
NAME:tracefile retention
VALUE:10080
DESCRIPTION:tracefile expiration specifies the duration in minutes before
tracefiles in bdump are automatically deleted.
# Set the tracefile retention to 24 hours:
SQL> exec rdsadmin.rdsadmin_util.set_configuration('tracefile retention',1440);
#show the new tracefile retention
SQL> exec rdsadmin.rdsadmin_util.show_configuration;
NAME:tracefile retention
VALUE:1440
DESCRIPTION:tracefile expiration specifies the duration in minutes before
tracefiles in bdump are automatically deleted.
除了定期清除过程之外,还可从 background_dump_dest 手动删除文件。以下示例显示了如何清除保
留时间已超过五分钟的所有文件。
exec rdsadmin.manage_tracefiles.purge_tracefiles(minutes number);
以下示例显示了如何清除与特定类型匹配的所有文件:
exec rdsadmin.manage_tracefiles.purge_tracefiles('MYTRACE*');
以前用于访问警报日志和侦听器日志的方法
可使用 Amazon RDS 控制台查看警报日志和侦听器日志。还可使用以下方法访问这些日志:
要访问警报日志,请使用以下命令:
select message_text from alertlog;
要访问侦听器日志,请使用以下命令:
select message_text from listenerlog;
Note
当警报日志和侦听器日志超过 10MB 时,无法从 Amazon RDS 视图中查看这些日志,此时 Oracle
将轮换这些日志。
使用 SQL Server 数据库日志文件
可使用 Amazon RDS 控制台或 API 访问 SQL Server 错误日志、代理日志和跟踪文件。日志文件每天以
及在数据库重启时轮换;最多为每个错误日志、代理日志和跟踪文件保留 7 个文件。7 天后删除日志文
件。有关将 SQL Server 代理与 Amazon RDS 结合使用的详细信息,请参阅使用 SQL Server Agent (p. 178)
API Version 2013-05-15
292
Amazon Relational Database Service 用户指南
查看和列出数据库日志文件
使用 CLI 查看 SQL Server 错误日志
可使用 SQL Server 特有的 rds_read_error_log CLI 命令查看错误日志。
EXEC rdsadmin.dbo.rds_read_error_log [index]
在 rds_read_error_log 命令中,index 表示相对于当前错误日志而请求的错误日志。默认值为 0,返回当
前错误日志。前一日志的索引值为 1,再向前一个日志为 2,并依此类推。
管理跟踪文件
本节介绍 Amazon RDS 特有的创建、刷新、访问和删除跟踪文件的过程。
生成跟踪 SQL 查询
declare @rc int declare @TraceID int declare @maxfilesize bigint set @maxfilesize
= 5 exec @rc = sp_trace_create @TraceID output, 0, N'D:\rdsdbdata\rdstest',
@maxfilesize, NULL
查看打开的跟踪
select * from ::fn_trace_getinfo(default)
查看跟踪内容
select * from ::fn_trace_gettable('D:\rdsdbdata\rdstest.trc', default)
清除跟踪文件
跟踪文件可积累并占用磁盘空间。Amazon RDS 默认清除跟踪文件,并清除 7 天之前的日志文件。
要查看当前的跟踪文件保留期,请使用 rds_show_configuration 命令。在命令提示符下,输入以下
内容,然后按下“Enter”:
PROMPT> exec rdsadmin..rds_show_configuration;
要修改跟踪文件的保留期,请使用 rds_set_configuration 命令,其中将 tracefile retention
参数设置为新保留期(以分钟计)。以下示例将保留期设置为 24 小时:
PROMPT> exec rdsadmin..rds_set_configuration 'tracefile retention',1440;
为安全起见,您无法删除 SQL Server 数据库实例上的特定跟踪文件。要删除所有未使用的跟踪文件,请
将 tracefile retention 参数设置为 0。
查看和列出数据库日志文件
可使用 Amazon RDS 控制台查看数据库引擎的数据库日志文件。可使用 Amazon RDS 命令行界面 (CLI)
或 API 列出可下载或监视什么日志文件。
API Version 2013-05-15
293
Amazon Relational Database Service 用户指南
查看和列出数据库日志文件
AWS Management Console
要查看数据库日志文件,请执行以下操作
1.
2.
Sign in to the AWS Management Console and open the Amazon RDS console at
https://console.aws.amazon.com/rds/.
在导航窗格中,单击实例。
3.
单击要查看的日志文件所属的数据库实例名称旁的详细信息图标以显示数据库实例详细信息页面。
4.
在数据库实例详细信息页面上,单击日志。
5.
单击要查看的日志所对应的查看按钮。
API Version 2013-05-15
294
Amazon Relational Database Service 用户指南
查看和列出数据库日志文件
6.
在该页顶部单击数据库实例以返回数据库实例的列表。
CLI
要列出数据库实例可用的数据库日志文件,请执行以下操作
•
使用命令 rds-describe-db-log-files。
下例将数据库实例的日志文件的列表引向一个名为 log_file_list.txt 的文本文件。
PROMPT>rds-describe-db-log-files > log_file_list.txt
API Version 2013-05-15
295
Amazon Relational Database Service 用户指南
下载数据库日志文件
API
要列出数据库实例可用的数据库日志文件,请执行以下操作
•
调用 DescribeDBLogFiles。
相关主题
• 监视数据库实例 (p. 269)
• 使用 Amazon RDS 事件通知 (p. 273)
下载数据库日志文件
可使用 Amazon RDS 控制台或命令行界面 (CLI) 下载数据库日志文件。无法使用 Amazon RDS API 下载
日志文件。
AWS 管理控制台
要下载数据库日志文件,请执行以下操作
1.
2.
3.
Sign in to the AWS Management Console and open the Amazon RDS console at
https://console.aws.amazon.com/rds/.
在导航窗格中,单击实例。
单击要查看的日志文件所属的数据库实例名称所对应的详细信息图标。
4.
在数据库实例详细信息页面上,单击日志。
API Version 2013-05-15
296
Amazon Relational Database Service 用户指南
下载数据库日志文件
5.
单击要下载的日志所对应的下载按钮。
6.
右键单击所提供的链接,然后从下拉菜单中选择将链接另存为...。键入要保存日志文件的位置,然后
单击保存。完成后,单击关闭。
API Version 2013-05-15
297
Amazon Relational Database Service 用户指南
下载数据库日志文件
7.
在该页顶部单击数据库实例以返回数据库实例的列表。
CLI
要下载数据库日志文件,请执行以下操作
•
使用命令 rds-download-db-logfile。
下例显示如何下载一个名为 error-running.log.20 的日志文件的内容并将其存储在一个名为 log_file.txt
的本地文件中。
PROMPT>rds-download-db-logfile MySQLDB223 --log-file-name error-running.log.20
> log_file.txt
相关主题
• 监视数据库实例 (p. 269)
• 使用 Amazon RDS 事件通知 (p. 273)
API Version 2013-05-15
298
Amazon Relational Database Service 用户指南
监视数据库日志文件
监视数据库日志文件
可使用 Amazon RDS 控制台、CLI 或 API 监视日志文件的内容。
AWS Management Console
要监视数据库日志文件,请执行以下操作
1.
2.
3.
Sign in to the AWS Management Console and open the Amazon RDS console at
https://console.aws.amazon.com/rds/.
在导航窗格中,单击实例。
单击要查看的日志文件所属的数据库实例名称所对应的详细信息图标。
4.
在数据库实例详细信息页面上,单击日志。
5.
单击要监视的日志所对应的监视按钮。
API Version 2013-05-15
299
Amazon Relational Database Service 用户指南
监视数据库日志文件
6.
在该页顶部单击数据库实例以返回数据库实例的列表。
CLI
要监视数据库日志文件,请执行以下操作
•
使用命令 rds-watch-db-logfile。
下例显示如何监视一个名为 mysql-db1 的数据库实例的日志文件
PROMPT>rds-watch-db-logfile mysql-db1 --log-file-name error-running.log.20
API Version 2013-05-15
300
Amazon Relational Database Service 用户指南
监视数据库日志文件
API
要监视数据库日志文件,请执行以下操作
•
调用 DownloadDBLogFilePortion。
相关主题
• 监视数据库实例 (p. 269)
• 使用 Amazon RDS 事件通知 (p. 273)
API Version 2013-05-15
301
Amazon Relational Database Service 用户指南
使用查询 API
使用 Amazon RDS API
Topics
• 使用查询 API (p. 302)
• 使用 SOAP API (p. 304)
• 可用的库 (p. 308)
• 对应用程序进行问题排查 (p. 308)
使用查询 API
查询参数
HTTP 基于查询的请求是指使用 HTTP 动作 GET 或 POST 的 HTTP 请求,查询参数的名称为 Action。
每个查询请求必须包括一些通用参数,以处理操作的身份验证和选择事宜。
有些操作会使用参数列表。这些列表都是使用 param.n 表示法指定的。n 值是从 1 开始的整数。
有关此产品的地区和终端节点的信息,请转到《Amazon Web Services 常规参考》中的 区域和终端节
点。
查询请求身份验证
您只可以通过 HTTP 发送查询请求,并且每个查询请求中必须包含您的签名。您必须使用签名版本 2 或
签名版本 4。此部分介绍如何创建签名版本 2。有关创建签名版本 4 的信息,请参阅 Signature Version 4
签名过程。
下面介绍了对发送至 AWS 的请求进行身份认证所采用的基本步骤。其中假定您注册了 AWS,并且有一
个访问密钥 ID 和私有访问密钥。
Tip
您可以在 AWS 您的账户页面上的安全证书部分内查找访问密钥 ID 和私有访问密钥。
API Version 2013-05-15
302
Amazon Relational Database Service 用户指南
查询请求身份验证
查询身份验证流程
1
发件人构建一个将要发送至 AWS 的请求。
2
发件人计算请求签名,即带有一个 SHA-1 散列函数的键控式散列信息验证码 (HMAC),如
本主题下一部分中所定义的那样。
3
请求的发件人将请求数据、签名和访问密钥 ID(即所使用的私有访问密钥的密钥标识符)
发送至 AWS。
4
AWS 使用访问密钥 ID 来查询私有访问密钥。
5
AWS 从请求数据中生成一个签名,并且私有访问密钥采用的算法与在请求中计算签名所使
用的算法相同。
6
如果签名匹配,那么请求将被视为可信。如果比较签名这一操作失败,那么请求将被丢弃,
同时 AWS 将返回一份错误响应。
Note
如果请求包含一个 Timestamp 参数,那么针对请求计算的签名将在被赋予值后的 15 分钟失效。
如果请求包含一个 Expires 参数,那么签名将在 Expires 参数指定的时间失效。
计算请求签名
1.
2.
创建标准化的查询字符串,您在本过程后面需要用到它:
a.
根据参数名称、按照自然字节排序对 UTF-8 查询字符串组成部分进行分类。参数可取自 GET
URI 或 POST 正文(当内容类型为 application/x-www-form-urlencoded 时)。
b.
URL 根据以下规则对参数名称和值进行编码:
i.
不对任何由 RFC 3986 定义的非预留字符进行 URL 编码。这些非预留字符是指 A-Z、a-z、
0-9、连字符 (-)、下划线 ( _ )、句点 (.) 和波浪符 ( ~ )。
ii.
使用 %XY 对所有其他参数进行百分比编码,其中“X”和“Y”分别代表十六进制字符 0-9 和大
写字母 A-F。
iii.
以 %XY%ZA... 格式对扩展的 UTF-8 字符进行百分号编码。
iv.
将空白字符百分号编码为 %20(不是普通编码方案中的 +)。
c.
使用等号 ( = )(ASCII 字符 61)将编码的参数名称与它们的编码值分隔开,即使参数值为空,
亦应如此。
d.
使用“和”符号 (&)(ASCII 代码 38)隔开名称/值对。
依照下列伪语法创建用以签名的字符串(“\n”代表 ASCII 换行)。
StringToSign = HTTPVerb + "\n" + ValueOfHostHeaderInLowercase + "\n" + HT
TPRequestURI + "\n" + CanonicalizedQueryString <from the preceding step>
HTTPRequestURI 组件是 URI 的 HTTP 绝对路径组件,但不包括查询字符串。如果 HTTPRequestURI
为空,则使用正斜杠 ( / )。
API Version 2013-05-15
303
Amazon Relational Database Service 用户指南
使用 SOAP API
3.
利用您刚创建的字符串计算符合 RFC 2104 的 HMAC,将您的私有访问密钥当作密钥,并将 SHA256
或 SHA1 作为散列算法。
有关的更多信息,请转至 http://www.rfc.net/rfc2104.html。
4.
将结果值转换为 base64。
5.
将此值作为请求中的 Signature 参数值。
例如,下面是一个示例请求(为清晰起见,添加换行符)。
https://rds.amazonaws.com/
?Action=DescribeDBInstances
&DBInstanceIdentifier=myinstance
&Version=2010-01-01
&Timestamp=2010-05-10T17%3A09%3A03.726Z
&SignatureVersion=2
&SignatureMethod=HmacSHA256
&AWSAccessKeyId=<Your AWS Access Key ID>
对于之前的查询字符串,您可通过以下字符串计算 HMAC 签名。
GET\n
rds.amazonaws.com\n
AWSAccessKeyId=<Your AWS Access Key ID>
&Action=DescribeDBInstances
&DBInstanceIdentifier=myinstance
&Timestamp=2010-05-10T17%3A09%3A03.726Z
&SignatureMethod=HmacSHA256
&SignatureVersion=2
&Version=2009-10-16
结果是下面的已签名请求。
https://rds.amazonaws.com/
?Action=DescribeDBInstances
&DBInstanceIdentifier=myinstance
&Version=2010-01-01
&Timestamp=2010-05-10T17%3A09%3A03.726Z
&Signature=<URLEncode(Base64Encode(Signature))>
&SignatureVersion=2
&SignatureMethod=HmacSHA256
&AWSAccessKeyId=<Your AWS Access Key ID>
使用 SOAP API
Topics
• WSDL 和架构定义 (p. 305)
API Version 2013-05-15
304
Amazon Relational Database Service 用户指南
WSDL 和架构定义
• 编程语言支持 (p. 305)
• 请求身份验证 (p. 305)
• 响应结构 (p. 307)
• Web 服务参考 (p. 308)
WSDL 和架构定义
您可使用 SOAP Web 服务消息发送协议访问 Amazon Relational Database Service。此接口由 Web 服务
描述语言 (WSDL) 文件描述,以定义特定服务的操作和安全模式。WSDL 引用 XML 模式文档,其中严格
限定可能出现在 SOAP 请求和响应中的数据类型。有关 WSDL 和 SOAP 的更多信息,请参阅 Web 服务
参考 (p. 308)。
Note
Amazon RDS 仅通过 HTTPS 支持 SOAP。
所有纲要必须注有版本编号。版本编号会在纲要文件的 URL 和纲要目标命名空间中显示。这使通过版本
号来区分请求以实现升级的操作变得非常简单。
Amazon RDS WSDL 的最新版本在以下位置提供:
Region
WSDL Location
美国东部(弗吉尼亚北
部)地区
https://rds.us-east-1.amazonaws.com/doc/2013-05-15/AmazonRDSv7.wsdl
US West (Northern
California) Region
https://rds.us-west-1.amazonaws.com/doc/2013-05-15/AmazonRDSv7.wsdl
US West (Oregon)
Region
https://rds.us-west-2.amazonaws.com/doc/2013-05-15/AmazonRDSv7.wsdl
EU (Ireland) Region
https://rds.eu-west-1.amazonaws.com/doc/2013-05-15/AmazonRDSv7.wsdl
Asia Pacific (Singapore) https://rds.ap-southeast-1.amazonaws.com/doc/2013-05-15/AmazonRDSv7.wsdl
Region
Asia Pacific (Tokyo)
Region
https://rds.ap-northeast-1.amazonaws.com/doc/2013-05-15/AmazonRDSv7.wsdl
South America (São
Paulo) Region
https://rds.sa-east-1.amazonaws.com/doc/2013-05-15/AmazonRDSv7.wsdl
编程语言支持
由于 Amazon RDS 内的 SOAP 请求和响应都遵循了当前的标准,因此可以使用任何提供库支持的编程语
言。已知拥有此支持的语言包括 C++、C#、Java、Perl、Python 和 Ruby。
请求身份验证
Amazon RDS 遵循当前的 WS–Security 标准,这就要求您对 SOAP 请求执行哈希算法并进行签名,以实
现完整性和不可否认性。WS 安全定义用于确保各级安全的配置文件。使用 BinarySecurityToken 配置文
件确保 SOAP 信息的安全,该配置文件包含配备了 RSA 公有密钥的 X.509 证书。
API Version 2013-05-15
305
Amazon Relational Database Service 用户指南
请求身份验证
以下为不稳定的 DescribeDBInstances 操作的内容:
<DescribeDBInstances>
<MaxRecords>100<MaxRecords>
</DescribeDBInstances>
为确保请求安全,我们添加了 BinarySecurityToken 元素。
请求的安全版本以以下内容开始:
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xm
lns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLS
chema-instance">
<soap:Header>
<wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis200401-wss-wssecurity-secext-1.0.xsd">
<wsu:Timestamp xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis200401-wss-wssecurity-utility-1.0.xsd" wsu:Id="Timestamp-2">
<wsu:Created>2009-10-28T18:41:59.597Z</wsu:Created>
<wsu:Expires>2009-10-28T18:46:59.597Z</wsu:Expires>
</wsu:Timestamp>
<wsse:BinarySecurityToken
xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecur
ity-utility-1.0.xsd"
EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soapmessage-security-1.0#Base64Binary"
ValueType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509token-profile-1.0#X509v3"
wsu:Id="CertId-5992FC58FDECA60AF912567553195531"
xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wsse
curity-secext-1.0.xsd">
....many, many lines of base64 encoded X.509 certificate...
</wsse:BinarySecurityToken>
<ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#" Id="Signature1">
<ds:SignedInfo>
<ds:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xmlexc-c14n#"/>
<ds:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsasha1"/>
<ds:Reference URI="#Timestamp-2">
<ds:Transforms>
<ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
</ds:Transforms>
<ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
<ds:DigestValue>DLFQyK61qWoJiMyC9w34siRELAM=</ds:DigestValue>
</ds:Reference>
<ds:Reference URI="#id-3">
<ds:Transforms>
<ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
</ds:Transforms>
<ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
API Version 2013-05-15
306
Amazon Relational Database Service 用户指南
响应结构
<ds:DigestValue>gUnvvoUezxgt56eBl2kW/y5diMk=</ds:DigestValue>
</ds:Reference>
</ds:SignedInfo>
<ds:SignatureValue>OMoJJqqDnahRt/9H2n8obJolyVprpziAzlFRZ9KbdwX
JoD1Rl2sAikZ0IJW7/VS9q8GH4JDsT2v1
UoUogKgRSWy3sU4943g1T0vhyigbUm4vNxE/qUKm
SIXx2ed/8buaF9oRiB8zYDu0/qRT+QQ73rdaoyn2YRNkSi2+6P2FHmE=
</ds:SignatureValue>
<ds:KeyInfo Id="KeyId-5992FC58FDECA60AF912567553195672">
<wsse:SecurityTokenReference
xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wsswssecurity-utility-1.0.xsd"
wsu:Id="STRId-5992FC58FDECA60AF912567553195703"
xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wsswssecurity-secext-1.0.xsd">
<wsse:Reference URI="#CertId-5992FC58FDECA60AF912567553195531"
ValueType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wssx509-token-profile-1.0#X509v3"
xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wsswssecurity-secext-1.0.xsd"/>
</wsse:SecurityTokenReference>
</ds:KeyInfo>
</ds:Signature>
</wsse:Security>
</soap:Header>
如果您将此与 Amazon RDS 提供的库生成的或另一供应商的请求进行匹配,以下为最重要的元素。
元素
• BinarySecurityToken - 包含 base64 编码 PEM 格式的 X.509 证书
• 签名 - 包含使用标准化、签名算法和摘要方法创建的 XML 数字签名
• 时间戳 - 对 Amazon RDS 的请求在该值产生后 5 分钟内有效,以便防止重放攻击
响应结构
响应请求时,Amazon RDS 服务会返回符合 XML 架构的 XML 数据结构,而根据定义,该架构是 Amazon
RDS WSDL 的一部分。对于相关的请求而言,XML 响应的结构都是特定的。
以下为响应示例:
<DescribeDBInstancesResponse xmlns="http://rds.amazonaws.com/admin/2009-10-16/">
<DescribeDBInstancesResult>
<DBInstances/>
</DescribeDBInstancesResult>
<ResponseMetadata>
<RequestId>946cda70-c3f1-11de-807a-79c03c55f7d4</RequestId>
</ResponseMetadata>
</DescribeDBInstancesResponse>
API Version 2013-05-15
307
Amazon Relational Database Service 用户指南
Web 服务参考
Web 服务参考
有关使用 Web 服务的更多信息,请参阅以下任一资源:
• Web 服务描述语言 (WSDL)
• WS-Security BinarySecurityToken 配置文件
可用的库
对于那些喜欢使用特定语言的 API 而不喜欢使用 SOAP 和 Query 构建应用程序的软件开发人员,AWS
为他们提供了库、示例代码、教程和其它资源。这些库提供了一些基本功能(未包括在 API 中),比如
请求身份验证、请求重试和错误处置,以便您轻松地开始工作。现已推出适用以下语言的库和资源:
• Java
• PHP
• Python
• Ruby
• Windows 和 .NET
有关以所有语言推出的库和示例代码,请转到示例代码和库。
对应用程序进行问题排查
Topics
• 检索错误 (p. 308)
• 故障排查技巧 (p. 308)
Amazon Relational Database Service 会提供特定的描述性错误,可在您与 Amazon RDS API 交互时帮
您诊断各种问题。
检索错误
通常,在您花费任何时间处理错误结果之前,您都会希望您的应用程序检查某个请求是否生成错误。了解
是否出现错误的最简单方法是在 Amazon RDS API 发出的响应内查找 Error 节点。
XPath 语法不仅提供了一种搜索 Error 节点存在情况的简单方法,而且提供了一种检索错误代码和消息
的简单方法。下面的代码片段采用 Perl 和 XML::XPath 模块来确定在请求期间是否出现错误。如果出现
了错误,那么代码会刊载第一个错误代码和响应信息。
use XML::XPath; my $xp = XML::XPath->new(xml =>$response); if ( $xp>find("//Error") ) {print "There was an error processing your request:\n", "
Error code: ", $xp->findvalue("//Error[1]/Code"), "\n", " ", $xp->findvalue("//Er
ror[1]/Message"), "\n\n"; }
故障排查技巧
我们建议通过以下过程诊断并解决 Amazon Relational Database Service API 的问题。
API Version 2013-05-15
308
Amazon Relational Database Service 用户指南
故障排查技巧
• 访问 http://status.aws.amazon.com,验证 Amazon Relational Database Service 在目标地区内是否正
常运行。
• 检查您的请求结构
每个 Amazon Relational Database Service 操作都在 Amazon RDS API 参考中有一个引用页面。复查
您正在使用的参数是否正确。为了给予您关于潜在错误内容的意见,请考虑示例请求或用户情景,以查
看这些示例是否正在执行类似操作。
• 检查论坛
Amazon RDS 有一个开发社区论坛,用户可在此搜索各种问题的解决办法,这些问题也是其他人曾经
遇到过的。如要查看论坛,请转至
http://developer.amazonwebservices.com/connect/forum.jspa?forumID=60
API Version 2013-05-15
309
Amazon Relational Database Service 用户指南
文档历史记录
下表描述了自上次发行 Amazon Relational Database Service User Guide 以来对文档所做的重要更改。
• API 版本:2013-05-15
• 最近文档更新时间:2013 年 9 月 26 日
更改
描述
修改日期
新功能
更新为支持 Oracle Statspack。
2013 年 9 月 26 日
新功能
更新为支持使用复制功能在 Amazon RDS 中运行的 MySQL 2013 年 9 月 5 日
实例之间和在内部或 Amazon EC2 上运行的 MySQL 实例
之间导入或导出数据。
新功能
更新为支持 MySQL 5.6 的 db.cr1.8xlarge 数据库实例类。 2013 年 9 月 4 日
新功能
更新为支持复制只读副本。
2013 年 8 月 28 日
新功能
更新为支持并行创建只读副本。
2013 年 7 月 22 日
新功能
更新为支持为所有 Amazon RDS 资源细化控制的权限和标 2013 年 7 月 8 日
记。
新功能
更新为支持新实例的 MySQL 5.6,包括对 MySQL 5.6 内
存缓存接口和二进制日志访问的支持。
新功能
更新为支持从 MySQL 5.1 到 MySQL 5.5 的主要版本升级。 2013 年 6 月 20 日
新功能
数据库参数组已发生更新,允许对参数值使用表达式。
新 API 和新增功能
更新为支持只读副本状态;新 API 版本(2013 年 5 月 15 2013 年 5 月 23 日
日)。
新功能
更新为支持 Oracle 高级安全功能中的本地网络加密和
Oracle 透明数据加密。
2013 年 4 月 18 日
新功能
更新为支持 SQL Server 的主要版本升级和预配置 IOPS
的附加功能。
2013 年 3 月 13 日
新功能
更新为默认对 RDS 支持 VPC。
2013 年 3 月 11 日
新 API 和功能
更新为支持日志访问;新 API 版本(2013 年 2 月 12 日) 2013 年 3 月 4 日
API Version 2013-05-15
310
2013 年 7 月 1 日
2013 年 6 月 20 日
Amazon Relational Database Service 用户指南
更改
描述
修改日期
新功能
更新为支持订阅 RDS 事件通知。
2013 年 2 月 4 日
新 API 和功能
更新为支持数据库实例重命名和将 VPC 中的数据库安全组 2013 年 1 月 14 日
成员迁移到 VPC 安全组。
新功能
更新 GovCloud 支持。
2012 年 12 月 17 日
新功能
更新为支持 m1.medium 和 m1.xlarge 数据库实例类。
2012 年 11 月 6 日
新功能
更新为支持只读副本升级。
2012 年 10 月 11 日
新功能
更新为在 Microsoft SQL Server 数据库实例内支持 SSL。 2012 年 10 月 10 日
新功能
更新为支持 Oracle 微数据库实例。
2012 年 9 月 27 日
新功能
更新为支持 SQL Server 2012。
2012 年 9 月 26 日
新 API 和功能
更新为支持预配置 IOP。API 版本 2012–09–17。
2012 年 9 月 25 日
新功能
更新对 VPC 内数据库实例的 SQL Server 支持和对 Data
Pump 的 Oracle 支持。
2012 年 9 月 13 日
新功能
更新对 SQL Server Agent 的支持。
2012 年 8 月 22 日
新功能
更新对数据库实例标记的支持。
2012 年 8 月 21 日
新功能
更新对 VPC 内 Oracle APEX 和 XML 数据库、Oracle 时
区和 Oracle 数据库实例的支持。
2012 年 8 月 16 日
新功能
更新对 VPC 内 SQL Server Database Engine Tuning
Advisor 和 Oracle 数据库实例的支持。
2012 年 7 月 18 日
新功能
更新对 MySQL db.t1.微数据库实例的支持。
2012 年 6 月 11 日
新功能
更新对选项组和第一选项 Oracle Enterprise Manager
Database Control 的支持。
2012 年 5 月 29 日
新功能
更新对 Amazon Virtual Private Cloud 内只读副本的支持。 2012 年 5 月 17 日
新功能
更新 Microsoft SQL Server 支持。
新功能
更新对强制故障转移、数据库实例多可用区域部署和 Oracle 2012 年 5 月 2 日
数据库实例非默认字符集的支持。
新功能
更新 Amazon Virtual Private Cloud (VPC) 支持。
2012 年 2 月 13 日
更新了内容
更新新预留实例类型。
2011 年 12 月 19 日
新功能
更新 Oracle 引擎支持。
2011 年 5 月 23 日
更新了内容
控制台更新。
2011 年 5 月 13 日
更新了内容
编辑缩短的备份和维护时段的内容。
2011 年 2 月 28 日
新功能
添加对 MySQL 5.5 的支持。
2011 年 1 月 31 日
新功能
添加对只读副本的支持。
2010 年 10 月 4 日
新功能
添加对 AWS Identity and Access Management (IAM) 的支 2010 年 9 月 2 日
持。
新功能
添加数据库引擎版本管理。
API Version 2013-05-15
311
2012 年 5 月 8 日
2010 年 8 月 16 日
Amazon Relational Database Service 用户指南
更改
描述
修改日期
新功能
添加预留数据库实例。
2010 年 8 月 16 日
新功能
Amazon RDS 现在支持与数据库实例的 SSL 连接。
2010 年 6 月 28 日
新指南
这是 Amazon Relational Database Service User Guide 的 2010 年 6 月 7 日
第一版。
API Version 2013-05-15
312
Amazon Relational Database Service 用户指南
Amazon RDS 资源
下表列出了在您使用此服务时可为您提供帮助的相关资源。
资源
描述
Amazon Relational Database Service
API Reference
《API 参考》包含对所有 Amazon RDS 查询 API 和数据类型
的全面说明。
Amazon Relational Database Service
Command Line Reference
Command Line Tools Reference 包含对所有命令行工具及其
选项的综合描述。
Amazon RDS 技术常见问题
“常见问题解答”涵盖了开发人员对此产品提出的一些最热门的
问题。
发行说明
本发行说明简要概括了当前的发行版本。特别说明了一些新功
能、修复和已知问题。
AWS 开发人员资源中心
这是一个帮助您入门的资源整合点,您可以在这里找到相关的
文档、代码示例、发行说明和其他信息,帮助您通过 AWS 构
建创新的应用程序。
AWS 管理控制台
AWS 管理控制台可让您执行 Amazon RDS 的多数功能,而
无需编程。
开发论坛
由开发人员组成的社区形式的论坛,他们可以在这里讨论与
Amazon Web Services 有关的技术问题。
AWS 支持中心
AWS 技术支持的首页包括对我们的开发人员论坛、技术
FAQ、服务状态和高级支持等页面。
Amazon RDS 产品信息
提供了 Amazon RDS 相关信息的主要网页。
联系我们
这是一个有关查询的中心联络点,可帮助您查询有关 AWS 计
费、账户、事件和滥用等方面的信息。
使用条件
有关在 Amazon.com 和其他主题中的版权和商标使用的详细
信息。
API Version 2013-05-15
313
">
/
Download
Just a friendly reminder. You can view the document right here. But most importantly, our AI has already read it. It can explain complex things in simple terms, answer your questions in any language, and help you quickly navigate even the longest or most compilcated documents.
Advertisement