视频 -AliSQL 和读写分离基本原理(二)| 学习笔记

本文涉及的产品
RDS MySQL DuckDB 分析主实例,基础系列 4核8GB
RDS MySQL DuckDB 分析主实例,集群系列 4核8GB
RDS AI 助手,专业版
简介: 快速学习视频 -AliSQL 和读写分离基本原理。

开发者学堂课程【企业运维训练营之数据库原理与实践课程 :视频 -AliSQL 和读写分离基本原理(二)】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/1201/detail/18284


视频 -AliSQL 和读写分离基本原理


三、读写分离

1、读写分离简介

在少写多读的应用场景下,如果原来的数据库没有设置读写分离,只是一个主实例,在少写多读的应用场景下大量的读操作会造成巨大的读取压力,进而影响到业务。用读写分离这个功能可以是查询的这些请求自动的转换到只读实例上,写请求转化到主实例上,各司其职,实现读写分离的自动分流来减轻主实例的压力。通过这样的设置,会给数据库带来非常大的优势,读写分离会提供统一的读写分离的地址变用,如果不开通读写分离的时候,假如需要配置读和写的操作,会需要在应用程序里面分别配置一个主实例,和每一个只读实例连接地址,这样维护的地址会非常繁杂,容易出错。RDS 读写分离的功能第一个就是会提供一个代理地址,连接这个代理地址之后可对主实例和只读实例进行读写操作,请求是自动转发的,写请求转发到主实例上,读请求转发到只读实例上,降低了维护成本。第二个是原生链路支持可以提高数据库性能,减少维护成本。第三个是可以设置只读实例的权重和阈值,可以符合在多场景下进行使用。第四个可以进行实例健康检查,提升数据库性能的可用性。在设置读写分离的时候,为主持与创建只读实例的时候,建议客户至少创建两个只读实例,避免只读实例的单点故障。

2、只读实例

image.png

(1)高可用实例一般有一个主实例和一个备实例,都是在同一个可用区,同一个 region 下。备实例是针对高可用性这个范畴来讲,当主实例经过一些意外的因素,例如宕机或者是实例卡住,必须要进行 aj 的切换,这个时候备实例会立马切换为主实例,继续为客户提供服务。只读实例可以跟主实例在不同的可用区,只读实例主要承担一些只读请求,业务端可能发来一些 select 查询的请求,发到只读实例上。只读实例也有高可用的架构,也可以有只读实例的备实例,这是只读实例的作用。灾备实例一般要求高可靠或高可用性的客户场景可能在其他地域,比如说原来的主实例和备实例在北京 region,希望在极端的情况下北京 region 的所有数据库无法提供服务的时候,备 region 可以继续提供服务,灾备实例往往建在备 region 里面,灾备实例也可以有自身的主实例和备实例。

(2)在对数据库有少量写请求,但有大量读请求的应用场景下,单个实例可能无法承受读取压力,甚至对业务产生影响。为了实现读取能力的弹性扩展,分担数据库压力,可以创建一个或多个只读实例,利用只读实例满足大量的数据库读取需求,增加应用的吞吐量。

只读实例、备实例和灾备实例三者之间的区别:

•只读实例和主备实例在同一地域,可以在不同可用区;备实例和主实例在同一个地域;灾备实例和主备实例在不同地域。

•只读实例可以根据需要创建最多10个;备实例数量是固定的1~2个,高可用版1个,三节点企业版(原金融版)2个;灾备实例是不同地域的一主一备。

•只读实例创建并设置读权重后就会持续提供服务;备实例和灾备实例在主实例正常运行时都不会提供服务。

3、数据库代理

RDS MySQL 数据库代理又分独享代理和共享代理,是位于数据库服务端和应用服务端之间的网络代理服务,用于代理应用服务端访问数据库时的所有请求,具有高可用、高性能、可运维、简单易用等特点。独享代理还提供自动读写分离、事务拆分、连接池等高级功能。

image.png

数据库代理适用的有以下几个场景,第一个是事物内有大量请求导致主实例负载过高的应用场景,这时候可能需要把一些只读的请求拆分出来;第二个是连接处过多导致主实例负载过高的场景;第三个是短连接为主的业务;第四个是纯只读或隔离需求业务。

(1)数据库代理—事务拆分

