首页> 标签> AliSQL
"AliSQL"
共 176 条结果
全部 问答 文章 公开课 课程 电子书 技术圈 体验
《深入MySQL实战》电子版地址
《深入MySQL实战》MySQL 是全球最受欢迎的开源数据库,广泛应用于各类应用场景。本电子书由阿里云数据库工程师和多位业内资深大咖联合出品,详细解读AliSQL在双11等高并发场景下的应用与实践,带你快速理解MySQL核心技术。 通过本书,你可以学习到: 1. MySQL高可用、高并发等多个场景的最佳实践 2. RDS MySQL Java 开发实战 3. MySQL 查询优化、索引优化的技巧 4. RDS AliS 电子版下载地址:https://developer.aliyun.com/ebook/450 电子书: </div>
文章
AliSQL  ·  关系型数据库  ·  MySQL  ·  Java  ·  数据库  ·  双11  ·  索引  ·  RDS
2023-02-20
《深入MySQL实战》电子版地址
《深入MySQL实战》MySQL 是全球最受欢迎的开源数据库,广泛应用于各类应用场景。本电子书由阿里云数据库工程师和多位业内资深大咖联合出品,详细解读AliSQL在双11等高并发场景下的应用与实践,带你快速理解MySQL核心技术。 通过本书,你可以学习到: 1. MySQL高可用、高并发等多个场景的最佳实践 2. RDS MySQL Java 开发实战 3. MySQL 查询优化、索引优化的技巧 4. RDS AliS 电子版下载地址:https://developer.aliyun.com/ebook/450 电子书: </div>
文章
AliSQL  ·  关系型数据库  ·  MySQL  ·  Java  ·  数据库  ·  双11  ·  索引  ·  RDS
2023-02-09
《AliSQL 内核定制方案》电子版地址
《AliSQL 内核定制方案》AliSQL 内核定制方案 电子版下载地址: https://developer.aliyun.com/ebook/5095 电子书: </div>
文章
AliSQL
2023-01-27
《深入MySQL实战》电子版地址
《深入MySQL实战》MySQL 是全球最受欢迎的开源数据库,广泛应用于各类应用场景。本电子书由阿里云数据库工程师和多位业内资深大咖联合出品,详细解读AliSQL在双11等高并发场景下的应用与实践,带你快速理解MySQL核心技术。 通过本书,你可以学习到: 1. MySQL高可用、高并发等多个场景的最佳实践 2. RDS MySQL Java 开发实战 3. MySQL 查询优化、索引优化的技巧 4. RDS AliS 电子版下载地址:https://developer.aliyun.com/ebook/450 电子书: </div>
文章
AliSQL  ·  关系型数据库  ·  MySQL  ·  Java  ·  数据库  ·  双11  ·  索引  ·  RDS
2023-01-18
《AliSQL的性能优化实战》电子版下载地址
《AliSQL的性能优化实战》AliSQL的性能优化实战 电子版下载地址:https://developer.aliyun.com/ebook/6773 电子书: </div>
文章
AliSQL
2023-01-16
视频 -AliSQL 和读写分离基本原理(三)| 学习笔记
开发者学堂课程【企业运维训练营之数据库原理与实践课程 :视频 -AliSQL 和读写分离基本原理(三)】学习笔记,与课程紧密联系,让用户快速学习知识。课程地址:https://developer.aliyun.com/learning/course/1201/detail/18284视频 -AliSQL 和读写分离基本原理四、实例管理1、创建实例(1)进入 RDS 控制台,左上角点击“创建实例”,进入创建实例流程页面。用自己的账户登录到阿里云控制台的首页,在左上角搜寻云数据库 RDS 版,就可以到达云数据库的控制台。在控制台可以点击左侧导航栏的第二个,是实例列表,可以看到内部测试账号展示的所有实例。如果想新建实例,点击左上角创建实例按钮,会跳转到创建实例的页面。在这个页面中包含付费方式,有包年包月和按量付费。包年包月是预付费的形式,按量付费是后付费,可以根据每个小时出一次价格,根据不同的规格、不同的性能判定这一个小时 RDS 实例需要多少价格。(2)可以选择地域,这里有中国境内的 region,还有亚太欧美和中东印度的 region。测试实例选择杭州。RDS 提供了很多数据库类型,包含 MySQL、Polar、PostgreSQL、Microsoft SQL Server,这些都是客户常见创建的类型。以 MySQL 8.0作为演示的实例,还有其他的版本,包含主流的5.5、5.6、5.7,PG 有10、11一直到14,SQL server 有各种标准版和企业版,用户在创建的时候可以根据自己的需求创建不同的数据库类型。(3)有不同的系列,包含基础版、高可用版和三节点企业版。基础版只有一个主节点对外提供服务,是不保证高可用的,存在单点故障的风险。当主实例因为某种意外的原因无法对外提供服务时,业务也将进行停止,一般对于商用的或者对大型的业务有高可用需求的不建议客户创建基础版规格系列。基础版主要是针对平常的测试或个人需求、学习等简单的业务场景下创建基础版。高可用版有99.99%的可用性,对外提供一个主节点和一个备节点,平常备节点是不对外提供服务的,只有当主节点出现一些意外的情况,会进行主备切换。Ha 就是备节点切换为主节点进行服务,这是一个高可用性保证业务的连贯性。三节点企业版是对可用性要求比较高的客户推出的系列,除了主节点和备节点,还提供一个日志节点来进行高可用的保障。存储类型可以根据不同的需要选择磁盘的类型,有 PL1、PL2、PL3云盘,还有本地 SSD 盘。可以点击如何选择存储类型,里面有具体的文档可以进行参考,所有不同的云盘和级别提供了不同的IO和吞吐量。(4)选择主节点的可用区,每个 region 都是有不同的可用区的。实例规格有不同的规格码,代表不同的 CPU 内存和最大连接数等等资源,相应的价格也会有所不同。可以根据自己平常业务的预估判断需要创建怎样的规格类型,演示可以创建一核1G的,最大连接数是300,每个月140元。然后是存储空间,首先对初期业务数据量的必要的评估,选择不同的存储空间作为基础的存储。如果随着后续客户的业务数据量不断的增大,后续可以进行扩容。 接着可以选择释放后备份的保护策略,可能在客户删除实例之后,有可能是误删除,或者是基于未来的考量,想在某一段时间之后将实例恢复,可以选择不同的备份保证后续的恢复。(5)下一步会进行实例配置,首先是网络类型,支持经典网络和专有网络,根据线上很多客户主流选择专有网络,下面会创建一个 VPC 选择网段,VPC 下面有交换机。第二块是默认的存储引擎,这里由刚才讲到的第一部分内容 X-Engine,可以用 AliSQL 的存储引擎,需要注意的是只有 MySQL 8.0版本可以使用,5.5、5.6、5.7暂时不支持,首先需要进行大版本升级,升级到8.0才可以进行选择。参数可以选择表名大小写,不同的用户有不同的需求。一般境内的客户时区都会选择 utc+8的时区。还有小版本升级,在大版本5.5、5.6、5.7当中会有一些特性的 myfix,或者是一些更高级别的小特性融入到各个大版本当中,为了保证业务的流畅和稳定,会有不同的小版本,要让客户定期或者是根据自己的意愿进行小版本的升级,后期也会讲到小版本是如何升级的,有不同的小版本,可以选择自动升级或手动升级。填写完第一步的规格、区域、Region、存储空间以及第二步的一些网络的信息,就可以确认订单,跳转到以下页面就可以确认刚才所选的信息是否准确。刚才选择的时长是包年包月的方式,是一年,还有实例的个数可以选择,如果想到期自动续费,也可以选择是否自动续费,点击服务协议,就可以支付创建,这是数据库创建的流程。返回到实例列表看创建的流程,可以看到,刚才创建的实例正在创建中。2、变更配置第二部分是变更配置,在平常的使用当中,随着业务或者是其他的性能要求方面,可能原先创建的实例满足不了性能,比如说刚才创建的实例规格很小,是1核1G 的,面对大量的连接或者是 CPU 占用比较高的 SQL 请求,难以应付,此时需要更高规格、更多资源的实例。可以进行实例的变更配置,通过变更配置来提高 CPU 内存或存储空间的功能,达到变配的目的。需要注意的有几点,第一点是进行规格系列选择的时候,系列、规格还有存储空间,这些变配项目都需要选择;第二点是在变配期间可能会出现30秒的闪断,建议客户在进行变配操作的时候,选择在业务低峰期操作,并确保应用有重连机制;第三点需要注意的是创建的时候要有选择切换时间,为了更好地满足客户任务切换分配,设置了一个切换时间。比如在晚上八点发起一个变配任务,但这个时候选择的时间是在运维窗口切换,这个运维窗口有可能在业务低峰期,假如是凌晨两点到六点,这个时候变配任务会在八点开始进行,在凌晨两点的时候所有工作都已完成,在等待切换,两点到六点正好是业务低峰期,在这个时间窗口就会进行切换,对于客户的业务影响是最小的。还有其他的一些情况,比如要立即切换,这也是可以让用户自主选择的。下面进行实例的变配任务,首先,简单介绍一下面板里基本信息展现的内容。有一些基础信息,可能在创建实例的时候已经确认了,有存储类型、实例类型、可用区,还有运行状态,可以点击续费处理,包年包月转按量,第三个是一些配置信息,资源是多少、可运维时间段,最下面是存储空间的使用情况。这涉及到可以进行配置的变更,这个测试实例大数据库版本是5.5,两核 4G 的实例。当实例不够用时,可以点击变更配置按钮,立即升配或者降配。演示立即升配,立即升配当中需要选择不同的规格,原来是两核4G,可以选择两核8G或者更高的配置。存储空间也可以选择大一些,规格、资源、存储空间都选完之后,选定切换时间。切换时间分为立即执行和可维护时间内进行切换,一般建议选择可维护时间执行,业务低峰期对数据库的影响是最小的。点击服务协议,点击去支付,会弹出一个框,展示变配的差异。在配置信息页面,有一个可维护时间段,可以供客户自己选择,一般是凌晨两点到六点,可以根据自己的需要进行设置。3、升级大版本/小版本升级数据库版本包含两部分内容,第一部分是升级数据库大版本,大版本支持5.5到5.6,5.6到5.7,切换时间和变更配置是一样的;第二部分是升级内核小版本,可能在每一个大版本下,会有一些兼容性更好的特性发布,就可以进行小版本的升级,解决当前的问题或者是让性能更好、兼容性更好。(1)升级数据库版本:支持在控制台进行如下形式的版本升级:•RDS MySQL 5.7 → RDS MySQL 8.0•RDS MySQL 5.6 → RDS MySQL 5.7•RDS MySQL 5.5 → RDS MySQL 5.6 选择切换时间。•立即切换:数据迁移后立即切换。•可维护时间内进行切换:在可维护时间段内执行切换操作。(2)升级内核小版本:(3)到控制台进行实际的操作演示,首先进行数据库大版本的升级,选择了一个数据库版本较低的5.5,点击升级数据库版本。可以看到他是不支持,直接从5.5到5.7或8.0的,需要一步一步的升级,首先将5.5升级到5.6,选择是立即切换,还是在可维护时间段内进行切换,点击确定。数据库小版本显示的是已经是最新版本,没有办法再升级。下面找一个不是最新版本的进行升级演示。下面显示的数据库小版本不是最新的,可升级至某某版本。在变更配置旁边有一个升级内核小版本连接额,可以点开,点开以后在下拉框里有供数据库选择的小版本,选择相应的小版本,升级时间是一样的。会有提示,小版本会重启实例,有30秒的闪断和变更配置,要保证重连机制。4、迁移可用区在控制台上的基本信息区域,点击“迁移可用区”。假如客户端部署在阿里云的 RDS 上,数据库实例部署在阿里云的数据库实例,如果 ECS 和 RDS 实例同在一个VPC 下,内部网络也能够保证内网的高速访问。有些在同一个 VPC,但不在同一个可用区,但是有一些客户在线上提供服务的时候有这样的需求,进行一个可用区的变更,希望数据库实例跟客户端 ECS 实例放在同一个可用区里,这个功能 RDS 是支持的,这样可以在控制台进行迁移可用区的操作。基本信息里,在设置白名单旁边有一个迁移可用区按钮。地域和可用区可以在基本信息中查看,点击迁移可用区就可以进行选择,备实例可以在不同的可用区,也可以在相同的可用区,VPC 和交换机会发生相应的变化。迁移可用区也会出现一次闪断,保证的机制和以上变更配置都是一样的。5、备份恢复—备份备份恢复出于数据的可用性或者安全进行考虑,出现误删除或者是数据的丢失,想通过备份快速的恢复到实例上,进行日常的备份。备份有数据备份和日志备份,备份的周期和频率也可以在控制台上进行设置。在控制台左侧点击“备份恢复”备份:•备份设置:设置备份保留天数,备份周期,和下次备份具体的执行时间等;•日志备份:开启日志备份策略,可以实现按时间点恢复。6、备份恢复—恢复数据恢复方案概览(1)阿里云 RDS 提供恢复的手段非常丰富,上图列举了一些需要恢复的场景或解决方案。第一个是恢复误释放的实例,进入回收站,可以在一定时间内找到实例进行恢复;已删除的实例备份:如果是本地盘实例设置开启了实例释放后保留备份,可以在已删除实例备份下恢复。在创建实例页面,有一个选项叫删除释放实例后的备份保留策略,不小心将数据库删除释放后,选择保留最近的备份或者是保留全部备份,在数据库实例删除之后可以利用那些备份进行恢复,如果选择释放实例后不保留备份,备份也会进行删除。第二个是恢复误删除的数据,恢复全量或者库表。有刚才在 AliSQL 提到的 united States deck,会快速的恢复误删除的数据,通过指定 time stack,进行恢复。还有阿里云提供的很多丰富的工具,比如说 DBS 的逻辑备份,可以持续将阿里云的数据库备份备份出来,进行恢复。还有一块是数据迁移,有一些备份文件在线下 adc 机房自建的数据库有一些备份,但是这些备份需要恢复到云上创建一个和 adc 一模一样的实例,可以通过备份文件恢复到本地,或者是恢复到云上。(2)备份恢复也可以在控制台上进行简单的操作和演示,点击左侧导航栏的备份恢复,可以进入到一个备份的页面。备份有四个页签,分别是数据备份、日志备份、备份下载、备份设置。数据备份会进行数据库的全量的数据备份,有备份的时间点,有供客户的下载和恢复,比如想看里面的一些数据,或者是想下载到本地,恢复到一些其他自建的实例上,都可以进行备份下载。可以点击恢复将备份文件恢复到一个实例上,但是恢复是恢复到另外一个实例。在某些情况下,可以选择用数据库备份进行恢复,恢复到一个新实例上,在验证新实例数据上的可用性或可靠性,或者是数据的一致性,没有问题可以将原始数据进行删除。在恢复页面支持选择不同的规格,可以根据需要选择不同的系列、规格、CPU 内存资源和存储空间。(3)日志备份会将 MySQL 的 binlog 持续的备份,也是可以供客户在界面上下载。备份下载记录的是在什么时间什么用户下载的备份。最后可以进行备份的设置,可以设置备份的时间频率,还有策略。点击编辑,设置备份的周期,可以选择时间,有一个建议,为了数据安全,请一周至少备份两次 RDS。如果只备份一次,七天一个间隔,业务量大的话,如果出现极端情况,这一次备份和上一次备份会出现较大的数据损失,为了确保安全,可以每天都备份。备份时间可以选择业务低峰期,备份保留天数默认是七天,最大可以是730天。还有本地日志的保留策略,就是 binlog 的保留策略,Binlog 会占用本地存储的空间,设置最大存储占有率的时候,建议占的少一些。注意:超出设定的占有率后,系统会自动开始清理最早的 binlog 文件。假如现在 binlog 已经占用了10%或者十几,前面的 binlog 会被删除。7、调整参数在控制台实例详情页面,点击左侧导航栏中的“参数设置”。注意事项:•为保证实例的稳定,仅支持对控制台中开放的参数进行修改,未在控制台中呈现的参数,不支持修改。•部分参数修改后需要重启实例,具体请参见控制台上可修改参数页面中的是否重启列。建议在业务低峰期操作,并确保应用程序具有重连机制。(1)在 RDS 控制台页面提供一些 MySQL 给客户公开出来可以修改的参数,这些参数并不是所有的 MySQL 内部的参数进行暴露,有一些非常重要的参数不会暴露给用户,由后台专业的研发同学或系统进行维护,不是可以随便修改。暴露出的参数是可以根据客户的业务特点,比如超时、连接数可以进行评估和修改。没有在控制台上展示的参数,原则上是不允许修改的,有些参数需要重启实例,有些参数不需要,所以在修改参数的时候需要查看一下是否重启这一列,是的话需要重启,否的话不需要重启。需要注意,重启可能会导致业务出现断联,修改参数如果是会重启实例的参数,建议在业务低峰期操作,重启的时候对业务的影响比较小。(2)在参数设置页面会展现很多参数,这些参数都有特定的含义,点击运行参数值,可以点击编辑,可以看到他支持的范围,可以根据自己的需求修改。 找一个会重启数据库实例的参数进行修改,修改完点击确定会进行提交,提交之后就会重启数据库实例,每个参数具体的描述可以点击相应的小叹号,会展示出来参数的具体含义,这些参数可能是英文版。还有一些应用模板,导出参数模板,这一套参数想应用到其他实例,可以用导出模板。还支持一些导入的参数值,有些客户在线上可以看到昨天的参数值和今天的参数值有些不同,想知道是谁在什么时候对这个参数进行了修改,可以查看修改参数的历史。8、主备切换主备切换的前提是实例是高可用以上的实例架构,基础版没有主备切换这一功能。高可用以及三节点企业版都支持主备切换,支持在控制台上设置切换,切换有两大类,一类是自动切换,一类是手动切换,实例默认开启自动切换,高可用检测到主实力出现某种故障,就会进行 ha。手动切换客户会有一些自己的判断,可以设置为手动切换,比如说用于容灾演练或多可用区场景下的就近连接等需求。RDS 实例进行主备切换的原因有如下几种:•风险隐患:阿里云检测到实例存在潜在风险,可能影响实例的正常使用,系统会在备实例修复风险项,并且在可维护时间段发起主备切换。紧急风险修复类事件通常会在第一时间修复并触发主备切换。•人工操作:您或者您授权的阿里云技术专家手动发起的主备切换。•实例故障:阿里云检测到实例发生故障,无法正常使用,系统会发起主备切换,及时恢复业务正常运转,缩小故障影响范围。主备切换在服务可用性左侧导航,可以看到自动切换主备是默认开启的,可以选择关闭或者是开启。可以手动进行主备库的切换,选择切换的时间可以是立即切换或者是设置的时间内切换,实例主备切换可能会有1到2次的闪断,实力要有重连的机制保障安全。9、监控报警 —监控在实例详情页面,点击左侧导航栏的“监控与报警”监控报警是日常数据库运维中比较常用的功能,需要实时监控 CPU 内存或 IOPS 存储空间等资源,需要设置已值,当 CPU 到达80%或90%时,需要有告警机制通知相关的运维人员或研发人员,进行接下来的处理或操作。CPU 出现90%可能是有问题,出现慢查询或者是当时的流量过高,需要进行紧急的排查。另一方面,也有可能是就是水位已经比较高,业务比较繁忙,平常的水位就已经达到已值,接下来的操作会进行扩容,回到刚才的实例变配,申请更多的CPU资源。监控报警是常见的运维手段,RDS 数据库也提供了非常丰富的监控的指标项和监控场景。10、监控报警 —报警(1)开启一键告警按钮,能够快速建立RDS的报警体系,可以及时知晓关键监控项的异常。​对于监控项可以设置报警,可以建立一些报警规则和通知规则,当实例触发了报警的阈值或者条件的话,会及时通过相关的方式,比如通过电话,邮件,钉钉等方式,通知相关的人员进行进一步处理。(2)在控制台页面,点击左侧导航的监控与报警,这里会看到一些非常丰富的指标项,包含资源监控,资源监控主要指的是数据库实例存在的速度机枪和平常用的资源,CPU 内存在怎样的水位,存储空间还有会话连接等等,还有丰富的监控项。第二部分是引擎监控,对于 MySQL 一些内部的引擎,InnoDB 的一些监控指标项,他的读写还有 QPS 和 TPS 来监控业务是否正常,或者是突增。(3)可以设置一些报警,可以开启一键报警,也可以按照报警规则进行设置。点击报警规则设置按钮跳转到另一个界面进行报警设置。报警规则是 RDS 跟云监控一起联合开发的应用,演示创建报警规则,产品选择云数据库 RDS 版,资源范围是实例。添加一些规则,规则名称叫 CPU 使用率高于80%,监控指标选择 CPU 使用率,在阀值及报警级别可以定义级别,80%可以把它定为紧急,还可以选择最小值、最大值、平均值,在这里选择平均值。连续三个周期,一个周期一分钟,就是三个周期在三分钟之内连续三个周期一直达到80%就会发生告警,阈值线非常形象的显示了,这是实际使用的 CPU 利用率,当他达到80%的时候,就会触发阈值条件。生效时间是全天生效,报警组可以在云监控里设置,最后点击确定,一个报警规则就生成了。设置告警规则:11、(1)基本信息里有设置白名单的链接,默认创建数据库之后,默认不允许其他指引访问这个数据库,如果需要其他的客户端访问数据库实例,是需要添加白名单的。可以根据自己的需要设置白名单,而0.0.0.X/0表示对所有实例进行开放,这种情况一般用于测试,一般情况下不建议全部放开。(2)账号管理可以在控制台内数据库进行账号的管理和创建,创建账号有高权限账号和普通账号 。高权限账号相当于很高的权限账号,读写都会有的账号,每一个实例只允许创建一个高使用账号,可以选择一个普通的账号,精确的授权,授权到相应的库。(3)数据库管理可以进行数据库的创建,可以选择相应的字符集。(4)数据库连接配置有默认的内网地址,也可以申请外网地址,让实例走外网。(5)数据库代理可以设置读写分离,数据库代理个数最大是60,可以设置为2,点击立即开启。(6)RDS 数据库是可以用 SSL 链接进行数据加密,一些对安全性要求较高的客户,为了防止数据被盗取,会有这方面的需求,可以点击 SSL 进行设置。(7)自治服务是阿里云沉淀的优化功能,后期会有专门的内容介绍数据库自治功能。基于多年的阿里云数据库专家对于线上的故障分析或性能分析、SQL 分析等等经验沉淀下来的自治工具,加上继续学习的功能,预测实例的功能或性能的走向进行判断,包含慢 SQL 优化、SQL 限流、碎片空间整理等等功能会非常丰富。这就是整个控制台关于数据库实例运维的操作介绍。 五、总结本节主要内容包含三块,第一块是 AliSQL 的功能,首先讲到了 X-Engine 的发展的背景和历程,在其上的 AliSQL 都实现了哪些特性,从功能、性能有不同的特性供客户使用。第二块了解了读写分离的原理和功能,在大量读请求和少量写请求的情况下可以优化这样的架构,实现读写分离的功能。第三块是在控制台如何管理 RDS 实例的相关的操作,包括创建、变配、迁移可用区、升级版本等等,通过本节课程希望大家对阿里云数据库的实际运维有简单的了解,对内核方面的知识有一定的了解,还有一些读写分离,帮助我们在实际日常业务过程中有一个更好的架构,帮助实例的性能得到提高。
文章
存储  ·  SQL  ·  运维  ·  监控  ·  AliSQL  ·  关系型数据库  ·  MySQL  ·  网络安全  ·  数据库  ·  RDS
2022-12-29
视频 -AliSQL 和读写分离基本原理(二)| 学习笔记
开发者学堂课程【企业运维训练营之数据库原理与实践课程 :视频 -AliSQL 和读写分离基本原理(二)】学习笔记,与课程紧密联系,让用户快速学习知识。课程地址:https://developer.aliyun.com/learning/course/1201/detail/18284视频 -AliSQL 和读写分离基本原理三、读写分离1、读写分离简介在少写多读的应用场景下,如果原来的数据库没有设置读写分离,只是一个主实例,在少写多读的应用场景下大量的读操作会造成巨大的读取压力,进而影响到业务。用读写分离这个功能可以是查询的这些请求自动的转换到只读实例上,写请求转化到主实例上,各司其职,实现读写分离的自动分流来减轻主实例的压力。通过这样的设置,会给数据库带来非常大的优势,读写分离会提供统一的读写分离的地址变用,如果不开通读写分离的时候,假如需要配置读和写的操作,会需要在应用程序里面分别配置一个主实例,和每一个只读实例连接地址,这样维护的地址会非常繁杂,容易出错。RDS 读写分离的功能第一个就是会提供一个代理地址,连接这个代理地址之后可对主实例和只读实例进行读写操作,请求是自动转发的,写请求转发到主实例上,读请求转发到只读实例上,降低了维护成本。第二个是原生链路支持可以提高数据库性能,减少维护成本。第三个是可以设置只读实例的权重和阈值,可以符合在多场景下进行使用。第四个可以进行实例健康检查,提升数据库性能的可用性。在设置读写分离的时候,为主持与创建只读实例的时候,建议客户至少创建两个只读实例,避免只读实例的单点故障。2、只读实例(1)高可用实例一般有一个主实例和一个备实例,都是在同一个可用区,同一个 region 下。备实例是针对高可用性这个范畴来讲,当主实例经过一些意外的因素,例如宕机或者是实例卡住,必须要进行 aj 的切换,这个时候备实例会立马切换为主实例,继续为客户提供服务。只读实例可以跟主实例在不同的可用区,只读实例主要承担一些只读请求,业务端可能发来一些 select 查询的请求,发到只读实例上。只读实例也有高可用的架构,也可以有只读实例的备实例,这是只读实例的作用。灾备实例一般要求高可靠或高可用性的客户场景可能在其他地域,比如说原来的主实例和备实例在北京 region,希望在极端的情况下北京 region 的所有数据库无法提供服务的时候,备 region 可以继续提供服务,灾备实例往往建在备 region 里面,灾备实例也可以有自身的主实例和备实例。(2)在对数据库有少量写请求,但有大量读请求的应用场景下,单个实例可能无法承受读取压力,甚至对业务产生影响。为了实现读取能力的弹性扩展,分担数据库压力,可以创建一个或多个只读实例,利用只读实例满足大量的数据库读取需求,增加应用的吞吐量。只读实例、备实例和灾备实例三者之间的区别:•只读实例和主备实例在同一地域,可以在不同可用区;备实例和主实例在同一个地域;灾备实例和主备实例在不同地域。•只读实例可以根据需要创建最多10个;备实例数量是固定的1~2个,高可用版1个,三节点企业版(原金融版)2个;灾备实例是不同地域的一主一备。•只读实例创建并设置读权重后就会持续提供服务;备实例和灾备实例在主实例正常运行时都不会提供服务。3、数据库代理RDS MySQL 数据库代理又分独享代理和共享代理,是位于数据库服务端和应用服务端之间的网络代理服务,用于代理应用服务端访问数据库时的所有请求,具有高可用、高性能、可运维、简单易用等特点。独享代理还提供自动读写分离、事务拆分、连接池等高级功能。数据库代理适用的有以下几个场景,第一个是事物内有大量请求导致主实例负载过高的应用场景,这时候可能需要把一些只读的请求拆分出来;第二个是连接处过多导致主实例负载过高的场景;第三个是短连接为主的业务;第四个是纯只读或隔离需求业务。(1)数据库代理—事务拆分•默认情况下,RDS数据库独享代理会将事务内的所有请求都发送到主实例以保障事务的正确性,但是某些框架会将所有请求封装到非自动提交的事务中(通过 set autocommit=0;关闭自动提交),导致主实例负载过大,可以使用事物拆分的功能将事物里面只读的请求发送到只读实例上,来提升性能。但是也有一些要求,第一点显示事物在存储过程或事物块里面用 begin 或 start transaction 标明这是一个显示的事物,这时候是暂时不支持拆分的;第二点是可能某些业务对全局一致性有要求,把事物拆分后将不满足全局一致性,这时候事物拆分是受到限制无法使用的。•事务拆分功能默认开启,在默认的 Read Committed 隔离级别下,当 RDS 关闭事务自动提交后,仅会在发生写操作时才正式开启事务,正式开启事务前的读请求会通过负载均衡模块分流至只读实例。(2)数据库代理—设置连接池事务级连接池:事务级连接池主要用于减少直接连接到数据库的业务连接数,以及减少短连接场景下频繁建连带来的负载。开启事物级连接池以后客户端与独享代理之间可能会存在上千个连接,但是代理与数据库后端可能存在几十或几百的连接,主要是客户端与连接池的连接比较多。独享代理本身没有最大连接数的限制,连接数的限制主要是在后端数据库的节点规格决定的,没有开启事物级连接池的时候,每条由客户端发起的连接都会在后端主节点和所有只读节点各创建一个对应的连接。当开启事务级连接池的时候,客户端发送请求的时候会先与独享代理进行建联,连接会去判断是否有可用的连接,如果不存在的话,代理会与数据库会创建一个新的连接,如果存在的话直接从连接池里面拿走并使用,这样会减少频繁建联的过程。(3)数据库代理—设置连接池会话级连接池:会话级连接池适用于短连接场景。会话级连接池主要用于减少短连接业务频繁建立新连接带来的实例负载。当某客户端连接断开时,系统会判断当前连接是否为闲置连接,如果是闲置连接,系统会将该连接放到代理的连接池中并保留一小段时间。当客户端重新发起新连接时,若连接池中有可用的连接(命中的条件包括 user、clientip 和 dbname等),则可直接使用,从而减少与数据库的建连开销。如果连接池内没有可用的闲置连接,则走正常连接流程,与数据库重新建立新连接。会话级连接池不能减少数据库的并发连接处,而是通过降低应用和数据库建立的连接速率来减少 MySQL 的开销,更好地处理业务请求,但是连接池闲置的连接会短暂的占用客户端的连接数,而且会话级连接池不能够解决由于存在大量 MySQL 导致的堆积的问题,这种情况下需要客户首先去解决 MySQL 的问题。基于以上数据库连接池的不同的方式,选择连接池第一点,事物级连接池的应用场景是业务的连接数比较多,可能连接数有上万或者更多,或者使用 Seventies 的服务,连接数会随着业务端服务器的扩容而线性增加,建议使用事物级连接池。如何选择会话级连接池,业务上如果是纯短连接或者短连接占比比较大,业务场景可以考虑使用会话级连接池。还有一种情况是业务的使用多为长连接,且连接数比较少,或者业务本身已经具备较好的连接池,就不建议再使用 RDS 的连接池。(4)数据库代理—使用 Hint 语法在执行 SQL 的方式可以在前面加上 Hint 的操作,让 SQL 语句发往不同的数据库节点。限制:Hint 语法仅支持读写分离地址,不支持只读地址
文章
SQL  ·  存储  ·  运维  ·  负载均衡  ·  AliSQL  ·  关系型数据库  ·  MySQL  ·  数据库  ·  开发者  ·  RDS
2022-12-29
视频 -AliSQL 和读写分离基本原理(一)| 学习笔记
开发者学堂课程【企业运维训练营之数据库原理与实践课程 :视频 -AliSQL 和读写分离基本原理(一)】学习笔记,与课程紧密联系,让用户快速学习知识。课程地址:https://developer.aliyun.com/learning/course/1201/detail/18284视频 -AliSQL 和读写分离基本原理 内容介绍:一、课程目标二、AliSQL三、读写分离四、实例管理五、总结 一、课程目标整体内容有三个部分,第一部分主要介绍 AliSQL 相关的功能特性和基本原理;第二部分是数据库用到的读写分离的思想;第三部分会具体介绍 RDS 数据库控制台上相关的基本操作。本次课程的目标是针对这三块内容提供的目标:①了解 AliSQL 的功能、性能和优势②了解读写分离的功能和相关原理③熟悉如何管理 RDS 实例和相关的控制台操作 二、AliSQL1、AliSQL 简介 (1)AliSQL 是阿里云深度定制的一个独立的分支,在社区版的功能上又提供了类似于 MySQL 企业版的功能,提供了一些更加强大的性能,比如说备份恢复、线程池、并行查询等。还有一些兼容 Oracle 和功能,比如说 sequence 等。AliSQL 是基于 X-Engine 存储架构引擎上的,X-Engine 是阿里云数据库产品自己研发的连接事务处理的数据库引擎,目前已经应用到阿里集团诸多业务系统当中,大幅缩减了业务成本,历经双十一百倍流量的考验,所以开源出来进行功能的增强。X-Engine 的诞生是为了应对业务内部的挑战,背景是在2010年双十一的关系部署了大量的 MYSQL 数据库,但是随着历年流量的增长,面临着极大的挑战。(2)MySQL 数据库可以通过扩容节点的分布式方案解决,但是如果一直是这种堆积器的方案,则不是一个高效的手段。当时的数据库团队就想用更高的技术手段来提升数据库的性价比,使之达到极致,实现以少量的资源换取性能大幅提高的目的,所以在这个基础上开发了 X-Engine 存储引擎。全新的 X-Engine 存储引擎不仅能够无缝对接 MySQL,同时还使用了分层存储的架构思想,在面向大规模的海量数据存储提供了高并发事务处理能力和降低存储成本,在大部分大数据量的场景下,数据被访问的机会是不均等的,访问频繁的热数据占比很少,X-Engine 根据数据访问频度不同,将数据划分为多个层次。2、AliSQL 功能AliSQL 有三方面的功能特性,分别是功能、性能、稳定性三方面。(1)Ex: Native Flashback数据库运维过程中的误操作可能会给业务带来严重的影响,比如误删某些表或误删某些表中的数据,常见的恢复手段Binlog,但是 Binlog 操作较为复杂、容易出错且耗时较长,而通过备份集恢复则需要额外的系统资源,在数据量较大时恢复时间不可控。AliSQL 在 InnoDB 引擎上设计和实现了 Native Flashback 功能,无需复杂的恢复操作,通过简单的 SQL 语句即可查询或恢复误操作前的历史数据,节省了大量宝贵的时间,保证业务平稳运行。可以使用如下语句,用 TIMESTAMP,后面跟一些表达式将数据恢复到想要的时间点。SELECT ... FROM <表名> AS OF TIMESTAMP <表达式>;例如:​SELECT ... FROM tablename AS OF TIMESTAMP '2020-11-11 00:00:00’; ​​SELECT ... FROM tablename AS OF TIMESTAMP now(); ​​SELECT ... FROM tablename AS OF TIMESTAMP (SELECT now()); ​​SELECT ... FROM tablename AS OF TIMESTAMP DATE_SUB(now(), INTERVAL 1 minute);​(2)Ex:Thread Pool数据库团队为了发挥出 RDS 最佳的性能,提供了 Thread Pool 功能。将线程和会话分离,在拥有大量会话的同时,只需要少量线程完成活跃绘画的任务。MySQL 默认的线程使用的模式是会话独占的模式,所以每个会话都会创建一个独立的线程,当大量会话存在时,就会导致大量的资源争抢,大量的系统线程调度和缓存失效也会导致数据库的性能急剧下降。阿里云 RDS 线程池实现了不同 SQL 操作的优先集和并发控制机制,就是将连接池始终控制在最佳的连接数附近,不让连接数过高,这样就会保持在高性能的状态。线程池的优势有以下几点:①在大量线程并发工作的时候,线程池会自动调节线程的数量在一个合理范围内②大量事务并发执行的时候,线程池会将语句事物分为不同的优先级③线程池可以给管理类的 SQL 更高的优先级,保证那些语句优先执行(3)Ex:Statement Outline在生产环境中 SQL 语句的执行计划可能会发生改变,原因有很多,可能有一些外部因素导致执行计划方式改变,导致数据库在执行 SQL 的时候不稳定。利用 Optimizer Hint 和 Index Hint 让 MySQL 稳定执行计划,该方法称为Statement Outline,以最优的方法执行。(4)Ex:Sequence Engine在 RDS 数据库系统中,不论是单节点的业务组件,还是分布式系统的全局唯一值,或是更多系统的幂等控制,单调递增唯一值是用户常见的需求。不同的数据库系统有不同的实现方法,MySQL 当中提供了 Auto increment,MySQL数据库中如果业务希望封装唯一值,比如说增加日期、用户等信息,使用 Increment 的方法有很多不变,在实际系统当中也存在一些不同的折中方法,比如说序列值由应用端或 proxy,但是弊端非常明显,状态会带到应用端增加扩容或缩容复杂度,所以 AliSQL 提供的 Sequence Engine 功能实现了 MySQL 存储引擎的设计接口,但底层的数据仍然使用现在的存储引擎来达到这样的效果。(5)Ex:ReturningMySQL 的语句执行结果的的报文通常分为三类,分别是 Resultset、OK、Error,针对 DML 语句返回 OK 或者 Error 报文,会影响扫描记录的特性,所以在很多业务场景下,执行 insert、upset、delete 这样的 DML 语句都会跟随 select 查询当前的内容,以及进行接下来的业务处理,减少客户端和服务器的交互。(6)Ex:Lizard 事务系统Lizard 事务系统能够更好地提升 RDS MySQL 数据库的吞吐能力,并支持分布式事务和全局一致性。3、AliSQL 性能(1)Fast Query Cache针对原生 MySQL Query Cache 的不足,阿里云进行重新设计和全新实现,主要解决原生 MySQL Query Cache 的几个不足点,第一个是并发控制,在这上面进行了一些优化,取消了全局锁的同步机制,采用无锁机制,重新设计了并发场景下的同步问题,能够充分利用多核的处理能力保证在高并发下的数据库的性能;第二个是优化内存管理,取消内存预分配的机制,采用了更加灵活的动态内存分配机制;第三点是优化了缓存机制,当动态检测缓存利用率,实时调整缓存策略,解决命中率偏低或者是读写混合场景下性能下降的问题。(2)Binlog in Redo在事务提交时将 Binlog 内容同步写入到 Redo Log 中,减少对数据库磁盘的操作,提高数据库性能。(3)Statement Queue针对语句的排队机制,将语句进行分桶排队,尽量把可能具有相同冲突的语句(例如操作相同行)放在一个桶内排队,MySQL 的服务层和引擎层在语句并发执行的过程中,有很多串联的点容易导致冲突。比如在 DML 语句中,事务锁冲突比较常见,Inno DB 中事务锁最新的力度是行级锁,如果语句针对相同的行级并发操作,会导致冲突比较严重,系统的吞吐量会随着客户业务端的增加而递减,AliSQL 提供了 Statement Queue 这样一个机制,通过分桶排队的方法,减少冲突的开销,从而达到实现实例性能的作用。(4)Inventory Hint快速提交、回滚事务,配合 Returning 和 Statement Queue,能有效提高业务吞吐能力。AliSQL 提供 Inventory Hint,帮助快速提交/回滚事务,配合 Returning 和 Statement Queue,能有效提高业务吞吐能力。​/*+ COMMIT_ON_SUCCESS */ /*+ ROLLBACK_ON_FAIL */​例子:​UPDATE /*+ COMMIT_ON_SUCCESS ROLLBACK_ON_FAIL */​​T SET c = c - 1 WHERE id = 1;​两个事务 Hint 为 COMMIT_ON_SUCCESS和ROLLBACK_ON_FAIL:•COMMIT_ON_SUCCESS:当前语句执行成功就提交事务上下文。•ROLLBACK_ON_FAIL:当前语句执行失败就回滚事务上下文。4、AliSQL 的稳定AliSQL  在稳定方面针对于 MySQL 数据库或者是 RDS 数据库在平常运行过程中可能出现一些抖动,或者是性能方面,或者是统计方面的不确定性而做出的优化,主要包括下面五方面。(1)Faster DDL在很多实际的客户案例中,经常会遇到客户在执行 DDL 的时候会发生一些问题,比如说为什么加索引会造成实例的抖动,影响正常业务的读写;第二个是可能一个表不是很大,但是在执行 DDL 的时候需要十几分钟,类似于客户反馈卡住了;第三个是为什么使用临时表连接退出的时候会造成实例的抖动,这三个问题是平常客户反馈比较多的问题。针对这些常见的问题在 MySQL 源生的 DDL 开发了 Faster DDL,在 DDL 操作期间的缓存维护逻辑存在性能缺陷,通过这样的优化Buffer 处的页面管理策略来减少 DDL 操作的导致的锁锁降用,达到缓解刚才提到的问题,通过这个功能,可以使客户在实例平常的压力下安心的执行 DDL,不会发生刚才提到的问题。(2)Statement Concurrency Control并发控制是为了应对数据库请求流量资源消耗过高的语句访问,和 SQL 访问模型的变化,保证 MySQL 实例持续稳定的运行,为了应对流量或资源过高的语句提供的一个功能。(3)Performance Agent便捷的性能数据统计方案。通过 MySQL 插件的方式,实现 MySQL 实例内部各项性能数据的采集与统计。他在一个系统部下新增了一张内存表,用于统计最近一段时间的性能数据,使得客户可以直接查询该表把最近一段时间的性能统计的数据进行查看。(4)Purge Large File Asynchronously通过异步删除大文件的方式保证系统稳定性。背景是在源生的 Inno DB,就是 MySQL Inno DB 直接删除一个大文件可能会导致严重的稳定性问题,在这上面启动一个后台的线程异步的清理这些数据文件,当删除一个单个表空间的时候会将对应的数据文件先重命名为临时文件,用异步的线程删除,来达到系统的稳定性。AliSQL 支持通过异步删除大文件的方式保证系统稳定性。使用 InnoDB 引擎时,直接删除大文件会导致POSIX文件系统出现严重的稳定性问题,因此 InnoDB 会启动一个后台线程来异步清理数据文件。当删除单个表空间时,会将对应的数据文件先重命名为临时文件,然后清除线程将异步、缓慢地清理文件。​set global INNODB_DATA_FILE_PURGE = on; ​​set global INNODB_DATA_FILE_PURGE_INTERVAL = 100; ​​set global INNODB_DATA_FILE_PURGE_MAX_SIZE = 128;​​select * from information_schema.innodb_purge_files; (5)Performance Insight是专注于实例负载监控、关联分析、性能调优的利器,帮助您迅速评估数据库负载,找到性能问题的源头,提升数据库的稳定性。5、小结阿里云在多年的实践经验上开发了 X-Engine 的存储引擎,在上面构架了一套优化 MySQL 源生的 AliSQL,他有三个方面,分别是功能、性能和稳定。在这三大块下有具体的特性来供客户平常在数据库业务过程中进行使用。
文章
SQL  ·  存储  ·  缓存  ·  AliSQL  ·  关系型数据库  ·  MySQL  ·  Java  ·  数据库  ·  双11  ·  RDS
2022-12-29
RDS MySQL 高效设计及性能调优(一)| 学习笔记
开发者学堂课程【RDS MySQL 高效设计及性能调优 :RDS  MySQL  高效设计及性能调优(一)】学习笔记,与课程紧密联系,让用户快速学习知识。课程地址:https://developer.aliyun.com/learning/course/1209/detail/18176RDS MySQL 高效设计及性能调优 内容介绍:一、什么是 RDS MySQL 二、 RDS MySQL 的架构及特性三、 RDS MySQL 产品系列四、 RDS MySQL 参数模板五、 RDS MySQL 的实战场景六、 RDS MySQL 开发规范和建议七、 RDS MySQL 使用经验 本次分享来自金融 TAM 团队八大精品课程之一的 RDS MySQL 高效设计及性能调优。本次分享将从三大部分进行讲解:了解 RDS MySQL 、 RDS MySQL 开发规范和建议、 RDS MySQL 使用经验。首先来了解一下 RDS MySQL :将从什么是 RDS MySQL 及 RDS MySQL 的架构及特性,以及它的对应实战产品进行了解。 一、什么是 RDS MySQL 阿里云关系型数据库(Relational Database Service、简称 RDS)是一种稳定可靠,可弹性伸缩的在线数据库服务。提供了容灾、备份、恢复、监控、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。RDS MySQL 内核是阿里云深度定制的独立 MySQL 分支 AliSQL,AliSQL 除了社区版的所有功能外,还提供了类似于 MySQL 企业版的诸多功能,如企业级备份恢复、线程池等,并且 AliSQL 还提供兼容 Oracle 的能力,如 sequence 引擎等。 二、  RDS MySQL 的架构及特性1.将通过这个图这个架构图进行讲解:首先最擅长的 Connectors,提供了各个应用程序对连接数据库的接口,例如 JDBC ODBC 等;下面是 MySQL Server,从左往右开始讲解:Management 的 Service &Utilities 这一块是系统管理和服务控制相关工具,例如Recovery 复制是同步复制等;Connection Managment 这一块,主要和用户访问所涉及到的像用户登录、线程池管理、线程池处理,以及连接处的限制,还有进程、内存等;下面这块是的 RDS MySQL 的核心,主要用于分析 SQL ,以及 SQL 如何在的底层数据库进行执行:SQL Interface 主要接收应用端传过来的 SQL ,并将 SQL 执行的结果反馈给应用端;拿到一条 SQL 之后,它会进入到语法解析器,进行语法解析其是否符合的语法规范等;之后会进入到优化器,优化器将所接收到的语法述里面的内容进行转化,将其转化成可执行的执行计划,然后传到底层获取数据。下面一块是与缓存相关的机制管理。在核心区域以之下是存储引擎,插件式存储引擎,是 MySQL Server 比较有特点的一个地方:它能够支持不同的数据以及不同的存储要求。像 InnoDB 存储引擎目前是使用最广,而且是目前来说使用最好的一款存储引擎,同时也是 RDS MySQL 的默认存储引擎,此外本次的分享也都是基于 InnnoDB 进行分享。 X-Engine 是阿里自研的一款基于 OLTP 的存储引擎,如果大家对这块需要更多了解的话,可以在阿里云官网进一步了解。在插件式存储引擎之下,是文件系统,例如的一些数据的事件日志等这些的写入、读写的存储,都在这块进行写入。下面这部分更贴近系统层、操作系统。这就是 MySQL Server 的内核架构。2. RDS MySQL 具有的特性:(1) Statement ConcurrencyContrl 可以控制 MySQL 的并发,当遇到数据负载 CPU较高,是由某条 MySQL 引起并发数过多,导致整个数据库负载增加时,可以用这个功能去匹配这条 SQL 的关键字,将这条 SQL 进行并发控制,把它限制在一条或两条等。这个功能就可以在应急场景上使用。 (2) Statement Outline 可以指定执行某些搜索的执行计划和回收。比如说要删除一个表时,出现了误删除,可以从回收站进行回收。这些功能特性我就不一一介绍,如果大家对于Ali SQL 的特性需要了解的话,可以在阿里官网进行了解。
文章
SQL  ·  存储  ·  弹性计算  ·  AliSQL  ·  关系型数据库  ·  MySQL  ·  Java  ·  数据库连接  ·  数据库  ·  RDS
2022-12-28
《AliSQL云上最佳实践》电子版地址
《AliSQL云上最佳实践》AliSQL云上最佳实践 电子版下载地址: https://developer.aliyun.com/ebook/1732 电子书: </div>
文章
AliSQL
2022-12-24
1 2 3 4 5 6 7 8 9
...
18
跳转至:
阿里云开发者学堂
130347 人关注 | 7314 讨论 | 12051 内容
+ 订阅
  • 企业运维训练营之云上监控运维最佳实践启动!参营送好礼
  • 可观测Grafana入门训练营,帮助同学们由浅入深的对阿里云Grafana服务拥有全面了解
  • 【开发者7日学】求职达人训练营上线啦~快来打卡赢好礼
