Amazon Aurora MySQL 和 Amazon RDS for MySQL 集群故障转移和只读实例扩容时间测试

Amazon Aurora MySQL 和 Amazon RDS for MySQL 集群故障转移和只读实例扩容时间测试_第1张图片

01

测试背景

Amazon Aurora MySQL 是与 MySQL 兼容的关系数据库,专为云而打造,性能和可用性与商用数据库相当,成本只有其 1/10。

Amazon RDS for MySQL 让您能够在云中更轻松设置、操作和扩展 MySQL 部署。借助 Amazon RDS,您可以在几分钟内部署可扩展的 MySQL 服务器。

客户在使用亚马逊云科技托管 MySQL 数据库服务时,通常需要选择 Amazon Aurora MySQL 或 Amazon RDS for MySQL。本次测试是对比 Amazon Aurora MySQL 和 Amazon RDS for MySQL 在不同模式、不同机型、有无工作负载情况下的集群故障转移时间和只读实例扩容时间,为客户在亚马逊云科技上选择托管 MySQL 数据库服务提供参考。

02

测试环境

Amazon Aurora MySQL 和 Amazon RDS for MySQL 集群故障转移和只读实例扩容时间测试_第2张图片

03

测试前提

本次测试基于以下 3 个前提:

  • 压测实例、Amazon Aurora MySQL 和 Amazon RDS for MySQL 均在一个 VPC

  • Amazon Aurora MySQL 和 Amazon RDS for MySQL 均使用生产模板的默认配置

  • 开启 Amazon CloudTrail 分别统计集群故障转移和只读实例扩容的开始、结束时间

04

测试架构图

4.1 Amazon Aurora MySQL 测试架构图

Amazon Aurora MySQL 和 Amazon RDS for MySQL 集群故障转移和只读实例扩容时间测试_第3张图片

4.2 Amazon RDS for MySQL 测试架构图

Amazon Aurora MySQL 和 Amazon RDS for MySQL 集群故障转移和只读实例扩容时间测试_第4张图片

05

测试用例

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

Amazon Aurora MySQL 和 Amazon RDS for MySQL 集群故障转移和只读实例扩容时间测试_第5张图片

*工作负载场景:数据库存储 100GB 数据,主节点 80%CPU 工作负载

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

Amazon Aurora MySQL 和 Amazon RDS for MySQL 集群故障转移和只读实例扩容时间测试_第6张图片

*工作负载场景:数据库存储 100GB 数据,主节点 80%CPU 工作负载

06

测试方法

6.1 集群故障转移时间测试方法

1. 对于 Amazon Aurora MySQL,在控制台上,选择目标集群的写入实例并点击下图中的“故障转移”按钮:

Amazon Aurora MySQL 和 Amazon RDS for MySQL 集群故障转移和只读实例扩容时间测试_第7张图片

2. 点击“日志和事件”,在下方的近期事件里查看故障转移开始和结束时间,计算出故障转移花费的时间:

Amazon Aurora MySQL 和 Amazon RDS for MySQL 集群故障转移和只读实例扩容时间测试_第8张图片

3. 对于 Amazon RDS for MySQL,在控制台上,选择目标集群的主实例并点击下图中的“重启”按钮,在下一个页面勾选“是否进行重启和故障转移”,点击确认:

Amazon Aurora MySQL 和 Amazon RDS for MySQL 集群故障转移和只读实例扩容时间测试_第9张图片

Amazon Aurora MySQL 和 Amazon RDS for MySQL 集群故障转移和只读实例扩容时间测试_第10张图片

4. 点击“日志和事件”,在下方的近期事件里查看故障转移开始和结束时间,计算得出故障转移花费的时间:

Amazon Aurora MySQL 和 Amazon RDS for MySQL 集群故障转移和只读实例扩容时间测试_第11张图片