•默认情况下,RDS数据库独享代理会将事务内的所有请求都发送到主实例以保障事务的正确性,但是某些框架会将所有请求封装到非自动提交的事务中(通过 set autocommit=0;关闭自动提交),导致主实例负载过大,可以使用事物拆分的功能将事物里面只读的请求发送到只读实例上,来提升性能。但是也有一些要求,第一点显示事物在存储过程或事物块里面用 begin 或 start transaction 标明这是一个显示的事物,这时候是暂时不支持拆分的;第二点是可能某些业务对全局一致性有要求,把事物拆分后将不满足全局一致性,这时候事物拆分是受到限制无法使用的。

•事务拆分功能默认开启,在默认的 Read Committed 隔离级别下,当 RDS 关闭事务自动提交后,仅会在发生写操作时才正式开启事务,正式开启事务前的读请求会通过负载均衡模块分流至只读实例。

image.png

(2)数据库代理—设置连接池

事务级连接池:

事务级连接池主要用于减少直接连接到数据库的业务连接数,以及减少短连接场景下频繁建连带来的负载。开启事物级连接池以后客户端与独享代理之间可能会存在上千个连接,但是代理与数据库后端可能存在几十或几百的连接,主要是客户端与连接池的连接比较多。独享代理本身没有最大连接数的限制,连接数的限制主要是在后端数据库的节点规格决定的,没有开启事物级连接池的时候,每条由客户端发起的连接都会在后端主节点和所有只读节点各创建一个对应的连接。当开启事务级连接池的时候,客户端发送请求的时候会先与独享代理进行建联,连接会去判断是否有可用的连接,如果不存在的话,代理会与数据库会创建一个新的连接,如果存在的话直接从连接池里面拿走并使用,这样会减少频繁建联的过程。

image.png

(3)数据库代理—设置连接池

会话级连接池:

会话级连接池适用于短连接场景。会话级连接池主要用于减少短连接业务频繁建立新连接带来的实例负载。当某客户端连接断开时,系统会判断当前连接是否为闲置连接,如果是闲置连接,系统会将该连接放到代理的连接池中并保留一小段时间。当客户端重新发起新连接时,若连接池中有可用的连接(命中的条件包括 user、clientip 和 dbname等),则可直接使用,从而减少与数据库的建连开销。如果连接池内没有可用的闲置连接,则走正常连接流程,与数据库重新建立新连接。

image.png

会话级连接池不能减少数据库的并发连接处,而是通过降低应用和数据库建立的连接速率来减少 MySQL 的开销,更好地处理业务请求,但是连接池闲置的连接会短暂的占用客户端的连接数,而且会话级连接池不能够解决由于存在大量 MySQL 导致的堆积的问题,这种情况下需要客户首先去解决 MySQL 的问题。基于以上数据库连接池的不同的方式,选择连接池第一点,事物级连接池的应用场景是业务的连接数比较多,可能连接数有上万或者更多,或者使用 Seventies 的服务,连接数会随着业务端服务器的扩容而线性增加,建议使用事物级连接池。如何选择会话级连接池,业务上如果是纯短连接或者短连接占比比较大,业务场景可以考虑使用会话级连接池。还有一种情况是业务的使用多为长连接,且连接数比较少,或者业务本身已经具备较好的连接池,就不建议再使用 RDS 的连接池。

(4)数据库代理—使用 Hint 语法

在执行 SQL 的方式可以在前面加上 Hint 的操作,让 SQL 语句发往不同的数据库节点。

image.png

限制:Hint 语法仅支持读写分离地址,不支持只读地址

