最佳实践 > 使用rds代理和只读解决负载过高的问题
使用rds代理和只读解决负载过高的问题
  • 概览
  • 需求场景
  • 方案概述
  • 案例演示
  • 问题现象
  • 原因分析
  • 奇异果体育app竞彩官网下载的解决方案
  • 优化效果
  • 注意事项
  • 相关产品

使用rds代理和只读解决负载过高的问题-奇异果体育app竞彩官网下载

更新时间:

概览

在数据库的使用过程中,随着流量的不断增长,需要对rds实例进行扩容以满足高并发的性能要求,扩容方案一般情况下分为如下两类:

  • 纵向扩展(scale-up)方案:升级rds实例的套餐规格,通过增加cpu和内存的配置,提升数据库性能

  • 横向扩展(scale-out)方案:借助mysql主从同步特性,通过增加rds只读实例,构建一主多从的数据库架构,进而提升rds的性能和容量。

本文重点讲述横向扩展方案的最佳实践。

需求场景

如何如下特征的数据库适合采用横向扩展方案——

  • 当前rds实例流量较大,实例负载较高,mysql慢日志中存在大量的只读sql请求
  • sql读写比较高:读sql占比越高,横向扩展方案的效果越好
  • sql存在olap类型的查询(如统计查询、bi分析查询、批量查询):基于流量隔离思路,把长耗时的sql单独访问只读实例,避免影响正常的实时流量
  • 预计未来数据库读sql请求量会快速增长

方案概述

  • 第一步:创建只读实例:创建只读实例前需要先创建好标准实例,进入标准实例控制台即可选择创建只读实例
  • 第二步:创建代理实例:创建代理实例前需要先创建好标准实例,进入标准实例控制台即可选择创建代理实例,每个rds标准实例仅能创建一个代理实例(代理实例的节点数可按需扩展)
  • 第三步:创建代理实例专有账号:连接到云数据库rds代理实例,需使用代理实例专有账号、密码;创建代理实例专有账号的同时,将自动将该账号同步到主实例
  • 第四步:将代理实例的ip/域名、端口、账号、密码配置到应用程序代码中
  • 第五步:在代理实例中设置承担读流量和读流量权重

【参考资料】只读实例和代理实例操作指南

案例演示

问题现象

某客户rds实例,由于业务增长过快,rds实例读写流量增长迅速,导致rds实例负载较高,cpu使用率达到85%以上:

原因分析

客户工单联系百度云售后奇异果体育app竞彩官网下载的技术支持介入解决,经过仔细分析,发现数据库实例存在如下特征:

  • 读写比例5:1
  • 读sql消耗了大量的主实例资源
  • 后续预计流量还会持续增长,读写比保持5:1

奇异果体育app竞彩官网下载的解决方案

建议客户采用横向扩展(scale-out)方案,添加代理实例实现流量调度和读写分离,添加只读实例承载读sql请求,扩容后的架构如下图示:

优化效果

  • 代理实例对流量分流,主实例负载得到缓解,cpu占用率降低到了21%,降低到原来的1/4

注意事项

  • 建议客户预估流量上涨趋势,提前创建代理实例和只读实例,并更改程序配置信息使用代理实例
  • 写入并发导致负载较高建议升级配置或者使用drds产品
  • 代理实例使用存在一定限制条件,请参考:代理实例使用限制

相关产品

云数据库 scs:兼容 redis、memcached 协议的分布式缓存服务

云数据库 docdb for mongodb:兼容 mongodb 协议的文档数据库服务

网站地图