最近听同事说TiDB,溜得飞起。我始终坚信,这个世界上没有什么银弹,任何事物有好的一面,肯定存在不好的一面。TiDB的优点就不说了,随便Google一把就有很多。今天我们就来说说TiDB不够理想的一面(我们得到的测试结果)。
在开始之前,这里介绍一下参与本次测试以及出谋划策的人员有:本人[流浪小行]、吴秀[测试主力人员]、孤岛旭日、迹_Jason[佳兴]。排名不分先后。本次测试工具也为官方推荐的工具。配置也为官方推荐配置[除硬盘没有使用SSD]
先来看看TiKV的稳定性测试。这里先给出测试结论:3台TiKV,断掉一台,可以正常使用,断掉2台,不能正常使用。重新恢复服务有严格的启动顺序要求。5台TiKV,断掉一台可以正常使用,断掉2台数据库不能正常使用。重新恢复服务没有严格的启动顺序要求。
三台TiKV,IP最后一位分别为[.100]、[.101]、.[102]。先把[.100]停止,可以正常运行,3040min之内,server report failures在3040min左右会有值,截图如下:
关于server report failures官方文档解释如下:
紧接着再把[.101]机器停止,数据已经不能正常访问,错误如下图:
server report failures走势图截图如下图:
把先断开的那台[.100]重启,数据库仍然不能用,且100在半小时内的IO持续为50%;
把后断开的那台(101)启动,数据库可以正常访问,半小时内三台TiKV的IO都不低,100那台的耗用的网络持续半小时都为500Mbps
接下来。先停止[.101],后停[.100]。停止两台同样不能访问,停止一台的时候,与上面结果相同,同样报出了server report failures。把后断开[.100]服务启动,[.100]服务器的IO极速上升,数据库能正常访问。最后再启动[.101],一切正常。那如果TiKV增加到5台会是一个什么样的结果呢?下面就来看看测试的结果。
5个TiKV节点,1min内停掉2个节点,能进入到数据库中,但是并不能查询数据。截图如下:
半个小时内先后停掉2个节点数据库还是不能查询数据。
停掉第一个节点region变动如下图所示:
停掉第二个节点region变动如下图所示:
重启任意一个节点,数据库恢复正常。到这里TiKV的说明告一个段落。下面我们来看看PD Server稳定性如何。一样还是先上结论。
PD Server为两个节点时,任意一个节点有问题,数据库都不能正常使用。PD Server有三个节点时,PD Server的leader异常,查询会卡顿几秒,然后重新选举新的leader.PD Server有三个节点时,PD server的普通的member异常,测试数据库使用无明显异常;
PD Server为三个节点,杀掉PD Server的leader的进程,会卡顿几秒,报PD server timeoutPD server timeout错误,并且会立即推荐新的为member为leader。数据库操作报错截图如下如:
PD Server日志截图如:
PD Server为三个节点,杀掉任意一台PD Server的进程,数据库有半小时后仍然不能使用,报 PD server timeout错误,且获取PD Server的member列表会报500错误。
数据库操作报错截图如下:
在TiDB稳定性方面,发现了这样一些问题。也许是我们的测试方法出现了问题,有疑问大家一起探讨。