开发者学堂课程【RDS MySQL 高效设计及性能调优 :RDS MySQL 高效设计及性能调优(二)】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/1209/detail/18176
RDS MySQL 高效设计及性能调优
三、 RDS MySQL 产品系列
RDS MySQL 产品系列目前有三个版本:
1. 基础版:基础版是单节点实例;采用的是计算与存储分离的架构,性价比超高,更适合于个人的学习或者微型的网站或者中小型企业的开发测试环境。
2. 高可用版:采用的是一主一备的经典高可用架构,试用于80%的用户场景,像大中型的生产数据库,互联网、物联网等这些行业的数据库。
3. 三节点企业版:采用的是一主两备的三节点架构,通过多副本的同步复制,确保数据的强一致性,提供金融级的可靠性。对数据安全性要求非常高的金融、证券、保险行业的核心数据或者各大行业企业的核心生产数据,可以使用三节点企业版。
四、 RDS MySQL 参数模板
参数模板主要是基于数据安全性和写入性能。
首先了解一下参数的设置。事务提交的刷盘规则:当设置唯一=1的时候,事务提交时,每个事务的日志从缓冲区写到日志的是立刻进行写的,只要有事务完成了,它就会立刻写盘;=2的时候,是随着的操作系统后台每秒进行刷新一次的。在这种场景下,当系统出现崩溃时可能会丢失最后一秒的日志。这两个参数值相比较,=1其实是数据更安全的参数设置。再来看一下 binlog 的刷盘规则,这里它设置的是=n,即可以根据自己的需求,多少次写可以刷一次磁盘,当设置=1的时候是最安全的,就是每一次写入到 binlog ,它都会进行一次刷盘,可以做到及时刷盘。当设置为=10或者=100,它是经过了100次的写操作刷新一次磁盘,这种就是有可能还没有来得及去刷盘的时候,出现系统崩溃,也会存在丢失了日志。
复制模式有半同步复制和异步复制。半同步复制,相对于异步复制多了要将主实例执行完成后的日志同步传输到被实例,被实例收到日志,这个事务才算提交成功。但是异步没有这个动作,只要在主示例执行完成提交之后,这个事务就应当完成了,不需要备库任何的反馈。当半同步数据如果出现了异常的情况下,备实例不可用,传输到备库时备库肯定是没有反馈的,这种场景下超过一定时长,会退化成异步复制。
介绍完三个参数设置之后,来看一下的参数模板:默认的参数是半同步复制加两个都设置为1,即数据安全性最高的参数配置。当使用默认的话,数据的安全性是最高的,但是写入性能相对会较慢一些。异步复制的参数模板,可以在控制台上进行调整,可以根据需求改为异步复制。然后参数设置值也还是保持数据安全性较高的参数配置,这种场景的写入速度也会较快,因为它相对于默认模板里少了一步去被迫去做日志check,即传到的备库日志,备库日志反馈给主实例已经收到这个东西了。这个步骤相对它显露的性能会更高一些。然后还有高性能参数模板,他的复制模式是异步的,当这两个参数数据保护参数设计的都是不是特别安全的参数值,可能会存在数据丢失,数据安全性会比较一般,但是会提升写入性能,因为它将很多写字刷盘的操作进行批量合并的动作,而不是每次写、每次去做刷盘。
五、 RDS MySQL 的实战场景
RDS MySQL 实战场景在电商、金融网站、游戏、通用大数据等这些场景都是适用的。
在高并发场景,有热点数据的高并发更新性能的优化、也提供了IP的白名单,防 SQL 注入等;金融场景提供企业级的三节点版本,它能够保证数据常一致性,也满足金融级的可靠性要求,同时也提供双机热备、同城、异地三中心部署的架构,充分满足金融级的合规可靠性的要求;像网站这样的高性价比场景,可以做到开箱即用,高性价比的数据库产品,只要创建实例,同时就具备了全套的备份、恢复监控等一系列的运维方案;在游戏行业的高可用场景下,提供了随时闪回到任意时间点的功能,且计算资源是可弹性伸缩的。主备双节点架构搭配了高安全链路,实现全自动的无感知容灾的切换,然后稳定性也会较好;通用大数据的计算, MySQL 作为在线的数据库存储服务,可以搭配 ADB 、 MapReduce 等这些产品,满足我们日常的日志分析、数据仓库、商业智能等业务,借助于 DTS 或者 Binlog dump 可以订阅 Binlog 的获取我们更新的日志等。