

# 数据库配置、备份和故障转移
<a name="database-configuration-backup-and-failover"></a>

许多 Web 应用程序均包含某种形式的持久性，通常表现为关系型或者非关系型[数据库](https://aws.amazon.com/products/databases/)。AWS 同时提供关系型和非关系型数据库服务。或者，您可以在 EC2 实例上部署您自己的数据库软件。下表汇总了这些选项，将在本节对它们进行更详细的讨论。

*表 1 — 关系型和非关系型数据库解决方案*


|   |  关系数据库解决方案  |  NoSQL 解决方案  | 
| --- | --- | --- | 
|  托管数据库服务  |  [Amazon RDS for MySQL](https://aws.amazon.com/rds/mysql/)、[Oracle](https://www.oracle.com/index.html)、[SQL Server](https://www.microsoft.com/en-us/sql-server/sql-server-downloads)、[MariaDB](https://mariadb.org/)、[PostgreSQL](https://www.postgresql.org/)、[Amazon Aurora](https://aws.amazon.com/rds/aurora/)  |  [Amazon DynamoDB](https://aws.amazon.com/dynamodb/)、[Amazon Keyspaces](https://aws.amazon.com/keyspaces/)、[Amazon Neptune](https://aws.amazon.com/neptune/)、[Amazon QLDB](https://aws.amazon.com/qldb/)、[Amazon Timestream](https://aws.amazon.com/timestream/) | 
|  自行管理  |  在 [Amazon EC2](https://aws.amazon.com/ec2/) 实例上托管关系数据库管理系统 (DBMS) |  在 EC2 实例上托管非关系数据库解决方案 | 

## Amazon RDS
<a name="amazon-rds"></a>

 [Amazon Relational Database Service](https://aws.amazon.com/rds/) (Amazon RDS) 使您可以访问熟悉的 MySQL、PostgreSQL、Oracle 和 Microsoft SQL Server 数据库引擎的功能。您已经使用的代码、应用程序和工具可以在 Amazon RDS 上继续使用。Amazon RDS 可自动为数据库软件打补丁，自动备份您的数据库，并且仅保存用户定义的保存期内的备份数据。它还支持时间点恢复。只需进行一次 API 调用，即可灵活地扩展与关系数据库实例相关联的计算资源或存储容量，让您受益。

Amazon RDS 多可用区部署提高了数据库的可用性，确保数据库不会意外中断。Amazon RDS 读取副本提供了数据库的只读副本，这样对于频繁读取的数据库工作负载，您可以将容量扩展到一个数据库以上。与所有 AWS 服务一样，不需要前期投资，您只需为所使用的资源付费。

## 在 Amazon EC2 实例上托管关系数据库管理系统 (RDBMS)
<a name="hosting-a-relational-database-management-system-rdbms-on-an-amazon-ec2-instance"></a>

除了托管的 Amazon RDS 产品之外，您还可以在 EC2 实例上选择安装 RDBMS（如 MySQL、Oracle、SQL Server 或 DB2）并自行管理。在 Amazon EC2 上托管数据库的 AWS 客户可成功使用各种主/备用和复制模型，包括只读副本镜像和使用日志传送实现的始终可用的被动从数据库实例。

在 Amazon EC2 上直接管理您自己的数据库软件时，您还应该考虑容错和持久性存储的可用性。为此，我们建议在 Amazon EC2 上运行的数据库采用 [Amazon Elastic Block Store](https://aws.amazon.com/ebs/) (Amazon EBS) 卷，它类似于网络挂载存储。

对于运行数据库的 EC2 实例，您应将所有数据库数据和日志放在 EBS 卷上。即使数据库主机出现故障，它们仍会保持可用。这样的配置可以实现简单的故障转移方案，在主机出现故障时，可以启动一台新的 EC2 实例，将现有 EBS 卷挂载到新的实例。数据库随后可从中断位置继续运行。

EBS 卷自动在可用区内提供冗余。如果一个 EBS 卷的性能无法满足数据库的需要，可以在几个 EBS 卷间进行捆绑以提高数据库的每秒输入/输出操作数 (IOPS) 性能。

对于过重的工作负载，您还可以使用 EBS 预置 IOPS，只需要在使用时指定所需的 IOPS。如果您使用 Amazon RDS，该服务会自动管理存储，您可以集中精力管理您的数据。

## 非关系数据库
<a name="nosql-solutions"></a>

除了支持关系数据库外，AWS 还提供了许多托管的非关系数据库：
+ **[Amazon DynamoDB](https://aws.amazon.com/dynamodb/)** 是一种完全托管的 NoSQL 数据库服务，提供快速且可预测的性能，能够实现无缝扩展。使用 [AWS 管理控制台](https://aws.amazon.com/console/) 或 [DynamoDB API](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/HowItWorks.API.html)，您可以扩大或缩小容量，而不会导致停机或性能下降。由于 DynamoDB 将运维和扩展分布式数据库的管理负担交给 AWS 处理，因此您无需担心硬件预置、安装和设置、数据复制、软件打补丁或集群扩展等问题。
+ **[Amazon DocumentDB](https://aws.amazon.com/documentdb/)**（兼容 [MongoDB](https://aws.amazon.com/documentdb/what-is-mongodb/)）是一种数据库服务，专为大规模 JSON 数据管理而打造，由 AWS 全面托管，并在 AWS 上运行，具有适合大型企业的高持久性。
+ **[Amazon Keyspaces](https://aws.amazon.com/keyspaces/)** (for [Apache Cassandra](https://cassandra.apache.org/_/index.html)) 是一种可扩展、高度可用、托管的 Apache Cassandra 兼容数据库服务。借助 Amazon Keyspaces，您可以继续使用当前的相同 Cassandra 应用程序代码和开发工具，在 AWS 上运行 Cassandra 工作负载。
+ **[Amazon Neptune](https://aws.amazon.com/neptune)** 是一项快速、可靠且完全托管的图形数据库服务，可帮助您轻松构建和运行使用高度互连数据集的应用程序。Amazon Neptune 的核心是专门构建的高性能图形数据库引擎，它进行了优化以存储数十亿个关系并将图形查询延迟降低到毫秒级。
+ **[Amazon Quantum Ledger Database (Amazon QLDB)](https://aws.amazon.com/qldb/)** (QLDB) 是一个完全托管的分类帐数据库，可提供由中央权威机构持有的透明、不可变且可加密验证的事务日志。QLDB 可用于跟踪每次的应用程序数据更改，并不断维护完整且可验证的更改历史记录。
+ **[Amazon Timestream](https://aws.amazon.com/timestream)** 是一种快速、可扩展的无服务器时间序列数据库服务，适用于物联网和运营应用程序，使用该服务每天可以轻松存储和分析数万亿个事件，速度提高了 1000 倍，而成本仅为关系数据库的十分之一。

此外，您可以使用 Amazon EC2 托管您可能正在使用的其他非关系数据库技术。