PolarDB for MySQL Serverless弹性测试

本文涉及的产品
PolarDB Agent Flow,2核4GB
PolarSearch,搜索节点 4核8GB
云数据库 PolarDB MySQL 版,列存表分析加速 4核8GB
简介: 阿里云数据库PolarDB for MySQL Serverless数据库能够使得数据库集群资源随客户业务负载动态弹降,通过引入严格强一致集群(SCC)和热备无感秒切等技术,可以实现全场景下的应用无损。

PolarDB for MySQL Serverless弹性测试

1.  创建实验资源

开始实验之前,您需要先创建实验相关资源。

  1. 在实验室页面,单击创建资源
  2. (可选)在实验室页面左侧导航栏中,单击云产品资源列表,可查看本次实验资源相关信息(例如IP地址、用户信息等)。

说明:资源创建过程需要3~5分钟。

2.  集群参数配置介绍

PolarDB for MySQL Serverless支持开启严格强一致性集群SCC(Strict Consistency Cluster)服务和事务续传功能。开通方法为:

  • 开启SCC(Strict Consistency Cluster)的服务功能(工单申请)。
  • 开启事务续传:loose_innodb_trx_resume=ON (集群控制台>>配置与管理--参数配置)。

严格强一致性集群SCC(Strict Consistency Cluster):SCC功能为PolarDB for MySQL Serverless提供了跨节点无损读扩展的能力。

PolarTrans事务系统利用提交时间戳技术CTS和RDMA网络,在内核层面提供集群强一致性读SCC服务,在不损失性能的基础上,保证发往集群任意副本的读请求都可以获得强一致性的结果。

事务续传:事务续传功能为PolarDB for MySQL Serverless提供了无损跨机迁移的能力。        

在常规的主备切换或热升级场景下,会产生连接闪断、新建连接短暂失败以及存量事务回滚等问题。PolarDB的事务续传特性结合PolarProxy代理的连接保持功能,可以实现对应用程序完全无感的高可用切换。

说明:本实验中测试集群已经开启以上服务,您无需手动操作。

3.  设置Serverless弹性策略

  1. 本步骤指导您如何设置Serverless弹性策略。
  2. 双击打开远程桌面的Chromium网页浏览器
  3. 在RAM用户登录框中单击下一步,并复制粘贴页面左上角的子用户密码用户密码输入框,单击登录
  4. 复制下方地址,在Chromium网页浏览器打开新页签,粘贴并访问云数据库PolarDB控制台。
https://polardb.console.aliyun.com/
  1. 集群列表页面顶部菜单栏中,切换资源所在地域。

说明:您可在云产品资源列表中查看PolarDB资源所在的地域。

 

  1. 集群列表页面,找到您的PolarDB实例,单击实例ID

说明:您可在云产品资源列表中查看实验室分配的PolarDB实例ID。

  1. 基本信息页面的数据库节点区域中,单击右上角的Serverless

  1. 设置Serverless配置参数对话框中,参考如下说明配置参数,单击确定

参数说明:

  • 单节点资源弹性上限为:8 PCU。
  • 单节点资源弹性下限为:1 PCU。
  • RO节点个数扩展上限:0 (禁止自动添加只读节点)。
  • RO节点个数扩展下限:0。
  • 是否开启无活动暂停:关闭。

 

说明:PCU(PolarDB Capacity Unit):1个PCU的性能约等于1核2GB规格PolarDB计算节点性能。

4.  主节点Serverless弹性压测

通过sysbench脚本访问PolarDB for MySQL Serverless集群地址进行压测,PolarDB主节点的规格能够根据负载进行自动伸缩与自动配置,达到Serverless的能力。

说明:

  • Sysbench是一款开源的多线程性能测试工具,可以执行数据库只读、只写、读写混合等类型的性能测试。
  • 本步骤样例使用读写混合的压测类型(oltp_read_write),并发数为32线程。
  1. 在实验室页面右侧功能栏中,单击 图标,切换至Web Terminal。
  2. 执行如下命令,初始化相关数据。