相关实践学习
自建数据库迁移到云数据库
本场景将引导您将网站的自建数据库平滑迁移至云数据库RDS。通过使用RDS,您可以获得稳定、可靠和安全的企业级数据库服务,可以更加专注于发展核心业务,无需过多担心数据库的管理和维护。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
相关文章
|
10月前
|
机器学习/深度学习 算法
PSO和GA优化BP神经网络参数
PSO和GA优化BP神经网络参数
283 5
|
11月前
|
域名解析 网络协议 安全
什么是网络协议
这段内容通过生活中的例子通俗地解释了“协议”的概念。无论是与朋友吃饭的约定、打电话的过程,还是交通规则,都体现了协议的作用——确保双方按照一致的规则行动以避免混乱。在网络世界中,协议同样重要,例如DNS帮助找到网站、HTTP实现数据交互、HTTPS保障信息安全、TCP/IP负责数据传输。这些协议共同保证了设备间高效、有序的信息交流。
798 7
|
存储 运维 监控
云服务运维智能时代:阿里云操作系统控制台
阿里云操作系统控制台是一款创新的云服务器运维工具,采用智能化和可视化方式简化运维工作。通过AI技术实时监控服务器状态,自动分析性能瓶颈和故障原因,生成详细的诊断报告与优化建议。用户无需复杂命令行操作,仅需通过图形化界面即可高效处理问题,降低技术门槛并提升故障处理效率。尤其在服务器宕机等紧急情况下,智能诊断工具能快速定位问题根源,确保业务稳定运行。此外,控制台还提供内存、存储、网络等专项诊断功能,帮助用户全面了解系统资源使用情况,进一步优化服务器性能。这种智能化运维方式不仅提升了工作效率,也让个人开发者和企业用户能够更专注于核心业务的发展。
|
11月前
|
存储 人工智能 安全
赋能数字化转型的创新引擎
阿里云是全球领先的云计算与人工智能科技公司,其强大的技术实力和丰富的解决方案正深刻影响企业运营与竞争力。依托坚实的云计算基础设施,阿里云提供弹性计算、存储与网络服务,满足多样化需求。在AI与大数据领域,机器学习平台PAI及MaxCompute助力智能决策与创新应用。同时,阿里云构建全方位安全防护体系,保障数据隐私,并通过活跃的开发者社区与生态合作推动行业进步。未来,阿里云将持续加大研发投入,优化云原生技术,深化AI与大数据研究,引领数字化转型潮流,共创美好未来。
赋能数字化转型的创新引擎
|
Web App开发 iOS开发 MacOS
如何在浏览器中启用夜间模式?
【10月更文挑战第10天】
|
11月前
|
Go 容器
Go语言变量与常量 -《Go语言实战指南》
本章详细介绍了Go语言中变量与常量的基础知识。变量支持多种声明方式,包括标准声明、类型推导和短变量声明等,未初始化的变量会自动赋零值。常量在声明时必须赋值,且运行时不可更改,支持使用`iota`实现枚举。两者的主要区别在于变量可变而常量不可变,变量有零值而常量必须初始化。此外,还强调了`:=`的使用限制及代码整洁性要求,并通过实践示例巩固理解。掌握这些内容是学好Go语言的关键基础。
|
10月前
|
人工智能 数据管理 测试技术
Apipost 与 Apifox:API 开发管理工具的全方位较量
在数字化时代,API 开发管理工具对软件开发至关重要。本文对比了 Apipost 和 Apifox 两款工具。Apipost 在数据管理方面提供中央字段库和自动同步功能,确保命名规范与数据一致性;其 AI 驱动的自动化测试生成全面覆盖复杂场景,执行效率高且报告详细;多团队协作功能丰富,权限管理精细,保障数据安全。相比之下,Apifox 缺乏统一命名机制、手动同步易出错,测试与协作功能较弱。综合来看,Apipost 更适合追求高效与安全的企业。
245 0
|
12月前
|
人工智能 定位技术
生成式人工智能认证(GAI认证)没啥用?
生成式人工智能(GAI)正以前所未有的速度改变工作与生活,而GAI认证作为专业能力的“官方认证”,不仅是技能提升的系统路径,更是职业竞争力的有力背书。它涵盖模型开发、提示工程优化及伦理合规等核心内容,由全球教育机构培生集团推出,现已有中文版课程与认证体系。尽管有人质疑其价值,但掌握这一技术或将成为未来职场的关键优势。别让质疑阻挡你的步伐,GAI认证是通往智能化时代的通行证。
|
安全 测试技术 Linux
Acunetix v25.3 发布,新增功能概览
Acunetix v25.3 (Linux, Windows) - Web 应用程序安全测试
138 1
Acunetix v25.3 发布,新增功能概览
|
人工智能 运维 Serverless
Qwen2.5 的云端新体验,5 分钟完成极速部署
将 Qwen2.5 模型部署于函数计算 FC,用户能依据业务需求调整资源配置,有效应对高并发场景,并通过优化资源配置,如调整实例规格、多 GPU 部署和模型量化来提升推理速度。此外,函数计算支持多样化 GPU 计费模式(按需计费、阶梯定价、极速模式),可根据业务需求调整,在面对高频请求和大规模数据处理时,能够显著降低综合成本。
784 16

热门文章

最新文章