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

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS MySQL,高可用系列 2核4GB
简介: 阿里云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
相关文章
|
6月前
|
存储 关系型数据库 MySQL
RDS MySQL 数据库运维简述
从运维的视角,汇总云数据库RDS MySQL使用的避坑指南。文章初版,维护更新,欢迎指点。
986 3
|
6月前
|
SQL 存储 关系型数据库
RDS for MySQL的SQL分类与数据类型
小明需在MySQL中管理商品信息,使用SQL完成业务操作。SQL分为DQL(查询)、DML(增删改)、DDL(定义)、DCL(权限控制)和TCL(事务)五大类。DDL用于创建、修改和删除数据库结构,DML处理数据,DCL控制权限,TCL管理事务,DQL则用于查询数据。MySQL有多种数据类型,如数值型(整数、小数)、日期型和字符串型等,选择合适的数据类型是高效开发的关键。
69 0
|
3月前
|
存储 C# 关系型数据库
“云端融合:WPF应用无缝对接Azure与AWS——从Blob存储到RDS数据库,全面解析跨平台云服务集成的最佳实践”
【8月更文挑战第31天】本文探讨了如何将Windows Presentation Foundation(WPF)应用与Microsoft Azure和Amazon Web Services(AWS)两大主流云平台无缝集成。通过具体示例代码展示了如何利用Azure Blob Storage存储非结构化数据、Azure Cosmos DB进行分布式数据库操作;同时介绍了如何借助Amazon S3实现大规模数据存储及通过Amazon RDS简化数据库管理。这不仅提升了WPF应用的可扩展性和可用性,还降低了基础设施成本。
82 0
|
4月前
|
关系型数据库 MySQL Serverless
函数计算产品使用问题之调用RDS MySQL的步骤是怎样的
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。
|
4月前
|
关系型数据库 数据库 RDS
利用DTS将自建mysql5.7版本数据库迁移至对应rds报错
利用DTS将自建mysql5.7版本数据库迁移至对应rds报错
149 0
|
5月前
|
关系型数据库 MySQL 测试技术
《阿里云产品四月刊》—瑶池数据库微课堂|RDS MySQL 经济版 vs 自建 MySQL 性能压测与性价比分析
阿里云瑶池数据库云原生化和一体化产品能力升级,多款产品更新迭代
|
6月前
|
SQL 关系型数据库 MySQL
RDS for MySQL的DDL、DML和DQL
这篇文章介绍了MySQL中处理数据的几种主要操作:DDL(Data Definition Language),DML(Data Manipulation Language)和DQL(Data Query Language)。首先讲解了如何使用CREATE DATABASE, ALTER DATABASE和DROP DATABASE语句来创建、修改和删除数据库。
68 1
|
6月前
|
存储 关系型数据库 MySQL
RDS for MySQL测试
【4月更文挑战第28天】
|
6月前
|
DataWorks 关系型数据库 MySQL
DataWorks产品使用合集之在DataWorks中配置RDS MySQL数据源的步骤如何解决
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
95 0
|
6月前
|
关系型数据库 MySQL Serverless
RDS MySQL Serverless
阿里云新推出RDS MySQL Serverless,提供实时弹性资源,按需设置范围,自动适应负载变化,实现资源优化与成本降低。用户可通过控制台或API轻松创建实例,无缝应对低负载至高负载场景,实现自动弹性扩缩容。该服务适合各种云数据库应用场景,兼具成本优化和高灵活性。【2月更文挑战第29天】
142 1