说明:执行命令前,您需要将mysql-host参数修改为您的PolarDB实例的集群私网地址。您可在云产品资源列表中查看到PolarDB实例的集群私网地址。

sysbench /usr/share/sysbench/oltp_read_write.lua --mysql-host=xxxx.rwlb.cn-chengdu.rds.aliyuncs.com --mysql-port=3306 --mysql-user=test_user --mysql-password=Password123 --mysql-db=mytest --tables=32 --table-size=100000 --report-interval=1 --range_selects=1 --db-ps-mode=disable --time=12000 --mysql-ignore-errors=all --skip-trx=on --rand-type=uniform --threads=32 prepare

  1. 执行如下命令,开始进行压测。

说明:执行命令前,您需要将mysql-host参数修改为您的PolarDB实例的集群私网地址。您可在云产品资源列表中查看到PolarDB实例的集群私网地址。

sysbench /usr/share/sysbench/oltp_read_write.lua --mysql-host=xxxx.rwlb.cn-chengdu.rds.aliyuncs.com --mysql-port=3306 --mysql-user=test_user --mysql-password=Password123 --mysql-db=mytest --tables=32 --table-size=100000 --report-interval=1 --range_selects=1 --db-ps-mode=disable  --time=12000 --mysql-ignore-errors=all --skip-trx=on --rand-type=uniform --threads=32 run

返回如下结果,根据sysbench输出可以直接观察到,随着TPS持续上升,但延迟LAT)在非常快的时间内段出现下降,这说明PolarDB for MySQL Serverless处理能力存在提升。

  1. 在实验室页面右侧功能栏中,单击 图标,切换至远程桌面。
  2. 在左侧导航栏中,选择性能监控

 

  1. 集群页签,单击计算节点

  1. 计算节点页签,查看主节点负载情况。您可以看到随着主节点PCU CPU使用率的不断提升,PCU数量弹升到最大上限8个。

  1. 压测持续3分钟后,我们切换至Web Terminal中执行Ctrl+C,停止压测脚本。同时切换至远程桌面中,查看到主节点PCU CPU使用率开始下降,PCU数量随后也逐步自动减少。

5.  只读节点Serverless弹性压测

PolarDB  for MySQL  Serverless集群除了支持主节点自动弹性伸缩之外,还支持创建只读节点分摊主节点的读请求。借助数据库代理PolarProxy和读写分离技术,PolarDB  for MySQL  Serverless可以在集群维度提供更高的性能,基于不同的读负载会智能地调整只读节点的个数和各自的规格,来达到最佳的Serverless能力。

  1. 读写混合压测。

我们继续使用sysbench工具模拟真实使用场景流量,PolarDB for MySQL Serverless集群主节点PCU扩容到弹升上限后,会自动创建新的只读节点并分摊一部分主节点的读负载。最终使整个集群能够支撑更高的TPS请求量。

1.1 在左侧导航栏,单击基本信息

 

1.2 在基本信息页面的数据库节点区域中,单击右上角的Serverless

1.3 在设置Serverless配置参数对话框中,将RO节点个数扩展上限0调整为2RO节点个数扩展下限0调整为2,单击确定

 

1.4 在实验室页面右侧功能栏中,单击 图标,切换至Web Terminal。

1.5 执行如下命令,通过sysbench脚本通过访问PolarDB for MySQL Serverless集群私网地址发起32并发压测请求,模拟脚本包含read/write事务。

说明:执行命令前,您需要将mysql-host参数修改为您的PolarDB实例的集群私网地址。您可在云产品资源列表中查看到PolarDB实例的集群私网地址。

