云数据库智能化弹性助力电商业务降本增效
1. 添加只读实例,扩展查询能力
添加只读实例,扩展查询能力
本步骤需要在RDS 控制台页面中,为RDS实例添加只读节点。
登录RDS控制台,找到需要添加只读节点的主实例,点击实例ID进入实例详情。
在实例的基本信息页,单击只读实例数量旁的添加或添加只读实例按钮。
开通只读实例,实例配置如下。
计费方式:可选包年包月或按量付费。若您仅为体验该操作,建议选择按量付费。
可用区:默认为主实例所在的地域,选择默认可用区即可。
按需配置CPU与内存资源,存储空间必须大于或者等于原实例空间。
说明:只读实例也为高可用架构,采用主备方式实例网络配置。
选择网络类型、VPC、节点交换机。
勾选服务协议,开通只读实例。
2. 开启主实例读写分离
开启主实例读写分离
本步骤需要在RDS 控制台页面中,通过数据库代理完成无需业务改造的RDS MySQL读写分离能力。
进入RDS MySQL主实例的实例信息详情页。
在数据库代理 > 代理终端(原读写分离)页签下,单击设置代理终端。
在弹窗中设置相关参数。
读写属性:读写:自动将写请求路由到主节点,读请求到只读节点。
只读:不接受任何写请求,只能对读请求进行路由。
配置完成后,在数据库代理页面查看当前查询请求负载均衡拓扑图。
在数据库代理页面查看用于连接应用的数据库代理的地址。
3. 开启DAS自治服务和自动性能扩展
开启DAS自治服务和自动性能扩展
您需要购买DAS专业版,并将RDS MySQL实例添加至DAS专业版服务中。之后,您可为该RDS MySQL实例开启自动性能扩展功能,实现资源智能化的扩容和缩容。
说明:
为了防止智能化自动扩缩失败,生产中请在账户中留有一定余额。
RDS自动扩展期间会有5-30s闪断。
为了安全起见,自动扩展后,需要自主进行回缩操作(可在设置自动扩展时,同步设置消息订阅通知),自动回缩功能即将上线。
,根据界面提示选择对应参数,购买DAS专业版。DAS专业版购买页面登录
左侧导航栏,选择DAS专业版管理,单击页面右上角新增实例。DAS控制台在
在选择实例的搜索框里输入需要使用DAS专业版管理的RDS实例ID,勾选已查询出来的实例,添加至右侧区域。
单击确定后页面会提示新增成功,可到已使用实例列表页面查看。
,点击实例ID进入实例详情页。RDS 控制台登录
在左侧导航栏中,单击自治服务>性能趋势。
单击右侧自治功能开关。
在自治中心开关对话框中,将自动性能扩展设置成开启状态,并配置其他参数,设置智能资源扩缩监控条件。
4. 业务连接指向代理地址
在业务的应用系统中,配置数据库连接配置,将连接地址替换为步骤二中获得的数据库代理地址。无需业务改造,阿里云自动完成数据库请求的读写分离。
5. 模拟压测
模拟压测
本步骤需要在ECS控制台中,登录ECS实例,安装压测工具SysBench,并使用该工具模拟流量注入。
开通ECS服务器,要求配置如下:
操作系统镜像为CentOS。版本建议7.x。
其余配置不影响本次体验,选择默认即可。
将ECS的IP地址添加至RDS MySQL的白名单中。
登录ECS。
1) 登录ECS控制台,选择实例,点击开通的实例ID名称。
2) 单击远程连接。
3) 可选择Workbench远程连接方式,单击立即登录。
在ECS上执行如下命令,安装压测工具SysBench。
1) 执行如下命令下载SysBench。
yum install gcc gcc-c++ autoconf automake make libtool bzr mysql-devel git mysql git clone https://github.com/akopytov/sysbench.git
2) 进入SysBench目录。
cd sysbench
3) 切换到SysBench 1.0.18版本。
git checkout 1.0.18
4) 运行autogen.sh。
./autogen.sh
5) 编译。
./configure --prefix=/usr --mandir=/usr/share/man make make install
执行如下命令准备压测数据。
说明:请事先在RDS MySQL中创建一个名为dbfortest的数据库。
sysbench --db-driver=mysql --mysql-host=XXX --mysql-port=XXX --mysql-user=XXX --mysql-password=XXX --mysql-db=dbfortest --table_size=25000 --tables=250 --events=0 --time=600 oltp_read_write prepare
需要设置的参数说明如下:
参数 |
说明 |
mysql-host |
RDS MySQL实例连接地址。可进入实例的数据库连接页面获取。 |
mysql-port |
RDS MySQL实例连接端口。可进入实例的数据库连接页面获取。 |
mysql-user |
RDS MySQL实例账号。 |
mysql-password |
RDS MySQL实例账号对应的密码。 |
mysql-db |
压测数据要注入的数据库名称,本示例中即为RDS MySQL中预先创建的dbfortest数据库。 |
table_size |
要准备的表的大小,可按照示例代码中的25000进行设置。 |
tables |
要准备的表的数量,可按照示例代码中的250进行设置。 |
events |
测试请求数量,按照示例代码中的0进行设置。 |
time |
测试时间,可按照示例代码中的600进行设置。 |
该命令会自动创建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
执行如下命令,运行压测程序。
sysbench --db-driver=mysql --mysql-host=XXX --mysql-port=XXX --mysql-user=XXX --mysql-password=XXX --mysql-db=dbfortest --table_size=25000 --tables=250 --events=0 --time=600 --threads=XXX --percentile=95 --report-interval=1 oltp_read_write run
需要设置的参数说明如下:
参数 |
说明 |
mysql-host |
RDS MySQL实例连接地址。可进入实例的数据库连接页面获取。 |
mysql-port |
RDS MySQL实例连接端口。可进入实例的数据库连接页面获取。 |
mysql-user |
RDS MySQL实例账号。 |
mysql-password |
RDS MySQL实例账号对应的密码。 |
threads |
测试线程数。可设置为32、64、128、256、512等,可根据实际的实例规格和环境时延进行尝试。 |
进入RDS MySQL实例的监控与报警页面,观察资源使用情况,等待触发条件达成。
6. 智能化弹性效果评估
智能化弹性效果评估
本步骤需要在RDS 控制台和DAS控制台中评估RDS MySQL的弹性效果。
,打开实例基本信息页,查看实例规格升级结果。RDS 控制台登录
查看弹性动作消息通知。
1) 登录DAS控制台,在左侧导航栏中,单击实例监控。
2) 选择对应数据库实例。
3) 在左侧导航栏中,单击自治中心。
4) 选择类型为弹性伸缩事件。
5) 查看事件具体内容,关注如下四个结果:
原规格
推荐规格
执行状态
相关信息
至此,您通过RDS MySQL以及DAS的数据库产品组合,已经实现了数据库的弹性智能化,可以帮助您更好的应对高并发、高负载下的潮汐,以及实现IT资源成本最优利用率。
实验链接:https://developer.aliyun.com/adc/scenario/228c72f5aaca41099f82ab1e7cd2b6dd