PolarDB for MySQL Serverless弹性测试

本文涉及的产品
云原生数据库 PolarDB 分布式版,标准版 2核8GB
云原生数据库 PolarDB PostgreSQL 版,标准版 2核4GB 50GB
云原生数据库 PolarDB MySQL 版,通用型 2核8GB 50GB
简介: 阿里云数据库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

相关实践学习
【AI破次元壁合照】少年白马醉春风,函数计算一键部署AI绘画平台
本次实验基于阿里云函数计算产品能力开发AI绘画平台,可让您实现“破次元壁”与角色合照,为角色换背景效果,用AI绘图技术绘出属于自己的少年江湖。
从 0 入门函数计算
在函数计算的架构中,开发者只需要编写业务代码,并监控业务运行情况就可以了。这将开发者从繁重的运维工作中解放出来,将精力投入到更有意义的开发任务上。
相关文章
|
4月前
|
关系型数据库 MySQL 分布式数据库
安全可靠的PolarDB V2.0 (兼容MySQL)产品能力及应用场景
PolarDB分布式轻量版采用软件输出方式,能够部署在您的自主环境中。PolarDB分布式轻量版保留并承载了云原生数据库PolarDB分布式版技术团队深厚的内核优化成果,在保持高性能的同时,显著降低成本。
|
2月前
|
Cloud Native 关系型数据库 MySQL
免费体验!高效实现自建 MySQL 数据库平滑迁移至 PolarDB-X
PolarDB-X 是阿里云推出的云原生分布式数据库,支持PB级存储扩展、高并发访问与数据强一致,助力企业实现MySQL平滑迁移。现已开放免费体验,点击即享高效、稳定的数据库升级方案。
免费体验!高效实现自建 MySQL 数据库平滑迁移至 PolarDB-X
|
2月前
|
关系型数据库 MySQL 分布式数据库
阿里云PolarDB云原生数据库收费价格:MySQL和PostgreSQL详细介绍
阿里云PolarDB兼容MySQL、PostgreSQL及Oracle语法,支持集中式与分布式架构。标准版2核4G年费1116元起,企业版最高性能达4核16G,支持HTAP与多级高可用,广泛应用于金融、政务、互联网等领域,TCO成本降低50%。
|
5月前
|
关系型数据库 MySQL 分布式数据库
Super MySQL|揭秘PolarDB全异步执行架构,高并发场景性能利器
阿里云瑶池旗下的云原生数据库PolarDB MySQL版设计了基于协程的全异步执行架构,实现鉴权、事务提交、锁等待等核心逻辑的异步化执行,这是业界首个真正意义上实现全异步执行架构的MySQL数据库产品,显著提升了PolarDB MySQL的高并发处理能力,其中通用写入性能提升超过70%,长尾延迟降低60%以上。
|
7月前
|
SQL 缓存 关系型数据库
使用温InnoDB缓冲池启动MySQL测试
使用温InnoDB缓冲池启动MySQL测试
124 0
|
7月前
|
SQL 缓存 关系型数据库
MySQL8.4 Enterprise安装Firewall及测试
MySQL8.4 Enterprise安装Firewall及测试
168 0
|
7月前
|
安全 关系型数据库 MySQL
MySQL8使用物理文件恢复MyISAM表测试
MySQL8使用物理文件恢复MyISAM表测试
107 0
|
8月前
|
Oracle 关系型数据库 MySQL
使用崖山YMP 迁移 Oracle/MySQL 至YashanDB 23.2 验证测试
这篇文章是作者尚雷关于使用崖山YMP迁移Oracle/MySQL至YashanDB 23.2的验证测试分享。介绍了YMP的产品信息,包括架构、版本支持等,还详细阐述了外置库部署、YMP部署、访问YMP、数据源管理、任务管理(创建任务、迁移配置、离线迁移、校验初始化、一致性校验)及MySQL迁移的全过程。
|
8月前
|
关系型数据库 测试技术 分布式数据库
刷新世界纪录!阿里云PolarDB凭借创新的「三层解耦」架构刷新TPC-C基准测试世界纪录
刷新世界纪录!阿里云PolarDB凭借创新的「三层解耦」架构刷新TPC-C基准测试世界纪录
|
9月前
|
人工智能 关系型数据库 分布式数据库
100%兼容MySQL!手把手教你基于PolarDB搭建RAG系统
100%兼容MySQL!手把手教你基于PolarDB搭建RAG系统
478 0

热门文章

最新文章

相关产品

  • 云原生数据库 PolarDB
  • 推荐镜像

    更多
    下一篇
    开通oss服务