Multi-AZ DB Cluster
是具有两个可读数据库实例的RDS 的高可用性部署模式。 Multi-AZ DB CLuster
在同一区域的三个独立AZ中具有一个writer和两个reader。 与Multi-AZ DB Instance
相比,Multi-AZ DB Cluster
可提供高可用性、更高的读取工作负载容量以及更低的写入延迟。 此外,它的故障转移时间也更快。
下图显示了多可用区数据库集群的架构:
借助Multi-AZ DB Cluster
,RDS使用数据库引擎的复制功能将数据从writer实例复制到两个reader实例。 当对writer进行更改时,它将发送到每个reader。 提交更改需要至少一个reader的确认。
reader既充当自动故障转移目标,又提供读取功能以提高应用程序读取吞吐量。 如果写入器数据库实例发生中断,RDS 会故障转移到其中一个reader。
与在 EBS 卷之间使用同步复制的Multi-AZ DB Instance
不同,Multi-AZ DB Cluster
使用本地连接的 SSD 来存储事务日志,并使用数据库引擎的异步复制, 这会改善提交延迟。
此外,Multi-AZ DB Cluster
故障转移到reader的速度比Multi-AZ DB Instance
更快,通常在 35 秒内。
在第一节我们创建RDS数据库时,看到有三个部署方式:
Single DB Instance
:最简单的方式,只部署一个数据库实例Multi-AZ DB Instance
: 除了创建primary库,还会创建一个standby库,这个standby库平时不抗流量,仅在primary库发生故障时自动failover(后面章节会详细介绍它)Multi-AZ DB Cluster
:本节我们先为rds-pg-labs
数据库添加这种类型的read replica
。进入rds-pg-labs
集群,点击create read replica
:
为read replica
命名为rds-pg-multi-az-read
:
选择Multi-AZ DB Cluster
:
点击Create read replica
。等待大概十分钟后它创建完成,它页面上它隶属于rds-pg-labs
,并作为Multi-AZ DB replica cluster
:
关于Multi-AZ DB replica cluster
,可这样理解:
Multi-AZ DB Cluster
这种方式read replica
, 还不是primary进入这个rds-pg-multi-az-read
节点中,它的endpoints跟普通的read replica
也不一样,普通的read replica
只有一个reader URL,而它有两个(一个reader 一个writer):
在Replication
部分能看到它正在跟primary节点之间保持同步数据。
使用上面的endpoint登录上去,并执行命令检查复制延迟:
我们也可以将这个read replica cluster
提升为独立的集群,点击Promote
:
大概等1-2分钟提升完成。现在它变成独立的Multi-AZ DB Cluster
存在了: