51Testing软件测试论坛

标题: 一种分布式数据库的RTO测试方法 [打印本页]

作者: lsekfe    时间: 2021-8-4 09:53
标题: 一种分布式数据库的RTO测试方法
背景
  随着分布式数据库的日渐成熟,在金融行业逐渐推行分布式数据库的使用,如何验证分布式数据库的高可用性是应用方所关注的。
  本文针对主流的TDSQL分布式数据库,在测试环境模拟真实业务持续压测,通过人为制造数据节点故障,观测业务具体表现和赤免监控指标得出RTO数值。

  相关概念
  RTO:恢复时间目标,主要指的是所能容忍的业务停止服务的最长时间,也就是从灾难发生到业务系统恢复服务功能所需要的最短时间周期。
  数据库恢复时间,指数据库停止对外服务到重新提供服务的时间。
  Xmeter:一种性能测试发压工具,可以高效的模拟客户端发起高并发请求,同时统计测试结果。
  分片:是把数据库横向扩展到多个物理节点上的一种有效的方式,其主要目的是为突破单节点数据库服务器的 I/O 能力限制,解决数据库扩展性问题。

  测试环境
  本次采用性能测试集群(测试环境模拟本部和同城),环境均使用1主3从跨IDC强同步,不开启退化,均采用物理服务器。两个分片的数据库节点如下表所示:
[attach]133596[/attach]
 为简化测试,本次仅针对无分片的业务交易进行测试,选定分片1进行故障模拟测试。

  测试及验证方法
  在测试环境下模拟真实业务场景使用Xmeter平台持续压测,进行主动切换和人工模拟故障引起被动切换两种方式来查看和测试RTO指标。
  其中RTO分为两个层面进行关注,一是数据库中断时间,二是业务恢复时间。其中Xmeter的主要设置如下:
[attach]133597[/attach]
故障模拟方法:kill掉相关实例在DB节点的mysqld进程,将oc _agent检查db节点存活的配置文件重命名,防止自动拉起进程。
  每个测试场景结束后恢复该文件,检查数据库恢复正常后进行下一个场景的测试。
  业务中断时间(RTO)检测方法:从xmeter监控何时业务恢复。
  数据库中断时间检测方法:通过[url=]shell[/url]脚本,每秒向数据库指定表插入一条数据,查看插入失败报错的时间段。

  测试结果
[attach]133598[/attach]
结论及高可用表现
通过测试,验证了数据库在主动切换和模扣故障场景下的高可用表现符合预期,具体表现如下:
  1.主动切换到异步备机,切换后异步备机提升为主,原主节点变为异步,原强同步节点仍为强同步。
  2.主动切换到强同步备机,切换后,指定强同步备机提升为主,新主同IDC备机由强同步变为异步,原主和原异步备机变为强同步。
  3.主节点down,如果同IDC异步备机没延迟,主节点切换到DC异步备机,备IDC强同步不变。
  如果同IDC异步备机有延迟,主节点切换到备IDC, 原异步备机变为强同步,原强同步备机变为异步。
  4.强同步备节点1个down, 对其他数据节点无影响。
  5.主和强同步备机down,无法确定剩余的强同步备机数据是否正确,数据库停止服务。
  6.主IDCDB 节点全down,主节点切换备IDC,新主节点同IDC的备机仍为强同步。
  7.备IDC数据节点全down,主节点不发生切换,原异步备机提升为强同步。




作者: Miss_love    时间: 2021-8-5 09:19
支持分享




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2