高可用只读,让 RDS for MySQL 更稳定

94 阅读5分钟

原文

摘要: 业务应用对数据库的数据请求分写请求(增删改)和读请求(查)。当存在大量读请求时,为避免读请求阻塞写请求,数据库会提供只读实例方案。通过主实例 + N 只读实例的方式,实现读写分离,满足大量的数据库读取需求,增加应用的吞吐量。

业务应用对数据库的数据请求分写请求(增删改)和读请求(查)。当存在大量读请求时,为避免读请求阻塞写请求,数据库会提供只读实例方案。通过主实例 + N 只读实例的方式,实现读写分离,满足大量的数据库读取需求,增加应用的吞吐量。

对于只读实例,如果采用单机无备节点作备份的方案,当实例出现故障或有重建需求的时候,会出现较长时间的不可用,通常需要客户做业务连接上的调整或是创建新只读实例等繁琐操作。单机只读架构如下所示,一旦单机只读发生故障,则业务中断,直至故障修复实例复位。

RDS for MySQL 只读节点稳定性解决方案

为了保证业务的连续性及稳定性,RDS for MySQL 在原来单机只读的基础上,推出了 “高可用只读”。高可用只读在故障的容错能力、异常的应对能力方面具有比较大的优势。相比较单机只读动辄小时级的中断,高可用只读在故障倒换时,仅有秒级中断。

高可用只读架构图如下,异常发生时(比如数据库异常,虚拟机异常等),HA 组件可将主只读节点的 VIP(虚拟 IP)自动切换到备只读节点上,从而快速恢复业务。

除高可用只读方案外,多只读实例 Proxy 轮询的方案也有相同效果。即购买多个只读实例,并开启数据库代理(proxy)的方案,在发生异常情况时,数据库代理自动把流量切换到其他正常只读实例,从而避免出现业务中断发生。Proxy 方案架构图如下:

单机只读、高可用只读、多只读 + proxy,在应用并发连接数、异常反应、成本方面的对比如下:

以上的多方案给用户提供了灵活的可选择性,用户可以基于业务量、成本、业务运行效率等方面综合评估选择适合自己的方案。这篇文章中将重点介绍下高可用只读,未来我们还会基于 proxy 做一期介绍,敬请期待。

高可用只读使用办法

高可用只读在页面上的展示

如图所示,replica-86e2 为单机只读实例,replica-bb17 及 replica-b947 为高可用只读实例。需要注意的是,高可用只读实例是一组(主、备)实例,其底层会自动实现故障机制响应。

如何购买高可用只读

直接购买高可用只读

1.  登录管理控制台。

2.  单击管理控制台左上角的符号,选择区域和项目。

3.  单击页面左上角的符号,选择 “数据库> 云数据库 RDS”。

4.  在 “实例管理” 页面,选择指定的实例,单击操作列的 “更多 > 创建只读”,进入 “创建只读” 页面。

也可在实例的 “基本信息” 页面,单击实例拓扑图中,主实例下方的添加按钮,创建只读实例。

5.  在 “创建只读” 页面,只读模式选择 “只读(高可用)”,填选实例相关信息后,单击 “立即创建”。

6.  在 “规格确认” 页面,进行信息确认。如果需要重新选择,单击 “上一步”,回到服务选型页面修改基本信息。对于按需计费的实例,信息确认无误后,单击 “提交”,下发新增只读实例请求。对于包年 / 包月的实例,订单确认无误后,单击 “去支付”,进入 “付款” 页面。

7.  高可用只读实例创建成功后,可以对其进行查看和管理。

只读实例转换为高可用只读

除了上述新建只读实例时选择高可用只读模式,RDS for MySQL 也支持已有的单机只读升级为高可用只读,操作简单,无需进行老实例回收等操作。

说明:

非高可用只读可以转换为高可用只读实例,但高可用只读不允许转换为非高可用只读实例。

1.  登录管理控制台。

2.  单击控制台左上角的符号,选择区域和项目。

3.  单击页面左上角的符号,选择 “数据库> 云数据库 RDS”,进入 RDS 信息页面。

4.  在实例列表中,单击实例名称前的符号,单击非高可用只读实例的名称,进入实例的基本信息页面,即进入只读实例的管理页面。

5.  在转高可用页面,确认信息无误后,单击 “立即申请”,即可将普通只读实例转换为高可用只读实例。

高可用只读使用注意事项

  • 高可用只读支持的磁盘类型有:SSD 云盘、本地盘以及极速型 SSD;支持的规格类型有:通用型、独享型、鲲鹏通用增强型、x86 通用型以及 x86 独享型。
  • 不建议修改高可用只读实例的参数,否则会影响高可用只读的可靠性。
  • 高可用只读不允许进行如下操作:修改端口、转换到非高可用只读实例。
  • 创建高可用只读或是变更到高可用只读时,需要保证实例所在子网的 IP 充足。