背景
随着分布式数据库的日渐成熟,在金融行业逐渐推行分布式数据库的使用,如何验证分布式数据库的高可用性是应用方所关注的。
本文针对主流的TDSQL分布式数据库,在测试环境模拟真实业务持续压测,通过人为制造数据节点故障,观测业务具体表现和赤免监控指标得出RTO数值。
相关概念
RTO:恢复时间目标,主要指的是所能容忍的业务停止服务的最长时间,也就是从灾难发生到业务系统恢复服务功能所需要的最短时间周期。
数据库恢复时间,指数据库停止对外服务到重新提供服务的时间。
Xmeter:一种性能测试发压工具,可以高效的模拟客户端发起高并发请求,同时统计测试结果。
分片:是把数据库横向扩展到多个物理节点上的一种有效的方式,其主要目的是为突破单节点数据库服务器的 I/O 能力限制,解决数据库扩展性问题。
测试环境
本次采用性能测试集群(测试环境模拟本部和同城),环境均使用1主3从跨IDC强同步,不开启退化,均采用物理服务器。两个分片的数据库节点如下表所示:
为简化测试,本次仅针对无分片的业务交易进行测试,选定分片1进行故障模拟测试。
测试及验证方法
在测试环境下模拟真实业务场景使用Xmeter平台持续压测,进行主动切换和人工模拟故障引起被动切换两种方式来查看和测试RTO指标。
其中RTO分为两个层面进行关注,一是数据库中断时间,二是业务恢复时间。其中Xmeter的主要设置如下:
故障模拟方法:kill掉相关实例在DB节点的mysqld进程,将oc _agent检查db节点存活的配置文件重命名,防止自动拉起进程。
每个测试场景结束后恢复该文件,检查数据库恢复正常后进行下一个场景的测试。
业务中断时间(RTO)检测方法:从xmeter监控何时业务恢复。
数据库中断时间检测方法:通过shell脚本,每秒向数据库指定表插入一条数据,查看插入失败报错的时间段。
测试结果
结论及高可用表现
通过测试,验证了数据库在主动切换和模扣故障场景下的高可用表现符合预期,具体表现如下:
1.主动切换到异步备机,切换后异步备机提升为主,原主节点变为异步,原强同步节点仍为强同步。
2.主动切换到强同步备机,切换后,指定强同步备机提升为主,新主同IDC备机由强同步变为异步,原主和原异步备机变为强同步。
3.主节点down,如果同IDC异步备机没延迟,主节点切换到DC异步备机,备IDC强同步不变。
如果同IDC异步备机有延迟,主节点切换到备IDC, 原异步备机变为强同步,原强同步备机变为异步。
4.强同步备节点1个down, 对其他数据节点无影响。
5.主和强同步备机down,无法确定剩余的强同步备机数据是否正确,数据库停止服务。
6.主IDCDB 节点全down,主节点切换备IDC,新主节点同IDC的备机仍为强同步。
7.备IDC数据节点全down,主节点不发生切换,原异步备机提升为强同步。
作者:周永恒