sysbench /usr/share/sysbench/oltp_read_write.lua --mysql-host=xxxxxx.rwlb.cn-chengdu.rds.aliyuncs.com --mysql-port=3306 --mysql-user=test_user --mysql-password=Password123 --mysql-db=mytest --tables=32 --table-size=100000 --report-interval=1 --range_selects=1 --db-ps-mode=disable  --time=12000 --mysql-ignore-errors=all --skip-trx=on --rand-type=uniform --threads=32 run

1.6 在实验室页面右侧功能栏中,单击 图标,切换至远程桌面。

1.7 在左侧导航栏中,选择性能监控

1.8 在集群页签,单击计算节点

1.9 在计算节点页签,选择查看主节点(RW)负载。

1.20 在读写混合场景下写流量会被转发到主节点(RW),读流量会被均匀地打散在主节点(RW)和只读节点(RO)中。

1.21 从监控视图可见,主节点(RW)PCU已达到设置的上限(8 PCU),但只读节点(RO)PCU消耗未达到上限,因此压测期间只自动增加了一个只读节点(RO)。

  • 主节点监控。

  • 只读节点(RO)监控。

计算节点页签,选择查看只读节点负载。

1.22 我们切换至Web Terminal中执行Ctrl+C,停止压测脚本后,再切换至远程桌面,查看到主节点(RW) PCU CPU使用率开始下降,PCU数量随之自动回落。

  1. 只读并发压测。

进一步加大只读场景的压测请求,可以观察到PolarDB for MySQL Serverless会继续创建更多的只读节点(RO),同时当前的只读节点(RO)也会自动扩容,以服务更多的读请求。

在停止sysbench脚本后,PolarDB for MySQL Serverless的所有节点都会自动缩容。整个集群的节点数量和规格都能够根据负载进行自动伸缩与自动配置,来达到Serverless的能力。

2.1 在实验室页面右侧功能栏中,单击 图标,切换至Web Terminal。

2.2 执行如下命令,通过sysbench脚本通过访问PolarDB for MySQL Serverless 集群地址发起64并发的只读请求。

说明:执行命令前,您需要将mysql-host参数修改为您的PolarDB实例的集群私网地址。您可在云产品资源列表中查看到PolarDB实例的集群私网地址。

sysbench /usr/share/sysbench/oltp_read_only.lua --mysql-host=xxxxxx.rwlb.cn-chengdu.rds.aliyuncs.com --mysql-port=3306 --mysql-user=test_user --mysql-password=Password123 --mysql-db=mytest --tables=32 --table-size=100000 --report-interval=1 --range_selects=1 --db-ps-mode=disable --time=12000 --mysql-ignore-errors=all --skip-trx=on --rand-type=uniform --threads=64 run

2.3 在实验室页面右侧功能栏中,单击图标,切换至远程桌面。

2.4 在左侧导航栏中,选择性能监控

 

2.5 在集群页签,单击计算节点

2.6 在只读流量测试场景下,当PolarDB for MySQL Serverless集群一主一读节点依然无法满足负载需求的情况下(PCU均已达到8个上限),会自动增加节点(最多2个只读节点)。

  • 主节点PCU数量及CPU使用率。

计算节点页签,选择查看主节点负载。

  • 当只读主节(1)PCU数量达到上限后,CPU使用率依然较高,自动触发增加节点

  • 只读主节(2)为满足负载PCU自动弹至上限,PCU CPU使用率接近80% 。

2.7 我们切换至Web Terminal中执行Ctrl+C,停止压测脚本后,再切换至远程桌面,主节点(RW)及只读节点(RO) 的PCU CPU使用率开始下降。随着集群CPU使用率持续下降,节点PCU数量、节点数量可以逐步收缩。

实验链接:https://developer.aliyun.com/adc/scenario/f84a704924a841d692118d8fc24c4b83

