RDS MySQL大促场景下的智能化弹性
1. 选择实验资源
在实验开始前,请您选择其中一种实验资源,单击确认开启实验。
说明:
如果您选择的是开通免费试用,下方卡片会展示本实验支持的试用规格,可以选择你要试用的云产品资源进行开通。您在实验过程中,可以随时用右下角icon唤起试用卡片。
说明:
阿里云支持试用的产品列表、权益及具体规则说明请参考开发者试用中心。
2. 创建资源
如果您已创建云服务器ECS、云数据库RDS,请您选择个人账户资源,并跳过本小节,直接进行实验操作即可。
如果您已创建云服务器ECS、云数据库RDS,请您选择个人账户资源,并跳过本小节,直接进行实验操作即可。
本步骤仅作为参考使用,您可以根据需求自行选择配置。
如果您选择的是开通免费试用,参考以下步骤云服务器ECS、云数据库RDS。
在本实验页面下方卡片会展示本实验支持的试用规格,依次选择一个试用规格,单击立即试用。
在云服务器ECS试用开通页面,根据页面引导进行开通云服务器ECS,其中操作系统选择CentOS 7.8 64位,地域需要与云数据库RDS MySQL Serverless在同一地域下,其他配置根据您的需求自行选择即可。在云数据库RDS MySQL Serverless试用开通页面,根据页面引导进行开通云数据库RDS MySQL Serverless,其中数据库类型选择MySQL,数据库版本号选择5.7,地域需要与云服务器ECS在同一地域下,其他配置根据您的需求自行选择即可。
如果您选择的是个人账户资源,参考以下步骤云服务器ECS、云数据库RDS和数据传输服务DTS。
创建云服务器ECS。
,在概览页面的我的资源区域,单击创建实例。云服务器ECS控制台前往在云服务器ECS购买页面,根据页面引导进行开通云服务器ECS,其中操作系统选择CentOS 7.8 64位,地域需要与云数据库RDS MySQL Serverless在同一地域下,其他配置根据您的需求自行选择即可。
创建云数据库RDS MySQL Serverless。
。云数据库RDS创建页面前往在云数据库RDS创建页面,根据页面引导进行开通云数据库RDS MySQL Serverless,其中数据库类型选择MySQL,数据库版本号选择5.7,地域需要与云服务器ECS在同一地域下,其他配置根据您的需求自行选择即可。
3. 安装压测工具,准备模拟数据
您需要在ECS上安装压测工具,并准备模拟数据。本案例以8 vCPU 16 GiB规格的ECS实例为例。
1. 登录ECS。
1)登录ECS控制台,左侧菜单选择实例,点击开通的实例ID名称。
2)单击远程连接。
3)可选择Workbench远程连接方式,单击立即登录。
在ECS上执行如下命令,完成压测工具SysBench的安装。
安装Sysbench。
yum install sysbench
执行如下命令配置SysBench Client,使内核可以使用所有的CPU处理数据包(默认设置为使用2个CPU),同时减少CPU之间的上下文切换。
sudo sh -c 'for x in /sys/class/net/eth0/queues/rx-*; do echo f>$x/rps_cpus; done' sudo sh -c 'echo 32768 > /proc/sys/net/core/rps_sock_flow_entries' sudo sh -c 'echo 4096 > /sys/class/net/eth0/queues/rx-0/rps_flow_cnt'
说明:ff表示使用8个CPU(1个f表示4个CPU)。请根据实际配置修改,例如本案例中ECS为4核CPU,因此输入f。
,在RDS MySQL中创建一个名为dbfortest的空数据库。RDS 控制台
在ECS中,执行如下命令,准备压测数据。
sysbench --db-driver=mysql --mysql-host=xxx --mysql-port=xxx --mysql-user=xxx --mysql-password=****** --mysql-db=dbfortest --table_size=10000 --tables=250 --report-interval=1 --events=0 oltp_read_write prepare
涉及到的参数说明如下:
参数 |
说明 |
mysql-user |
RDS MySQL实例账号。该账号需关联dbfortest数据库。 |
mysql-password |
RDS MySQL实例账号对应的密码。 |
mysql-host |
RDS MySQL实例连接地址。 可进入实例的数据库连接页面获取(申请外网)。 |
mysql-port |
RDS MySQL实例连接端口。 可进入实例的数据库连接页面获取。 |
该命令会自动在RDS MySQL预先创建的dbfortest数据库中创建N个名为sbtest1、sbtest2……sbtestN的表(N为tables参数指定的表数量),其表结构如下,供您了解:
CREATE TABLE `sbtestN` ( `id` int(11) NOT NULL AUTO_INCREMENT, `k` int(11) NOT NULL DEFAULT '0', `c` char(120) NOT NULL DEFAULT '', `pad` char(60) NOT NULL DEFAULT '', PRIMARY KEY (`id`), KEY `k_100` (`k`) ) ENGINE=InnoDB AUTO_INCREMENT=25001 DEFAULT CHARSET=utf8
4. 开启自动性能扩展
您可为RDS MySQL实例开启自动性能扩展功能,实现资源智能化的扩容和缩容。
说明:
为了防止智能化自动扩缩失败,生产中请在账户中留有一定余额。RDS自动扩展期间会有5-30s闪断。为了安全起见,自动扩展后,需要自主进行回缩操作(可在设置自动扩展时,同步设置消息订阅通知),自动回缩功能即将上线。
,点击实例ID进入实例详情页。RDS 控制台登录在左侧导航栏中,单击自治服务>性能趋势。单击右侧自治功能开关。在自治中心开关对话框中,将自动性能扩展设置成开启状态,并配置其他参数,设置智能资源扩缩监控条件。
5. 模拟压测
本步骤需要在ECS控制台中,登录ECS实例,运行相关命令,使用压测工具SysBench模拟流量注入。
执行如下命令,运行压测程序。
sysbench --db-driver=mysql --mysql-host=xxx --mysql-port=3306 --mysql-user=xxx --mysql-password=****** --mysql-db=dbfortest --table_size=10000 --tables=250 --events=0 --time=3600 --threads=64 --percentile=95 --report-interval=1 --db-ps-mode=disable oltp_read_write run
需要设置的参数说明如下:
参数 |
说明 |
mysql-host |
RDS MySQL实例连接地址。可进入实例的数据库连接页面获取。 |
mysql-port |
RDS MySQL实例连接端口。可进入实例的数据库连接页面获取。 |
mysql-user |
RDS MySQL实例账号,该账号需关联dbfortest数据库。 |
mysql-password |
RDS MySQL实例账号对应的密码。 |
进入RDS MySQL实例的监控与报警页面,观察资源使用情况,等待触发条件达成。
6. 查看智能化弹性效果
本步骤需要在RDS 控制台中评估RDS MySQL的弹性效果。
前往 一键诊断 > 自治中心,勾选弹性伸缩事件,开启自动刷新。观察近1小时的CPU变化以及是否有弹性伸缩事件发生。RDS 控制台登录
查看事件具体内容,关注如下四个结果:
原规格推荐规格执行状态相关信息
打开实例基本信息页,查看实例规格升级结果。
至此,您通过RDS MySQL以及DAS的数据库产品组合,已经实现了数据库的弹性智能化,可以帮助您更好的应对高并发、高负载下的潮汐,以及实现IT资源成本最优利用率。
实验链接:https://developer.aliyun.com/adc/scenario/a321d319732c4432a676007ea3ff06f3