查看更多 >
数据库
252947 人关注 | 52318 讨论 | 99273 内容
+ 订阅
  • MySQL的数值型数据类型是干什么的?使用场景是什么?底层原理是什么?
  • MySQL的日期/时间型数据类型是干什么的?使用场景是什么?底层原理是什么?
  • MySQL的字符型数据类型是干什么的?使用场景是什么?底层原理是什么?
查看更多 >
开发与运维
5786 人关注 | 133444 讨论 | 319524 内容
+ 订阅
  • 算法题学习链路简要分析与面向 ChatGPT 编程
  • Linux的IPtables可以阻挡ddos攻击吗?底层原理是什么?
  • Codeup的实用性评价
查看更多 >
云计算
21833 人关注 | 59802 讨论 | 58191 内容
+ 订阅
  • MySQL数据库的劣势是什么?
  • 阿里云GPU服务器学生优惠价格表
  • 阿里云云产品——6大产品家族——数据存储和云计算
查看更多 >
安全
1247 人关注 | 24148 讨论 | 85898 内容
+ 订阅
  • MySQL的字符型数据类型是干什么的?使用场景是什么?底层原理是什么?
  • MySQL的SSL/TLS支持是什么意思?具体如何使用?底层原理是什么?
  • Linux的IPtables可以阻挡ddos攻击吗?底层原理是什么?
查看更多 >