相关实践学习
【玩转ComfyUI】基于函数计算一键部署AI生图平台ComfyUI
本次实验将带大家通过使用阿里云产品函数计算FC,快速使用ComfyUI实现更高质量的图像生成。
从 0 入门函数计算
在函数计算的架构中,开发者只需要编写业务代码,并监控业务运行情况就可以了。这将开发者从繁重的运维工作中解放出来,将精力投入到更有意义的开发任务上。
相关文章
|
11月前
|
关系型数据库 MySQL 分布式数据库
安全可靠的PolarDB V2.0 (兼容MySQL)产品能力及应用场景
PolarDB分布式轻量版采用软件输出方式,能够部署在您的自主环境中。PolarDB分布式轻量版保留并承载了云原生数据库PolarDB分布式版技术团队深厚的内核优化成果,在保持高性能的同时,显著降低成本。
785 140
|
9月前
|
Cloud Native 关系型数据库 MySQL
免费体验!高效实现自建 MySQL 数据库平滑迁移至 PolarDB-X
PolarDB-X 是阿里云推出的云原生分布式数据库,支持PB级存储扩展、高并发访问与数据强一致,助力企业实现MySQL平滑迁移。现已开放免费体验,点击即享高效、稳定的数据库升级方案。
免费体验!高效实现自建 MySQL 数据库平滑迁移至 PolarDB-X
|
9月前
|
关系型数据库 MySQL 分布式数据库
阿里云PolarDB云原生数据库收费价格:MySQL和PostgreSQL详细介绍
阿里云PolarDB兼容MySQL、PostgreSQL及Oracle语法,支持集中式与分布式架构。标准版2核4G年费1116元起,企业版最高性能达4核16G,支持HTAP与多级高可用,广泛应用于金融、政务、互联网等领域,TCO成本降低50%。
|
12月前
|
关系型数据库 MySQL 分布式数据库
Super MySQL|揭秘PolarDB全异步执行架构,高并发场景性能利器
阿里云瑶池旗下的云原生数据库PolarDB MySQL版设计了基于协程的全异步执行架构,实现鉴权、事务提交、锁等待等核心逻辑的异步化执行,这是业界首个真正意义上实现全异步执行架构的MySQL数据库产品,显著提升了PolarDB MySQL的高并发处理能力,其中通用写入性能提升超过70%,长尾延迟降低60%以上。
|
人工智能 关系型数据库 分布式数据库
100%兼容MySQL!手把手教你基于PolarDB搭建RAG系统
100%兼容MySQL!手把手教你基于PolarDB搭建RAG系统
856 0
|
SQL JSON 关系型数据库
MySQL是一个广泛使用的开源关系型数据库管理系统,它有许多不同的版本
【10月更文挑战第3天】MySQL是一个广泛使用的开源关系型数据库管理系统,它有许多不同的版本
778 5
|
关系型数据库 Unix MySQL
MySQL是一种关系型数据库管理系统
MySQL是一种关系型数据库管理系统
341 2
|
安全 关系型数据库 MySQL
揭秘:如何在无影的Serverless世界中,悄无声息地操控MySQL数据库!
【8月更文挑战第8天】在云计算领域,Serverless 枟能凭借其高效与弹性特性脱颖而出。本文采用问答形式解析函数计算环境中 MySQL 数据库的安全高效访问方法。介绍了如何利用数据库插件或 SDK 连接 MySQL,并提供了一个使用 Python 和 `pymysql` 在阿里云函数计算中连接 MySQL 的示例代码片段。同时强调了通过环境变量或密钥管理服务安全处理数据库凭证的重要性。随着 Serverless 技术的发展,数据库操作将更加简便。
372 7
|
关系型数据库 MySQL 分布式数据库
PolarDB 并行查询问题之保证与MySQL的兼容性如何解决
PolarDB 并行查询问题之保证与MySQL的兼容性如何解决
215 1
|
关系型数据库 MySQL 数据库
mysql关系型数据库的学习
mysql关系型数据库的学习
216 0

热门文章

最新文章

相关产品

  • 云原生数据库 PolarDB