5. 在模拟工作负载的场景下重新统计时间,模拟工作负载的步骤如下:

  • 在压测实例上安装 sysbench(步骤参看 https://github.com/akopytov/sysbench)

  • 按照如下命令,向数据库写入 100GB 数据

sysbench /usr/share/sysbench/tests/include/oltp_legacy/oltp.lua --threads=64 --mysql-host=bench-test.cluster-cum78jhrtci1.ap-south-1.rds.amazonaws.com --mysql-user=admin --mysql-password=xxxx --mysql-port=3306 --mysql-db= bench _test --oltp-tables-count=100 --oltp-table-size=5000000 --db-driver=mysql prepare

左滑查看更多

  • 按照如下命令,对主节点进行压力测试

sysbench /usr/share/sysbench/tests/include/oltp_legacy/oltp.lua --mysql-host=bench-test.cluster-cum78jhrtci1.ap-south-1.rds.amazonaws.com --mysql-user=admin --mysql-password=xxxx --mysql-port=3306  --mysql-db= bench_test --max-requests=0 --oltp-simple-ranges=0 --oltp-distxinct-ranges=0 --oltp-sum-ranges=0 --oltp-order-ranges=0 --time=3600 --oltp-read-only=on --threads=120 run #可以通过调整 threads 来控制工作负载,不同数据库实例类型线程数不一样

左滑查看更多

6.2 只读实例扩容时间测试方法

1. 对于 Amazon Aurora MySQL,在控制台上,选择目标集群并点击下图中的“添加读取器”按钮:

Amazon Aurora MySQL 和 Amazon RDS for MySQL 集群故障转移和只读实例扩容时间测试_第12张图片

2.使用 CloudTrail 里 CreateDBInstance 事件的时间作为添加只读实例的开始时间:

Amazon Aurora MySQL 和 Amazon RDS for MySQL 集群故障转移和只读实例扩容时间测试_第13张图片

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

Amazon Aurora MySQL 和 Amazon RDS for MySQL 集群故障转移和只读实例扩容时间测试_第14张图片

4. 对于 Amazon RDS for MySQL,在控制台上,选择目标集群并点击下图中的“创建只读副本”按钮:

Amazon Aurora MySQL 和 Amazon RDS for MySQL 集群故障转移和只读实例扩容时间测试_第15张图片

5. 使用 CloudTrail 里 CreateDBInstanceReadReplica 事件的时间作为添加只读实例的开始时间:

Amazon Aurora MySQL 和 Amazon RDS for MySQL 集群故障转移和只读实例扩容时间测试_第16张图片

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

Amazon Aurora MySQL 和 Amazon RDS for MySQL 集群故障转移和只读实例扩容时间测试_第17张图片

7. 在模拟工作负载场景下重新统计时间,模拟工作负载步骤如下:

  • 在压测实例上安装 sysbench(步骤参看 https://github.com/akopytov/sysbench)

  • 按照如下命令,向数据库写入 100GB 数据

sysbench /usr/share/sysbench/tests/include/oltp_legacy/oltp.lua --threads=64 --mysql-host=bench-test.cluster-cum78jhrtci1.ap-south-1.rds.amazonaws.com --mysql-user=admin --mysql-password=xxxx --mysql-port=3306 --mysql-db= bench _test --oltp-tables-count=100 --oltp-table-size=5000000 --db-driver=mysql prepare

左滑查看更多

  • 按照如下命令,对主节点进行压力测试

sysbench /usr/share/sysbench/tests/include/oltp_legacy/oltp.lua --mysql-host=bench-test.cluster-cum78jhrtci1.ap-south-1.rds.amazonaws.com --mysql-user=admin --mysql-password=xxxx --mysql-port=3306  --mysql-db= bench_test --max-requests=0 --oltp-simple-ranges=0 --oltp-distxinct-ranges=0 --oltp-sum-ranges=0 --oltp-order-ranges=0 --time=3600 --oltp-read-only=on --threads=120 run #可以通过调整threads来控制工作负载,不同数据库实例类型线程数不一样

左滑查看更多

07

测试数据

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

Amazon Aurora MySQL 和 Amazon RDS for MySQL 集群故障转移和只读实例扩容时间测试_第18张图片

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

Amazon Aurora MySQL 和 Amazon RDS for MySQL 集群故障转移和只读实例扩容时间测试_第19张图片

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

Amazon Aurora MySQL 和 Amazon RDS for MySQL 集群故障转移和只读实例扩容时间测试_第20张图片

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

Amazon Aurora MySQL 和 Amazon RDS for MySQL 集群故障转移和只读实例扩容时间测试_第21张图片

08

测试结论

  1. Amazon Aurora MySQL 的集群故障转移时间与读写模式、实例机型、工作负载相关性较小,整体时间分布在 29 秒-41 秒之间。Amazon RDS for MySQL 的集群故障转移时间与读写模式、实例机型相关性较小,与工作负载相关性较大,在无工作负载时为 50 秒-65 秒,有工作负载时增加至 85 秒-93 秒,有工作负载的情况下故障转移时间变长。

  2. Amazon Aurora MySQL 的只读实例扩容时间与读写模式,实例机型、工作负载相关性较小,整体时间分布在 6 分 08 秒-6 分 57 秒之间。Amazon RDS for MySQL 的只读实例扩容时间与读写模式,实例机型相关性较小,与工作负载相关性较大,在无工作负载时为 6 分 12 秒-7 分 1 秒,有工作负载时增加至 15 分 19 秒-15 分 31 秒,有工作负载的情况下只读实例扩容时间变长。

  3. 对比 Amazon Aurora MySQL 和 Amazon RDS for MySQL

  • 在无工作负载的情况下,Amazon Aurora MySQL 集群故障转移时间为 Amazon RDS for MySQL 的 64%,Amazon Aurora MySQL 集群故障转移时间更短。

  • 在无工作负载的情况下,Amazon Aurora MySQL 的只读实例扩容时间为 Amazon RDS for MySQL 的 96%,两者相差较小。

  • 在有工作负载的情况下,Amazon Aurora MySQL 集群故障转移时间为 Amazon RDS for MySQL 的 33%,Amazon Aurora MySQL 集群故障转移时间更短。

  • 在有工作负载的情况下,Amazon Aurora MySQL 的只读实例扩容时间为 Amazon RDS for MySQL 的 42% ,Amazon Aurora MySQL 只读实例扩容时间更短。

综上所述,Amazon Aurora MySQL 无论是在集群故障转移时间还是只读实例扩容时间都优于 Amazon RDS for MySQL。

本篇作者

Amazon Aurora MySQL 和 Amazon RDS for MySQL 集群故障转移和只读实例扩容时间测试_第22张图片

韩宇光

亚马逊云科技解决方案架构师,熟悉互联网业务的大数据业务场景,在加入亚马逊云科技之前,在猎豹移动任职大数据高级运维工程师,有 10 多年的运维经验,深入理解云架构设计,对云上的运维,Devops,大数据解决方案有丰富的实践经验。

Amazon Aurora MySQL 和 Amazon RDS for MySQL 集群故障转移和只读实例扩容时间测试_第23张图片

郭立

于 2019 年加入亚马逊云科技,担任资深解决方案架构师和解决方案架构师经理,负责带领架构师团队支持战略客户和企业客户,同时为亚马逊云科技机器学习、数据分析与安全合规技术专家。

Amazon Aurora MySQL 和 Amazon RDS for MySQL 集群故障转移和只读实例扩容时间测试_第24张图片

听说,点完下面4个按钮

就不会碰到bug了!

Amazon Aurora MySQL 和 Amazon RDS for MySQL 集群故障转移和只读实例扩容时间测试_第25张图片

你可能感兴趣的:(mysql,数据库)