我们已经准备好了,你呢?

2024我们与您携手共赢,为您的企业形象保驾护航!

不同数据量下 MySQL 及 RDS for MySQL 集群故障转移及实例扩容时间测试 byAWS Team | 年8月16日 | | |

1. 测试背景

上一篇博客中我们通过测试总结了MySQL与RDS for MySQL在集群故障转移和只读实例扩容方面的区别,本文我们测试了不同数据量下MySQL与RDS for MySQL的集群故障转移时间和只读实例扩容时间的变化,也可以作为选型的参考。

2. 测试环境

经过测试的服务

MySQL 和 RDS for MySQL

测试区域

孟买地区 (ap-south-1)

测试版本

2.11.2(MySQL 5.7)

RDS for MySQL 5.7.41

测试模型

MySQL 数据库.r5。

RDS 适用于 MySQL db.m5。

部署模式

MySQL 跨可用区部署,一次写入,一次读取

RDS for MySQL 采用多可用区实例部署,一写一读模式

压力测试示例

c5.*1

压力测试软件

()

3. 测试前提条件

此项测试基于以下三个前提:

4.测试架构图 4.1 MySQL测试架构图

rds for mysql_rds for mysql_rds for mysql

4.2 RDS for MySQL测试架构图

rds for mysql_rds for mysql_rds for mysql

5. 测试用例 5.1 集群故障转移时间测试用例 测试基于以下8种配置模式,测试无工作负载和有工作负载两种情况下的集群故障转移时间。

配置模式

MySQL db.r5. 一次写入和一次读取 100GB 数据量

MySQL db.r5. 一次写入和一次读取 500GB 数据量

MySQL db.r5. 一次写入和一次读取 1TB 数据

RDS for MySQL db.m5. 一次写入和一次读取 100GB 数据量

RDS for MySQL db.m5. 一次写入和一次读取 500GB 数据量

RDS for MySQL db.m5。一次写入和一次读取 1TB 数据

*工作负载场景:主节点 80% CPU 工作负载

5.2 只读实例扩容时间测试用例。测试基于以下8种配置模式,测试无工作负载和有工作负载两种情况下的只读实例扩容时间

配置模式

MySQL db.r5. 一次写入和一次读取 100GB 数据量

MySQL db.r5. 一次写入和一次读取 500GB 数据量

MySQL db.r5. 一次写入和一次读取 1TB 数据

RDS for MySQL db.m5. 一次写入和一次读取 100GB 数据量

RDS for MySQL db.m5. 一次写入和一次读取 500GB 数据量

RDS for MySQL db.m5。一次写入和一次读取 1TB 数据

*工作负载场景:主节点上 80% CPU 工作负载

6. 测试方法 6.1 集群故障转移时间测试方法 模拟工作负载的步骤如下: 对于 MySQL,在控制台上,选择目标集群的写入实例,点击下图中的“故障转移”按钮

rds for mysql_rds for mysql_rds for mysql

点击“日志和事件”,在下面的最近事件中检查故障转移的开始和结束时间,以计算故障转移所需的时间。

rds for mysql_rds for mysql_rds for mysql

对于RDS for MySQL,在控制台中,选择目标集群的主实例,单击下图中的“重启”按钮,在下一页中勾选“重启并故障转移”,单击“确定”。

rds for mysql_rds for mysql_rds for mysql

rds for mysql_rds for mysql_rds for mysql

点击“日志和事件”可以在下面的最近事件中查看故障转移的开始和结束时间,并计算故障转移所花费的时间。

rds for mysql_rds for mysql_rds for mysql

6.2 只读实例扩容时间测试方法对于MySQL,在控制台上,选择目标集群,点击下图中的“添加读取器”按钮

rds for mysql_rds for mysql_rds for mysql

使用事件时间作为添加只读实例的开始时间

rds for mysql_rds for mysql_rds for mysql

回到控制台,使用目标集群的“日志和事件”中最后一步的时间作为添加只读实例的结束时间。

rds for mysql_rds for mysql_rds for mysql

