「助力降本增效」RDS MySQL云盘版只读基础版发布及其最佳实践

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群版 2核4GB 100GB
推荐场景:
搭建个人博客
云数据库 RDS MySQL,高可用版 2核4GB 50GB
简介: 阿里云RDS MySQL云盘版只读在原来 "高可用只读" 的基础上推出了"基础版只读"。尽管"基础版只读"在价格上比"高可用版只读"便宜了40%左右,两者对于故障的容错能力、异常的应对能力方面还是有差异的。本文通过两款产品的差异性对比,对"基础版只读"的最佳实践进行分享。

引子


阿里云RDS MySQL云盘版只读在原来 "高可用只读" 的基础上推出了"基础版只读"。尽管"基础版只读"在价格上比"高可用版只读"便宜了40%左右,两者对于故障的容错能力、异常的应对能力方面还是有差异的。本文通过两款产品的差异性对比,对"基础版只读"的最佳实践进行分享。


基础版只读 vs 高可用只读


高可用只读架构图


高可用只读架构图如下,通过只读备节点来保证SLA, 遇到异常情况可以通过HA组件切换到备库快速恢复业务。

image.png


针对故障场景,能够快速的failover,应用无需做任何改造。

异常场景

HA组件应对措施

只读主库hang

切换备库

只读主库所在主机异常

切换备库

只读主库复制中断

切换备库

只读主库复制延迟

切换备库

只读备库hang

切换备库

只读备库所在主机异常

迁移

只读备库复制中断

迁移

只读备库复制延迟

迁移


基础版只读架构图


基础版只读架构图如下。由于没有备库,遇到异常无法保证SLA, 用户可以通过设置代理或者通过JDBC自动Failover来自动把流量切换到其他实例来避免业务受到影响。

image.png



异常场景

HA组件应对措施

只读主库hang

重启

只读主库所在主机异常

迁移

只读复制中断

迁移

只读复制延迟

迁移


小结


我们针对两款产品做一个大致对比介绍:


基础版只读

高可用只读

购买前提

主实例云盘高可用版

主实例云盘高可用版 or 本地高可用版

链接地址

1个

1个

实际购买节点数

1个

2个

实例规格变配

业务闪断

业务闪断

高压力情况*

无应对

有应对

异常情况*

HA自动切换

节点异常*

无SLA

60秒SLA

节点自愈能力

有,客户无需关心


说明:

  • 高压力情况是指数据库CPU、内存打满情况下,RDS MySQL只读可以自动failover,进行切换;
  • 异常情况包含但不限于MySQL复制中断、复制延迟、硬件故障等情况;
  • 节点异常主要是指在提供服务只读出现异常的情况下,HA的切换时间;


基础版只读最佳实践


如何购买

用户首先需要创建高可用主实例,然后在实例详情里面找到“只读实例”菜单,点击“添加”

image.png


基于数据库代理做高可用


数据库代理可以通过权重来控制各个实例的业务流量,当某个只读实例不可用时,可自动将异常实例剔除并将流量切换到其他正常实例, 同时应用无需感知实例的变化。用户可以通过主实例详情界面的“数据库代理”菜单进行开通。

image.png


开通成功后, 点击“设置代理终端”进行实例的添加和权重的设置。

image.png


设置完代理终端后, 切换到“代理服务”菜单可以获取到数据库代理的连接地址信息。

image.png


基于JDBC的高可用


JDBC链接数据库的几种模式


如果您的应用是Java,那么JDBC驱动可以做一些简单的自动failover。众所周知,JDBC链接数据库有4种模式:


Single模式

平时默认使用直连方式,即:ip:port方式。


Failover模式

  • 该方式就是当一个数据库宕的情况下,failover到你配置的另外一个数据库。其中还有一个fallback功能,这个是指回切到老数据库;
  • 针对fallback功能需要做一点说明:默认参数配置情况下,当老主库拉起来以后,连接就会立马连接到新主库,这个需要改配置;


Replication模式

  • 标准的主备模式,既主库挂了,可以自动连到备库;前提是在JDBC链接字符串里配置多个数据库;但是需要注意的地方:
  • 默认新创建的数据库连接是Read only,需要代码显示设置;
  • 默认会对读做“round robin”;
  • 按照文档进行了配置,并未对Master挂的情况下做failover。


LoadBalancing模式

  • 负载均衡有一个特点,他的轮询特点可以是“random”或"bestResponseTime"来做决策。这个今天不是本文重点,不做过多阐述;


基于Failover模式的一些提示

基于以上4种模式,综合来看Failover模式比较适合RDS MySQL基础版只读。


数据库链接参数调优

以下JDBC链接参数需要额外关注:

  • autoReconnect:自动重连
  • failOverReadOnly:切换过去以后,是否ReadOnly
  • secondsBeforeRetryMaster:当master挂了以后,多久重试主库
  • queriesBeforeRetryMaster:当master挂了以后,多少次query以后重试主库
  • connectTimeout: 创建连接超时时间
  • socketTimeout:SQL执行超时时间


范例:

jdbc:mysql://ip1:port1,ip2:port2/dbname?autoReconnect=true&failOverReadOnly=false&secondsBeforeRetryMaster=0&queriesBeforeRetryMaster=0&connectTimeout=1000&socketTimeout=3000


测试验证

  • 当数据库链接字符串中第一地址数据库("ip1:port1") Crash以后,能够自动failover到第二地址数据库("ip2:port2");
  • 当第一地址数据库起来以后,配置"secondsBeforeRetryMaster","queriesBeforeRetryMaster"为0后,连接不会自动飘回来,除非kill掉老连接;这个非常重要,replication不用的原因就在这里;


后记

通过本文我们大致介绍了基础版只读的主要特性以及与高可用只读的差异,希望对您有一定的帮助。未来RDS只读会在更多的地方进行产品能力提升。


作者信息

马佳,花名涤余,来自RDS MySQL产品部,主要负责RDS MySQL管控研发相关工作。如果您对MySQL基础版只读有任何产品或者技术疑问,欢迎来信咨询:vogts.wangt@alibaba-inc.com

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
2月前
|
存储 关系型数据库 MySQL
MySQL数据库进阶第三篇(MySQL性能优化)
MySQL数据库进阶第三篇(MySQL性能优化)
|
21天前
|
关系型数据库 MySQL Serverless
函数计算产品使用问题之调用RDS MySQL的步骤是怎样的
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。
|
6天前
|
SQL 关系型数据库 MySQL
MySql⭐一、配置MySql数据库,并创建一个表单
MySql⭐一、配置MySql数据库,并创建一个表单
|
20天前
|
开发框架 前端开发 关系型数据库
ABP框架使用Mysql数据库,以及基于SQLServer创建Mysql数据库的架构和数据
ABP框架使用Mysql数据库,以及基于SQLServer创建Mysql数据库的架构和数据
|
1月前
|
网络协议 关系型数据库 MySQL
【最佳实践】MySQL数据库迁移到PXC集群
借本次数据库迁移实践,再次总结一下MySQL数据库迁移到PXC的最佳操作路径。
39 0
|
2月前
|
关系型数据库 MySQL 数据库
【MySQL】MySQL数据库的delete from table和truncate table之间的区别
【MySQL】MySQL数据库的delete from table和truncate table之间的区别
238 1
|
2月前
|
存储 关系型数据库 MySQL
MySQL数据库进阶第一篇(存储引擎与Linux系统上安装MySQL数据库)
MySQL数据库进阶第一篇(存储引擎与Linux系统上安装MySQL数据库)
|
1月前
|
关系型数据库 数据库 RDS
利用DTS将自建mysql5.7版本数据库迁移至对应rds报错
利用DTS将自建mysql5.7版本数据库迁移至对应rds报错
128 0
|
2月前
|
SQL 存储 关系型数据库
精通MySQL:从基础到高级应用与最佳实践
第一章:MySQL基础入门 1.1 MySQL概述 介绍MySQL的历史、发展、优势以及应用领域
|
1月前
|
SQL 关系型数据库 MySQL
Navicate,数据库,Mysql,改表,4月29日Finished - Unsuccessfully,导出数据不妨,右键,备份一下Mysql数据库的内容,你想导入和导出数据不如,用查询的方式去做
Navicate,数据库,Mysql,改表,4月29日Finished - Unsuccessfully,导出数据不妨,右键,备份一下Mysql数据库的内容,你想导入和导出数据不如,用查询的方式去做