对于RDS for MySQL,在控制台上选择目标集群,单击“创建只读副本”按钮,如下图所示:

rds for mysql_rds for mysql_rds for mysql

使用事件时间作为添加只读实例的开始时间

回到控制台,使用目标集群的“日志和事件”中最后一步的时间作为添加只读实例的结束时间。

rds for mysql_rds for mysql_rds for mysql

7. 测试数据7.1 集群故障转移时间测试数据

配置模式

无工作负载集群故障转移时间

工作负载群集故障转移时间

MySQL db.r5. 一次写入和一次读取 100GB 数据量

00:00:36

00:00:32

MySQL db.r5. 一次写入和一次读取 500GB 数据量

00:00:38

00:00:35

MySQL db.r5. 一次写入和一次读取 1TB 数据

00:00:34

00:00:31

RDS for MySQL db.m5. 一次写入和一次读取 100GB 数据量

00:01:20

00:01:29

RDS for MySQL db.m5. 一次写入和一次读取 500GB 数据量

00:01:22

00:01:24

RDS for MySQL db.m5。一次写入和一次读取 1TB 数据

00:01:21

00:01:27

表中记录的时间为3次测试的平均时间

rds for mysql_rds for mysql_rds for mysql

7.2 只读实例扩容时间测试数据

配置模式

无工作负载实例扩展时间

工作负载实例扩展时间

MySQL 数据库.r5。

一次写入和一次读取 100GB 数据量

00:06:12

00:06:22

MySQL 数据库.r5。

可同时写入和读取500GB数据

00:06:10

00:06:29

MySQL 数据库.r5。

一次写入和一次读取 1TB 数据量

00:06:13

00:06:23

RDS 适用于 MySQL db.m5。

一次写入和一次读取 100GB 数据量

00:15:20

00:15:33

RDS 适用于 MySQL db.m5。

可同时写入和读取500GB数据

00:15:55

00:16:07

RDS 适用于 MySQL db.m5。

一次写入和一次读取 1TB 数据量

00:16:21

00:16:22

表中记录的时间为3次测试的平均时间

rds for mysql_rds for mysql_rds for mysql

8、测试结论MySQL集群故障切换时间整体分布在31秒~38秒之间,与数据库数据量、工作负载相关性不大。RDS for MySQL集群故障切换时间整体分布在80秒~89秒之间,与数据库数据量相关性不大,与工作负载的有无相关性较大,有工作负载时会增加2秒~9秒左右。MySQL只读实例扩容时间整体分布在6分10秒~6分29秒之间,与数据库数据量、工作负载的有无相关性不大。主要原因[1]是MySQL为存储计算分离架构,数据均匀分布在3个AZ,共6个副本,实例间共享存储,扩容只读实例时不需要数据同步时间。 RDS for MySQL 只读实例整体扩容时间在 15 分 20 秒~16 分 22 秒之间,与数据库数据量高度相关,数据库数据量越大,所需时间越长,从 100GB 扩容到 1TB 时,时间会增加 1 分 1 秒。主要原因[2]是 RDS for MySQL 从主节点数据库恢复数据到只读实例,数据库数据量越大,恢复时间越长。

[1] 参见文字记录:

[2] 了解 RDS for MySQL 只读副本的工作原理:

9. 结论总结

二维码
扫一扫在手机端查看

本文链接:https://by928.com/4172.html     转载请注明出处和本文链接!请遵守 《网站协议》
我们凭借多年的网站建设经验,坚持以“帮助中小企业实现网络营销化”为宗旨,累计为4000多家客户提供品质建站服务,得到了客户的一致好评。如果您有网站建设、网站改版、域名注册、主机空间、手机网站建设、网站备案等方面的需求,请立即点击咨询我们或拨打咨询热线: 13761152229,我们会详细为你一一解答你心中的疑难。

项目经理在线

我们已经准备好了,你呢?

2020我们与您携手共赢,为您的企业形象保驾护航!

在线客服
联系方式

热线电话

13761152229

上班时间

周一到周五

公司电话

二维码
微信
线